elfrank/sample-nodejs-project

View on GitHub
.github/workflows/release.yaml

Summary

Maintainability
Test Coverage
name: Release

on:
  push:
    branches: [ main ]

jobs:
  verify:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [14.x]
        # See supported Node.js release schedule at https://nodejs.org/en/about/releases/

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - name: Install
      run: npm ci

    - name: Test
      run: npm run test

    - name: Lint
      run: npm run lint src/

  release:
    # Only release on push to main
    if: github.event_name == 'push' && github.ref == 'refs/heads/main'

    runs-on: ubuntu-latest
    # Waits for test jobs for each Node.js version to complete
    needs: [verify]

    strategy:
      matrix:
        node-version: [14.x]

    steps:
    - name: Checkout
      uses: actions/checkout@v2
      with:
        fetch-depth: 0
        persist-credentials: false

    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}

    - name: Install
      run: npm ci

    - name: Release
      # You can use --dry-run for testing your pipeline
      # run: npx semantic-release --dry-run
      run: npx semantic-release
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        GH_TOKEN: ${{ secrets.GH_TOKEN }}
        NPM_TOKEN: ${{ secrets.NPM_TOKEN }}