name: CI/CD on: push jobs: setup: name: setup runs-on: ubuntu-latest steps: - name: Dump GitHub context env: GITHUB_CONTEXT: ${{ toJson(github) }} run: echo "$GITHUB_CONTEXT" - name: Checkout uses: actions/checkout@v3 - name: Setup uses: actions/setup-node@v3 with: node-version: 18 - uses: actions/cache@v1 id: yarn-cache with: path: node_modules key: ${{ runner.os }}-node_modules-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-node_modules- - name: Install if: steps.yarn-cache.outputs.cache-hit != 'true' run: yarn install test: name: Test runs-on: ubuntu-latest needs: setup services: mongo: image: mongo:3.4.23 ports: - 27017:27017 steps: - name: Checkout uses: actions/checkout@v3 - name: Setup uses: actions/setup-node@v3 with: node-version: 18 - uses: actions/cache@v1 id: yarn-cache with: path: node_modules key: ${{ runner.os }}-node_modules-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-node_modules- - name: Install if: steps.yarn-cache.outputs.cache-hit != 'true' run: yarn install - name: Lint run: yarn lint - name: Build run: yarn build - name: test run: yarn test - name: Release env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} run: yarn release notify: name: Notify runs-on: ubuntu-latest if: failure() needs: - test - setup steps: - uses: technote-space/workflow-conclusion-action@v1 - uses: 8398a7/action-slack@v3 with: status: ${{ env.WORKFLOW_CONCLUSION }} fields: repo,message,commit,author,action,eventName,ref,workflow # selectable (default: repo,message) env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} if: failure()