Skip to content

Merge pull request #6 from 0xYeah/main #7

Merge pull request #6 from 0xYeah/main

Merge pull request #6 from 0xYeah/main #7

Workflow file for this run

# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go
name: Release build
on:
push:
tags:
- 'v*'
jobs:
Testing:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
arch: [amd64, arm64]
exclude:
- os: windows-latest
arch: arm64
runs-on: ${{ matrix.os }}
steps:
- name: CheckOut
uses: actions/checkout@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '>=1.22.0'
- name: Run tests with race detector
shell: bash
run: |
go test -race -timeout 5m ./...
Build:
runs-on: ${{ matrix.os }}
needs: Testing
strategy:
matrix:
include:
- os: ubuntu-latest, GOOS: linux, GOARCH: amd64

Check failure on line 42 in .github/workflows/release.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/release.yml

Invalid workflow file

You have an error in your yaml syntax on line 42
- os: ubuntu-latest, GOOS: linux, GOARCH: arm64
- os: windows-latest, GOOS: windows, GOARCH: amd64
- os: macos-latest, GOOS: darwin, GOARCH: amd64
- os: macos-latest, GOOS: darwin, GOARCH: arm64
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '>=1.22.0'
- name: Get latest tag
run: |
echo "LATEST_TAG=$(git tag | grep -v '^latest$' | sort -V | tail -n1)" >> $GITHUB_ENV
- name: Build binary
shell: bash
run: |
go build -ldflags="-X main.Version=${{ env.LATEST_TAG }}" -o ctl_device_${{ matrix.GOOS }}_${{ matrix.GOARCH }} ./cmd/ctl_device
- name: Upload binary to artifacts
uses: actions/upload-artifact@v4
with:
name: ctl_device_${{ matrix.GOOS }}_${{ matrix.GOARCH }}
path: ctl_device_${{ matrix.GOOS }}_${{ matrix.GOARCH }}
Release:
runs-on: ubuntu-latest
needs: [Testing, Build]
outputs:
UPLOAD_URL: ${{ steps.stepCreateRelease.outputs.upload_url }}
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: ./artifacts
- name: Get latest tag
run: |
echo "LATEST_TAG=$(git tag | grep -v '^latest$' | sort -V | tail -n1)" >> $GITHUB_ENV
- name: Bump version and push tag
id: tag-version
uses: mathieudutour/github-tag-action@v6.2
with:
tag_prefix: ""
custom_tag: ${{ env.LATEST_TAG }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Generate SHA256 checksums
run: |
cd ./artifacts
for f in ctl_device_*; do
sha256sum "$f" > "${f}.sha256"
done
cd ..
- name: Step GitHub release
id: stepCreateRelease
uses: ncipollo/release-action@v1
with:
skipIfReleaseExists: 'true'
tag: ${{ env.LATEST_TAG }}
name: ${{ env.LATEST_TAG }}
artifacts: ./artifacts/*
RemoveOldRelease:
runs-on: ubuntu-latest
needs: Release
steps:
- name: CheckOut
uses: actions/checkout@v6
- name: Set APP_VERSION env
run: |
APP_VERSION=$(echo ${GITHUB_REF} | rev | cut -d'/' -f 1 | rev ) \
function get_pre_del_tag {
local v_str=$1
baseStr=$(echo $v_str | cut -d'.' -f1)
base=${baseStr//v/}
major=$(echo $v_str | cut -d'.' -f2)
minor=$(echo $v_str | cut -d'.' -f3)
if ((minor>0)); then
minor=$((minor-1))
else
minor=999
if ((major>0)); then
major=$((major-1))
else
major=999
if ((base>0)); then
base=$((base-1))
else
echo "Error: Version cannot be decremented."
exit 1
fi
fi
fi
pre_v_no="v${base}.${major}.${minor}"
echo $pre_v_no
}
APP_OLD_VERSION=$(get_pre_del_tag $(get_pre_del_tag $APP_VERSION))
echo "Old version to remove: ${APP_OLD_VERSION}"
echo APP_OLD_VERSION=${APP_OLD_VERSION} >> ${GITHUB_ENV}
- name: Remove Old Release
run: |
gh release delete ${{ env.APP_OLD_VERSION }} -y
git push origin --delete ${{ env.APP_OLD_VERSION }}
env:
GH_TOKEN: ${{ github.token }}