goreleaser #5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Release | |
on: | |
push: | |
tags: | |
- 'v*.*.*' # Match version tags | |
workflow_dispatch: # Allows manual triggering | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.21.6' # Specify the Go version | |
- name: Install dependencies | |
run: go mod tidy | |
- name: Build project | |
run: | | |
if [[ ${{ matrix.os }} == 'ubuntu-latest' ]]; then | |
GOOS=linux GOARCH=amd64 go build -o iffmaster-linux ./cmd/iffmaster | |
elif [[ ${{ matrix.os }} == 'windows-latest' ]]; then | |
GOOS=windows GOARCH=amd64 go build -o iffmaster-windows.exe ./cmd/iffmaster | |
elif [[ ${{ matrix.os }} == 'macos-latest' ]]; then | |
GOOS=darwin GOARCH=amd64 go build -o iffmaster-macos ./cmd/iffmaster | |
fi | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: iffmaster-${{ matrix.os }} | |
path: | | |
iffmaster-linux | |
iffmaster-windows.exe | |
iffmaster-macos | |
release: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: iffmaster-${{ matrix.os }} | |
path: . | |
- name: Create GitHub 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 }} | |
draft: false | |
prerelease: false | |
- name: Upload Release Asset (Linux) | |
if: always() | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: iffmaster-linux | |
asset_name: iffmaster-linux | |
asset_content_type: application/octet-stream | |
- name: Upload Release Asset (Windows) | |
if: always() | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: iffmaster-windows.exe | |
asset_name: iffmaster-windows.exe | |
asset_content_type: application/octet-stream | |
- name: Upload Release Asset (macOS) | |
if: always() | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: iffmaster-macos | |
asset_name: iffmaster-macos | |
asset_content_type: application/octet-stream |