Merge pull request #411 from markusressel/feature/#404-debian-package #1077
This file contains hidden or 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: Go | |
on: | |
push: | |
branches: [ master ] | |
tags: | |
- '*.*.*' # Push events to matching v*, i.e. v1.0, v20.15.10 | |
pull_request: | |
branches: [ master ] | |
jobs: | |
generate: | |
name: Generate cross-platform builds | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install libsensors-dev (needed for gosensors testing) | |
run: sudo apt-get install -y libsensors-dev | |
- name: Checkout the repository | |
uses: actions/checkout@v4 | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: '^1.23' | |
- name: Run golangci-lint | |
uses: golangci/[email protected] | |
with: | |
# Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version | |
version: latest | |
# Optional: working directory, useful for monorepos | |
# working-directory: somedir | |
# Optional: golangci-lint command line arguments. | |
# args: --exclude-use-default | |
# --issues-exit-code=0 | |
# Optional: show only new issues if it's a pull request. The default value is `false`. | |
# only-new-issues: true | |
# Optional: if set to true then the all caching functionality will be complete disabled, | |
# takes precedence over all other caching options. | |
# skip-cache: true | |
# Optional: if set to true then the action don't cache or restore ~/go/pkg. | |
skip-cache: false | |
# Optional: if set to true then the action don't cache or restore ~/.cache/go-build. | |
# skip-build-cache: true | |
- name: Test | |
run: make test | |
- name: Generate build files (amd64) | |
run: | | |
GOOS="linux" | |
GOARCH="amd64" | |
GOFLAGS="-buildmode=exe" | |
NAME="fan2go-${GOOS}-${GOARCH}" | |
OUTPUT_BIN="dist/${NAME}" | |
make build GOOS="${GOOS}" OARCH="${GOARCH}" GOFLAGS="${GOFLAGS}" OUTPUT_BIN="${OUTPUT_BIN}" | |
./dist/fan2go-linux-amd64 version | |
# same for the version without nvml, to make sure it still compiles | |
make build-no-nvml GOOS="${GOOS}" OARCH="${GOARCH}" GOFLAGS="${GOFLAGS}" OUTPUT_BIN="${OUTPUT_BIN}-no-nvml" | |
./dist/fan2go-linux-amd64-no-nvml version | |
# due to the required system dependency on libsensors-dev, and the fact that github doesn't provide arm64 runners, | |
# arm64 builds are not possible atm :( | |
# - name: Generate build files (arm64) | |
# run: | | |
# gcc_cross_path="/home/runner" | |
# wget -P "${gcc_cross_path}" https://musl.cc/aarch64-linux-musl-cross.tgz | |
# tar -xvf "${gcc_cross_path}/aarch64-linux-musl-cross.tgz" -C "${gcc_cross_path}" | |
# make build CGO_ENABLED=1 CC="${gcc_cross_path}/aarch64-linux-musl-cross/bin/aarch64-linux-musl-gcc" GOOS="linux" GOARCH="arm64" GOFLAGS="-buildmode=exe" filename="$GOOS-$GOARCH" NAME="fan2go-$filename" OUTPUT_BIN="dist/${NAME}" | |
- name: Nvml Check | |
run: | | |
set -x | |
# make sure the no-nvml build *really* doesn't use nvml | |
# ("nvml" is printed by objdump at least once because of the filename, | |
# but if nvml is linked, it has hundreds of occurences) | |
test `objdump -T ./dist/fan2go-linux-amd64-no-nvml | grep -c nvml` -lt 3 | |
# .. and that the regular build *does* have symbols with "nvml" in it | |
test `objdump -T ./dist/fan2go-linux-amd64 | grep -c nvml` -ge 3 | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
files: | | |
dist/fan2go-linux-amd64 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |