From e6ca1b0528de42111cda28bf8c9761b545bec931 Mon Sep 17 00:00:00 2001 From: Sianao Date: Sat, 22 Aug 2026 00:10:57 +0800 Subject: [PATCH] ci: add Gitea test and package workflow --- .gitea/workflows/test-package.yml | 84 +++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 .gitea/workflows/test-package.yml diff --git a/.gitea/workflows/test-package.yml b/.gitea/workflows/test-package.yml new file mode 100644 index 0000000..01d7dcf --- /dev/null +++ b/.gitea/workflows/test-package.yml @@ -0,0 +1,84 @@ +name: Test and package + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + test-package: + name: Test and package Linux binary + runs-on: ubuntu-latest + timeout-minutes: 30 + + steps: + - name: Check out source + uses: actions/checkout@v4 + + - name: Install native build dependencies + shell: bash + run: | + set -euo pipefail + + if [ "$(id -u)" -eq 0 ]; then + apt=(apt-get) + elif command -v sudo >/dev/null 2>&1; then + apt=(sudo apt-get) + else + echo "The runner user needs root access or sudo to install build dependencies." >&2 + exit 1 + fi + + "${apt[@]}" update + "${apt[@]}" install --yes --no-install-recommends \ + gcc \ + libc6-dev \ + libassuan-dev \ + libbtrfs-dev \ + libdevmapper-dev \ + libglib2.0-dev \ + libgpg-error-dev \ + libgpgme-dev \ + libprotobuf-c-dev \ + libprotobuf-dev \ + libseccomp-dev \ + libselinux1-dev \ + libsystemd-dev \ + pkg-config + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: "1.24.x" + cache: true + + - name: Verify dependencies + run: go mod verify + + - name: Run tests + run: go test ./... + + - name: Build package + shell: bash + run: | + set -euo pipefail + + arch="$(go env GOARCH)" + package="floares-linux-${arch}" + + mkdir -p "dist/${package}" + go build -trimpath -ldflags="-s -w" -o "dist/${package}/floares" . + cp LICENSE README.md "dist/${package}/" + + tar -C dist -czf "dist/${package}.tar.gz" "${package}" + sha256sum "dist/${package}.tar.gz" > "dist/${package}.tar.gz.sha256" + + - name: Upload package + uses: actions/upload-artifact@v3 + with: + name: floares-linux + path: | + dist/*.tar.gz + dist/*.sha256 + if-no-files-found: error + retention-days: 14