renzholy/mongood

View on GitHub
.github/workflows/release.yml

Summary

Maintainability
Test Coverage
name: Release

on:
  push:
    tags:
      - 'v*'

jobs:
  create_release:
    name: Create release
    runs-on: ubuntu-latest
    outputs:
      upload_url: ${{ steps.create_release.outputs.upload_url }}
    steps:
      - name: Create release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}

  build:
    name: Build release
    needs: create_release
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        include:
          - os: ubuntu-latest
            asset_name: Mongood-linux.zip
            asset_content_type: application/zip
          - os: macos-latest
            asset_name: Mongood-macos.zip
            asset_content_type: application/zip
          - os: windows-latest
            asset_name: Mongood-win64.exe
            asset_content_type: application/vnd.microsoft.portable-executable
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: lts/*

      - run: yarn

      - run: yarn build

      - run: yarn export

      - name: Setup Go
        uses: actions/setup-go@v3
        with:
          go-version: ^1.19
      - run: |
          cd go
          go install fyne.io/fyne/v2/cmd/fyne@latest

      - name: Build Linux
        if: matrix.os == 'ubuntu-latest'
        run: |
          cd go
          cp -r ../out ./
          go build -o mongood
          fyne package -os linux -icon ./assets/logo.png -release --executable mongood
          zip -r ${{ matrix.asset_name }} mongood

      - name: Build macOS
        if: matrix.os == 'macos-latest'
        run: |
          cd go
          cp -r ../out ./
          MACOSX_DEPLOYMENT_TARGET=11.0 go build -o mongood
          fyne package -os darwin -name Mongood -icon ./assets/logo.png -release --executable ./mongood
          cp ./assets/Info.plist ./Mongood.app/Contents/Info.plist
          cp ./assets/icon.icns ./Mongood.app/Contents/Resources/icon.icns
          zip -r ${{ matrix.asset_name }} Mongood.app

      - name: Build Windows
        if: matrix.os == 'windows-latest'
        run: |
          cd go
          cp -r ../out ./
          go build -o mongood
          fyne package -os windows -icon ./assets/logo.png -release --executable mongood -appID mongood.renzholy
          mv mongood.exe ${{ matrix.asset_name }}

      - name: Upload Release Asset
        id: upload-release-asset
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.create_release.outputs.upload_url }}
          asset_path: ./go/${{ matrix.asset_name }}
          asset_name: ${{ matrix.asset_name }}
          asset_content_type: ${{ matrix.asset_content_type }}