1
1
Fork 0
mirror of https://github.com/schollz/croc.git synced 2025-10-10 21:01:02 +02:00
schollz_croc/.github/workflows/release.yml
dependabot[bot] 0c2cce90f6
build(deps): bump actions/setup-go from 5 to 6
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5 to 6.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 12:14:11 +00:00

217 lines
No EOL
5.7 KiB
YAML

name: Release
on:
release:
types: [created]
workflow_dispatch:
permissions:
contents: write
jobs:
prepare-source:
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Setup Go
uses: actions/setup-go@v6
with:
go-version: '^1.24.0'
- name: Prepare source tarball
run: |
git clone -b ${{ github.event.release.name }} --depth 1 https://github.com/schollz/croc croc-${{ github.event.release.name }}
cd croc-${{ github.event.release.name }} && go mod tidy && go mod vendor
cd .. && tar -czvf croc_${{ github.event.release.name }}_src.tar.gz croc-${{ github.event.release.name }}
- name: Upload source artifact
uses: actions/upload-artifact@v4
with:
name: source-tarball
path: "*.tar.gz"
build:
runs-on: ubuntu-24.04
strategy:
matrix:
include:
# Windows builds
- goos: windows
goarch: amd64
name: Windows-64bit
ext: .exe
archive: zip
- goos: windows
goarch: "386"
name: Windows-32bit
ext: .exe
archive: zip
- goos: windows
goarch: arm
name: Windows-ARM
ext: .exe
archive: zip
- goos: windows
goarch: arm64
name: Windows-ARM64
ext: .exe
archive: zip
# Linux builds
- goos: linux
goarch: amd64
name: Linux-64bit
ext: ""
archive: tar.gz
- goos: linux
goarch: "386"
name: Linux-32bit
ext: ""
archive: tar.gz
- goos: linux
goarch: arm
name: Linux-ARM
ext: ""
archive: tar.gz
- goos: linux
goarch: arm
goarm: "5"
name: Linux-ARMv5
ext: ""
archive: tar.gz
- goos: linux
goarch: arm64
name: Linux-ARM64
ext: ""
archive: tar.gz
# macOS builds
- goos: darwin
goarch: amd64
name: macOS-64bit
ext: ""
archive: tar.gz
- goos: darwin
goarch: arm64
name: macOS-ARM64
ext: ""
archive: tar.gz
# BSD builds
- goos: dragonfly
goarch: amd64
name: DragonFlyBSD-64bit
ext: ""
archive: tar.gz
- goos: freebsd
goarch: amd64
name: FreeBSD-64bit
ext: ""
archive: tar.gz
- goos: freebsd
goarch: arm64
name: FreeBSD-ARM64
ext: ""
archive: tar.gz
- goos: netbsd
goarch: "386"
name: NetBSD-32bit
ext: ""
archive: tar.gz
- goos: netbsd
goarch: amd64
name: NetBSD-64bit
ext: ""
archive: tar.gz
- goos: netbsd
goarch: arm64
name: NetBSD-ARM64
ext: ""
archive: tar.gz
- goos: openbsd
goarch: amd64
name: OpenBSD-64bit
ext: ""
archive: tar.gz
- goos: openbsd
goarch: arm64
name: OpenBSD-ARM64
ext: ""
archive: tar.gz
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Setup Go
uses: actions/setup-go@v6
with:
go-version: '^1.24.0'
- name: Build binary
env:
CGO_ENABLED: 0
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
GOARM: ${{ matrix.goarm }}
run: |
# Set LDFLAGS based on platform
case "${{ matrix.goos }}" in
"darwin")
LDFLAGS='-s -extldflags "-sectcreate __TEXT __info_plist Info.plist"'
;;
"dragonfly"|"freebsd"|"netbsd"|"openbsd")
LDFLAGS=""
;;
*)
LDFLAGS='-extldflags "-static"'
;;
esac
echo "Building for ${{ matrix.goos }}/${{ matrix.goarch }} with LDFLAGS: $LDFLAGS"
go build -ldflags "$LDFLAGS" -o croc${{ matrix.ext }}
- name: Create archive
run: |
if [ "${{ matrix.archive }}" = "zip" ]; then
zip croc_${{ github.event.release.name }}_${{ matrix.name }}.zip croc${{ matrix.ext }} LICENSE
else
tar -czvf croc_${{ github.event.release.name }}_${{ matrix.name }}.tar.gz croc${{ matrix.ext }} LICENSE
fi
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build-${{ matrix.name }}
path: |
*.zip
*.tar.gz
release:
needs: [prepare-source, build]
runs-on: ubuntu-24.04
if: github.event_name == 'release'
steps:
- name: Download all artifacts
uses: actions/download-artifact@v5
with:
merge-multiple: true
- name: Generate checksums
run: |
# Generate SHA256 checksums for all archives
sha256sum *.zip *.tar.gz > croc_${{ github.event.release.name }}_checksums.txt
# Display the checksums file for verification
echo "Generated checksums:"
cat croc_${{ github.event.release.name }}_checksums.txt
- name: Upload release assets
uses: softprops/action-gh-release@v2
with:
files: |
*.zip
*.tar.gz
*_checksums.txt