marcells/node-build-monitor

View on GitHub
.github/workflows/build.yml

Summary

Maintainability
Test Coverage
name: Build and Release

on:
  push:
    tags:
    - 'v*'
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
    
      - name: Use Node.js 14.x
        uses: actions/setup-node@v1
        with:
          node-version: 14.x

      - name: Install grunt-cli
        run: npm install -g grunt-cli

      - name: Install local dependencies
        run: npm install

      - name: Run CI build
        run: npm run-script ci
  
  release:
    if: startsWith(github.ref, 'refs/tags/')
    runs-on: ubuntu-latest
    needs: build

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
    
      - name: Use Node.js 14.x
        uses: actions/setup-node@v1
        with:
          node-version: 14.x

      - name: Install global dependencies
        run: |
          npm install -g grunt-cli
          npm install -g pkg

      - name: Install local dependencies
        run: npm install

      - name: Build Release Package
        run: npm run-script pkg
      
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: ${{ github.ref }}
          draft: true
          prerelease: false

      - name: Upload Release Asset (Linux)
        id: upload-release-asset-linux
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ./release/node-build-monitor-linux
          asset_name: node-build-monitor-linux
          asset_content_type: application/octet-stream
      
      - name: Upload Release Asset (Mac OS)
        id: upload-release-asset-macos
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ./release/node-build-monitor-macos
          asset_name: node-build-monitor-macos
          asset_content_type: application/octet-stream

      - name: Upload Release Asset (Windows)
        id: upload-release-asset-windows
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ./release/node-build-monitor-win.exe
          asset_name: node-build-monitor-win.exe
          asset_content_type: application/octet-stream