name: Test & Deploy on: workflow_dispatch: push: branches: - master tags: - '*' pull_request: branches: - master jobs: audit: runs-on: ubuntu-latest steps: - uses: actions/setup-node@v3 with: node-version: current - uses: actions/checkout@v3 - run: npm audit --omit=dev test: needs: [ audit ] runs-on: ubuntu-latest strategy: matrix: node-version: [ '14', '16', '18' ] steps: - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - uses: actions/checkout@v3 - run: npm ci - name: Test run: npm test - uses: actions/upload-artifact@v3 if: failure() with: name: cypress-screenshots path: cypress/screenshots retention-days: 7 - uses: actions/upload-artifact@v3 if: always() with: name: cypress-videos path: cypress/videos retention-days: 7 deploy: needs: [ test ] runs-on: ubuntu-latest if: github.event_name == 'push' steps: - uses: actions/setup-node@v3 with: node-version: current - uses: actions/checkout@v3 - run: npm ci - name: Deploy @latest version to npm if: startsWith(github.ref, 'refs/tags/') uses: JS-DevTools/npm-publish@v1 with: token: ${{ secrets.NPM_TOKEN }} - name: Update @next version if: startsWith(github.ref, 'refs/heads/') run: npm version prerelease --no-git-tag-version --preid "$GITHUB_RUN_NUMBER" - name: Deploy @next version to npm if: startsWith(github.ref, 'refs/heads/') uses: JS-DevTools/npm-publish@v1 with: tag: next token: ${{ secrets.NPM_TOKEN }} check-version: false