--- name: Build on: push jobs: cloc: name: CLOC runs-on: ubuntu-20.04 steps: - name: Checkout repo uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f - name: Set up cloc run: | sudo apt-get update sudo apt-get -y install cloc - name: Print lines of code run: cloc --include-lang TypeScript,JavaScript,HTML,Sass,CSS --vcs git build: name: Build jslib runs-on: ${{ matrix.os }} strategy: matrix: os: [windows-2019, macos-10.15, ubuntu-20.04] steps: - name: Set up Node uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea with: node-version: '16' - name: Install node-gyp run: | npm install -g node-gyp node-gyp install $(node -v) - name: Print environment run: | node --version npm --version - name: Checkout repo uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f - name: Install Node dependencies run: npm install - name: Run linter run: npm run lint - name: Build run: npm run build - name: Run tests if: runner.os != 'Linux' run: npm run test - name: Upload test coverage artifact if: runner.os != 'Linux' uses: actions/upload-artifact@ee69f02b3dfdecd58bb31b4d133da38ba6fe3700 with: name: test-coverage path: coverage/ - name: Run Node tests run: npm run test:node check-failures: name: Check for failures if: always() runs-on: ubuntu-20.04 needs: - cloc - build steps: - name: Check if any job failed if: ${{ (github.ref == 'refs/heads/master') || (github.ref == 'refs/heads/rc') }} env: CLOC_STATUS: ${{ needs.cloc.result }} BUILD_STATUS: ${{ needs.build.result }} run: | if [ "$CLOC_STATUS" = "failure" ]; then exit 1 elif [ "$BUILD_STATUS" = "failure" ]; then exit 1 fi - name: Login to Azure - Prod Subscription uses: Azure/login@77f1b2e3fb80c0e8645114159d17008b8a2e475a if: failure() with: creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} - name: Retrieve secrets id: retrieve-secrets uses: Azure/get-keyvault-secrets@80ccd3fafe5662407cc2e55f202ee34bfff8c403 if: failure() with: keyvault: "bitwarden-prod-kv" secrets: "devops-alerts-slack-webhook-url" - name: Notify Slack on failure uses: act10ns/slack@e4e71685b9b239384b0f676a63c32367f59c2522 # v1.2.2 if: failure() env: SLACK_WEBHOOK_URL: ${{ steps.retrieve-secrets.outputs.devops-alerts-slack-webhook-url }} with: status: ${{ job.status }}