Browse Source

add github release workflow

pull/70/head
Linus789 3 years ago
parent
commit
1dfd9187fb
  1. 98
      .github/workflows/release.yml

98
.github/workflows/release.yml

@ -0,0 +1,98 @@
name: Build binaries
on:
release:
types: [published]
env:
PRODUCT: fdroidcl
CGO_ENABLED: 0
GO111MODULE: on
jobs:
release:
strategy:
fail-fast: false
matrix:
os: [ linux, darwin, windows ]
arch: [ amd64, 386 ]
include:
- os: linux
arch: arm
arm: 5
- os: linux
arch: arm
arm: 6
- os: linux
arch: arm
arm: 7
- os: linux
arch: arm64
- os: darwin
arch: arm64
- os: windows
arch: arm
- os: windows
arch: arm64
exclude:
- os: darwin
arch: 386
name: Build ${{ matrix.os }} ${{ matrix.arch }}
runs-on: ubuntu-latest
env:
GOOS: ${{ matrix.os }}
GOARCH: ${{ matrix.arch }}
GOARM: ${{ matrix.arm }}
steps:
- name: Check out codebase
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: '^1.18.0'
- name: Build
id: builder
run: |
ARGS="${GOOS}_${GOARCH}"
if [[ -n "${GOARM}" ]]; then
ARGS="${ARGS}v${GOARM}"
fi
if [[ "${GOOS}" = "linux" ]] && [[ -n "${GOARM}" ]]; then
ARGS="${ARGS}_gnueabihf"
sudo apt-get install gcc-arm-linux-gnueabihf
export CC=arm-linux-gnueabihf-gcc
fi
if [[ "${GOOS}" = "linux" ]] && [[ "${GOARCH}" = "386" ]]; then
sudo apt-get install gcc-multilib
fi
ARGS_EXT="${ARGS}"
if [[ "${GOOS}" = "windows" ]]; then
ARGS_EXT="${ARGS}.exe"
fi
if [[ "${GOOS}" = "windows" ]] && [[ "${GOARCH}" = "arm64" ]]; then
go build -trimpath -mod=readonly -modcacherw -o target/release/${{ env.PRODUCT }}_${{ github.event.release.tag_name }}_${ARGS_EXT}
else
go build -trimpath -buildmode=pie -mod=readonly -modcacherw -o target/release/${{ env.PRODUCT }}_${{ github.event.release.tag_name }}_${ARGS_EXT}
fi
echo "basename=${{ env.PRODUCT }}_${{ github.event.release.tag_name }}_${ARGS}" >> $GITHUB_OUTPUT
echo "filename=${{ env.PRODUCT }}_${{ github.event.release.tag_name }}_${ARGS_EXT}" >> $GITHUB_OUTPUT
- name: Archive
run: |
if [[ "${GOOS}" = "windows" ]]; then
7z a -tzip -mm=Deflate ./target/release/${{ steps.builder.outputs.basename }}.zip ./target/release/${{ steps.builder.outputs.filename }}
else
gzip -c ./target/release/${{ steps.builder.outputs.filename }} > ./target/release/${{ steps.builder.outputs.basename }}.gz
fi
- name: Publish
uses: softprops/action-gh-release@v1
with:
files: |
target/release/${{ steps.builder.outputs.filename }}
target/release/${{ steps.builder.outputs.basename }}.gz
target/release/${{ steps.builder.outputs.basename }}.zip
Loading…
Cancel
Save