Some checks failed
Go CI Pipeline / ci (push) Has been cancelled
Release Builds / build (darwin, macos-latest) (push) Successful in 45s
Release Builds / build (linux, ubuntu-latest) (push) Successful in 29s
Release Builds / build (windows, windows-latest) (push) Successful in 34s
Release Builds / create_release (push) Failing after 20s
111 lines
3.2 KiB
YAML
111 lines
3.2 KiB
YAML
name: Release Builds
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-22.04
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
goos: [linux, darwin, windows]
|
|
exclude:
|
|
- os: ubuntu-latest
|
|
goos: darwin
|
|
- os: ubuntu-latest
|
|
goos: windows
|
|
- os: macos-latest
|
|
goos: linux
|
|
- os: macos-latest
|
|
goos: windows
|
|
- os: windows-latest
|
|
goos: linux
|
|
- os: windows-latest
|
|
goos: darwin
|
|
|
|
steps:
|
|
- name: Check out repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.24'
|
|
|
|
- name: Get dependencies
|
|
run: go mod tidy
|
|
|
|
- name: Build for ${{ matrix.goos }}
|
|
run: |
|
|
BUILD_NAME="workctl-${{ matrix.goos }}"
|
|
if [ "${{ matrix.goos }}" = "windows" ]; then
|
|
BUILD_NAME="${BUILD_NAME}.exe"
|
|
fi
|
|
GOOS=${{ matrix.goos }} GOARCH=amd64 go build -o ${BUILD_NAME} .
|
|
ls -la
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: workctl-${{ matrix.goos }}
|
|
path: workctl-${{ matrix.goos }}${{ matrix.goos == 'windows' && '.exe' || '' }}
|
|
retention-days: 7
|
|
|
|
create_release:
|
|
needs: build
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- name: Create Release
|
|
id: create_release
|
|
uses: actions/create-release@v1
|
|
env:
|
|
# Dies ist der Token, der Forgejo erlaubt, das Release zu erstellen
|
|
# Du musst einen Gitea/Forgejo API-Token als Repository Secret (z.B. GITEA_TOKEN) hinterlegen.
|
|
# Der Token benötigt die Berechtigung "write:releases" oder "repo".
|
|
GITEA_TOKEN: ${{ secrets.GITEATOKEN }}
|
|
with:
|
|
url: https://git.patanix.de
|
|
tag_name: ${{ github.ref }}
|
|
release_name: Release ${{ github.ref }}
|
|
body: |
|
|
Dies ist ein automatisches Release von ${{ github.ref }}.
|
|
draft: false
|
|
prerelease: false
|
|
|
|
- name: Download all workflow artifacts
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
path: ./artifacts
|
|
|
|
- name: Upload Release Asset (Linux)
|
|
uses: actions/upload-release-asset@v1
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.GITEATOKEN }}
|
|
with:
|
|
url: ${{ steps.create_release.outputs.upload_url }}
|
|
asset_path: ./artifacts/workctl-linux/workctl-linux
|
|
asset_name: workctl-linux
|
|
asset_content_type: application/octet-stream
|
|
|
|
- name: Upload Release Asset (macOS)
|
|
uses: actions/upload-release-asset@v1
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.GITEATOKEN }}$
|
|
with:
|
|
url: ${{ steps.create_release.outputs.upload_url }}
|
|
asset_path: ./artifacts/workctl-darwin/workctl-darwin
|
|
asset_name: workctl-darwin
|
|
asset_content_type: application/octet-stream
|
|
|
|
- name: Upload Release Asset (Windows)
|
|
uses: actions/upload-release-asset@v1
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.GITEATOKEN }}$
|
|
with:
|
|
url: ${{ steps.create_release.outputs.upload_url }}
|
|
asset_path: ./artifacts/workctl-windows/workctl-windows.exe
|
|
asset_name: workctl-windows.exe
|
|
asset_content_type: application/octet-stream
|