Skip to content

add screenshot

add screenshot #16

Workflow file for this run

name: Build and Release Binaries
on:
push:
branches:
- main # Trigger the workflow on push to the main branch
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
include:
- os: ubuntu-latest
GOOS: linux
GOARCH: amd64
- os: windows-latest
GOOS: windows
GOARCH: amd64
- os: macos-latest
GOOS: darwin
GOARCH: amd64
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: '1.22.3'
- name: Build binary (Linux and macOS)
if: runner.os != 'Windows'
run: |
mkdir -p dist
GOOS=${{ matrix.GOOS }} GOARCH=${{ matrix.GOARCH }} go build -o dist/golox-${{ matrix.GOOS }}-${{ matrix.GOARCH }}
- name: Build binary (Windows)
if: runner.os == 'Windows'
run: |
mkdir dist
$env:GOOS="${{ matrix.GOOS }}"
$env:GOARCH="${{ matrix.GOARCH }}"
go build -o dist/golox-${{ matrix.GOOS }}-${{ matrix.GOARCH }}
- name: Upload binary
uses: actions/upload-artifact@v2
with:
name: golox-${{ matrix.GOOS }}-${{ matrix.GOARCH }}
path: dist/golox-${{ matrix.GOOS }}-${{ matrix.GOARCH }}
release:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Git
run: |
git config --global user.name 'github-actions'
git config --global user.email '[email protected]'
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: '1.22.3'
- name: Download Linux binary artifact
uses: actions/download-artifact@v2
with:
name: golox-linux-amd64
path: dist
- name: Download Windows binary artifact
uses: actions/download-artifact@v2
with:
name: golox-windows-amd64
path: dist
- name: Download macOS binary artifact
uses: actions/download-artifact@v2
with:
name: golox-darwin-amd64
path: dist
- name: Calculate next version
id: vars
run: |
# Fetch tags from the remote
git fetch --tags
# Get the latest tag, fallback to v0.1 if no tags are found
latest_tag=$(git describe --tags `git rev-list --tags --max-count=1` 2>/dev/null || echo "v0.0.0")
echo "Latest tag: $latest_tag"
# Extract the version number and increment it
if [[ "$latest_tag" == "v0.0.0" ]]; then
next_version="v0.1"
else
version_major=$(echo $latest_tag | cut -d'.' -f1 | cut -d'v' -f2)
version_minor=$(echo $latest_tag | cut -d'.' -f2)
version_patch=$(echo $latest_tag | cut -d'.' -f3)
if [ -z "$version_patch" ]; then
version_patch=$version_minor
version_minor=$version_major
version_major=0
fi
version_patch=$((version_patch + 1))
next_version="v${version_major}.${version_minor}.${version_patch}"
fi
echo "Next version: $next_version"
echo "version=$next_version" >> $GITHUB_ENV
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.PAT }} # Use the PAT instead of the default GITHUB_TOKEN
with:
tag_name: ${{ env.version }}
release_name: Release ${{ env.version }}
draft: false
prerelease: false
- name: Upload Linux binary to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.PAT }} # Use the PAT instead of the default GITHUB_TOKEN
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/golox-linux-amd64
asset_name: golox-linux-amd64
asset_content_type: application/octet-stream
- name: Upload Windows binary to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.PAT }} # Use the PAT instead of the default GITHUB_TOKEN
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/golox-windows-amd64
asset_name: golox-windows-amd64
asset_content_type: application/octet-stream
- name: Upload macOS binary to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.PAT }} # Use the PAT instead of the default GITHUB_TOKEN
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/golox-darwin-amd64
asset_name: golox-darwin-amd64
asset_content_type: application/octet-stream