name: Release on: create: tags: - v* push: branches: - master workflow_dispatch: jobs: build-and-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: persist-credentials: false - name: Use Node.js uses: actions/setup-node@v1 with: node-version: "16.x" - run: git config --global url."https://${{ secrets.PAT }}@github.com/".insteadOf ssh://git@github.com/ - run: npm install - run: npm test -- --coverage - run: bash <(curl -s https://codecov.io/bash) - run: npm run build:prod env: CI: true release: needs: [build-and-test] name: Release runs-on: ubuntu-18.04 steps: - name: Checkout uses: actions/checkout@v2 with: fetch-depth: 0 persist-credentials: false - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: "16.x" - name: Install dependencies run: npm ci - name: Release env: GITHUB_TOKEN: ${{ secrets.github_token }} run: npx semantic-release package: needs: [build-and-test, release] runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] steps: - name: Check out Git repository uses: actions/checkout@v1 - name: Install Node.js, NPM and Yarn uses: actions/setup-node@v1 with: node-version: "16.x" - name: Install Snapcraft uses: samuelmeuli/action-snapcraft@v1 # Only install Snapcraft on Ubuntu if: startsWith(matrix.os, 'ubuntu') with: # Log in to Snap Store snapcraft_token: ${{ secrets.snapcraft_token }} - name: Build/release Electron app uses: samuelmeuli/action-electron-builder@v1 with: # GitHub token, automatically provided to the action # (No need to define this secret in the repo settings) github_token: ${{ secrets.github_token }} # If the commit is tagged with a version (e.g. "v1.0.0"), # release the app after building release: ${{ startsWith(github.ref, 'refs/tags/v') }}