name: test and deploy on: [push, pull_request] jobs: build: strategy: fail-fast: false matrix: python-version: [3.8] poetry-version: [1.1.4] # node: [ '10', '12', '14' ] os: [ubuntu-20.04, windows-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 # get source # PYTHON - name: Install Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} # PYTHON dependency management - name: Install Poetry ${{ matrix.poetry-version }} uses: abatilo/actions-poetry@v2.1.0 with: poetry-version: ${{ matrix.poetry-version }} # PYTHON install dependencies - name: Install Python Dependencies run: poetry install # PYTHON for authentication when testing - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@master with: project_id: ${{ secrets.GCP_PROJECT_ID }} service_account_key: ${{ secrets.GCP_SA_KEY }} export_default_credentials: true # <=== # PYTHON run unit tests - name: Run Python Tests run: poetry run python -m unittest discover -s tests # JS setup for testing # - name: Install Node ${{ matrix.node }} # uses: actions/setup-node@v2 # with: # node-version: ${{ matrix.node }} # JS install from lock.json # - name: Install Node Packages # run: npm ci # JS tests # - name: Run JavaScript Tests # run: npm test deploy: runs-on: ubuntu-20.04 needs: build # for ignoring bad builds steps: - uses: actions/checkout@v2 # get source # PYTHON - name: Install Python 3.8 uses: actions/setup-python@v2 with: python-version: 3.8 # PYTHON for dependency export only, not installing - name: Install Poetry 1.1.4 uses: abatilo/actions-poetry@v2.1.0 with: poetry-version: 1.1.4 # JS setup - name: Install Node 14 uses: actions/setup-node@v2 with: node-version: 14 # JS for compiling scss - name: Install Sass run: npm install -g sass # JS install from lock.json - name: Install Node Packages run: npm ci # JS will be built again, for flagging errors - name: Compile front-end run: npm run build --if-present # DEPLOY for setting up cloud API - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@master with: project_id: ${{ secrets.GCP_PROJECT_ID }} service_account_key: ${{ secrets.GCP_SA_KEY }} export_default_credentials: true # DEPLOY for deploying app engine API and main functions - name: Deploy API & Main Functions run: python admin.py all # DEPLOY for deploying cron functions - name: Deploy Cron Functions run: python admin.py all_cron