Skip to content

Merge pull request #11 from ErikKalkoken/next-version #78

Merge pull request #11 from ErikKalkoken/next-version

Merge pull request #11 from ErikKalkoken/next-version #78

Workflow file for this run

# Main workflow for testing and releasing
name: CI/CD
env:
GOVERSION: "1.23"
NAME: "janice"
FULLNAME: "Janice"
FULLNAME2: "Janice" # for AppImage file, e.g. with spaces replaced by underscores
VERSION: "0.0.0"
on: push
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GOVERSION }}
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install gcc libgl1-mesa-dev xorg-dev
- name: Build
run: go build -v ./...
- name: Test
run: go test -v ./...
package_linux:
if: startsWith(github.ref, 'refs/tags/')
needs: test
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GOVERSION }}
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install gcc libgl1-mesa-dev xorg-dev libfuse2
- name: Install Fyne tool
run: go install fyne.io/fyne/v2/cmd/fyne@latest
- name: Package Fyne app
run: fyne package -os linux --release
- name: Set version
run: |
VERSION=${{ github.ref_name }}
echo "VERSION=${VERSION:1}" >> $GITHUB_ENV
- name: Build AppImage
run: ./tools/build_appimage.sh
- uses: actions/upload-artifact@v4
with:
name: ${{ env.NAME }}-linux
path: ${{ env.FULLNAME2 }}-${{ env.VERSION }}-x86_64.AppImage
if-no-files-found: error
overwrite: true
package_windows:
if: startsWith(github.ref, 'refs/tags/')
needs: test
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
path-type: inherit
update: true
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GOVERSION }}
- name: Install Dependencies
run: >
pacman -Syu &&
pacman --noconfirm -S git zip mingw-w64-x86_64-toolchain
- name: Install Fyne tool
run: go install fyne.io/fyne/v2/cmd/fyne@latest
- name: Package
run: fyne package -os windows --release
- name: Set version
run: |
VERSION=${{ github.ref_name }}
echo "VERSION=${VERSION:1}" >> $GITHUB_ENV
- name: ZIP package
run: zip ${{ env.NAME }}-${{ env.VERSION }}-windows-x64.zip "${{ env.FULLNAME }}.exe"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.NAME }}-windows
path: ${{ env.NAME }}-${{ env.VERSION }}-windows-x64.zip
if-no-files-found: error
overwrite: true
package_darwin_arm:
if: startsWith(github.ref, 'refs/tags/')
runs-on: macos-14
needs: test
steps:
- uses: actions/checkout@v4
- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GOVERSION }}
- name: Install Fyne tool
run: go install fyne.io/fyne/v2/cmd/fyne@latest
- name: Package app bundles
run: fyne package -os darwin --release
- name: Set version
run: |
VERSION=${{ github.ref_name }}
echo "VERSION=${VERSION:1}" >> $GITHUB_ENV
- name: ZIP app bundle
run: zip --symlinks -r ${{ env.NAME }}-${{ env.VERSION }}-darwin-arm64.zip "${{ env.FULLNAME }}.app/"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.NAME }}-macos-arm
path: ${{ env.NAME }}-${{ env.VERSION }}-darwin-arm64.zip
if-no-files-found: error
overwrite: true
package_darwin_intel:
if: startsWith(github.ref, 'refs/tags/')
runs-on: macos-13
needs: test
steps:
- uses: actions/checkout@v4
- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GOVERSION }}
- name: Install Fyne tool
run: go install fyne.io/fyne/v2/cmd/fyne@latest
- name: Package app bundles
run: fyne package -os darwin --release
- name: Set version
run: |
VERSION=${{ github.ref_name }}
echo "VERSION=${VERSION:1}" >> $GITHUB_ENV
- name: ZIP app bundle
run: zip --symlinks -r ${{ env.NAME }}-${{ env.VERSION }}-darwin-intel64.zip "${{ env.FULLNAME }}.app/"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.NAME }}-macos-intel
path: ${{ env.NAME }}-${{ env.VERSION }}-darwin-intel64.zip
if-no-files-found: error
overwrite: true
release:
if: startsWith(github.ref, 'refs/tags/')
needs: [package_linux, package_darwin_arm, package_darwin_intel, package_windows]
runs-on: ubuntu-latest
permissions: write-all
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
merge-multiple: true
- name: Make version string
run: |
VERSION=${{ github.ref_name }}
echo "VERSION=${VERSION:1}" >> $GITHUB_ENV
- name: Create release
uses: softprops/action-gh-release@v2
with:
fail_on_unmatched_files: true
files: |
${{ env.NAME }}-${{ env.VERSION }}-windows-x64.zip
${{ env.FULLNAME2 }}-${{ env.VERSION }}-x86_64.AppImage
${{ env.NAME }}-${{ env.VERSION }}-darwin-arm64.zip
${{ env.NAME }}-${{ env.VERSION }}-darwin-intel64.zip