builder-releaser #53
Workflow file for this run
This file contains 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: builder-releaser | |
on: | |
push: | |
pull_request: | |
permissions: | |
contents: write | |
jobs: | |
# Basic build/test/vet on Ubuntu. | |
build-test-vet: | |
runs-on: ubuntu-latest | |
steps: | |
- | |
name: Install Build Dependencies | |
run: sudo apt-get -y install libpcap-dev | |
- | |
name: Checkout | |
uses: actions/checkout@v2 | |
- | |
name: Set up Go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: 1.21 | |
- | |
name: Build | |
run: go build -v ./... | |
- | |
name: Test | |
run: go test -v ./... | |
- | |
name: Vet | |
run: go vet -v ./... | |
# Debian builder. For tags starting with 'v' only. Note that the actual release | |
# portion of this job (configured via .goreleaser-deb.yml) is disabled. Artifacts | |
# are built and uploaded for later use. | |
debian-build-test: | |
needs: build-test-vet | |
if: startsWith(github.ref, 'refs/tags/v') | |
runs-on: ubuntu-latest | |
steps: | |
- | |
name: Install Build Dependencies | |
run: sudo apt-get -y install libpcap-dev | |
- | |
name: Checkout | |
uses: actions/checkout@v2 | |
- | |
name: Set up Go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: 1.21 | |
- | |
name: Import GPG key | |
id: import_gpg | |
uses: crazy-max/ghaction-import-gpg@v3 | |
with: | |
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} | |
passphrase: ${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }} | |
- | |
name: GoReleaser | |
uses: goreleaser/goreleaser-action@v2 | |
with: | |
# either 'goreleaser' (default) or 'goreleaser-pro' | |
distribution: goreleaser | |
version: v1.15.2 | |
args: release -f ./.goreleaser-deb.yml | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# Your GoReleaser Pro key, if you are using the 'goreleaser-pro' distribution | |
# GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} | |
- | |
name: Test Install | |
run: sudo apt-get -y install ./dist/*.deb | |
- | |
name: Test Run | |
run: nfr -h | |
- | |
name: Upload Artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
name: deb-artifacts | |
path: dist | |
# DISABLE CENTOS BUILDS UNTIL CENTOS STREAM HAS DOCKER IMAGES | |
# # Centos builder. For tags starting with 'v' only. Note that the actual release | |
# # portion of this job (configured via .goreleaser-centos.yml) is disabled. Artifacts | |
# # are built and uploaded for later use. | |
# centos-build-test: | |
# needs: build-test-vet | |
# if: startsWith(github.ref, 'refs/tags/v') | |
# runs-on: ubuntu-latest | |
# container: centos:7 | |
# steps: | |
# - | |
# name: Install Build Dependencies | |
# run: | | |
# yum -y install dnf-plugins-core | |
# yum -y install epel-release | |
# yum -y install libpcap-devel | |
# yum -y install git | |
# yum -y install gcc | |
# - | |
# name: Checkout | |
# uses: actions/checkout@v2 | |
# - | |
# name: Set up Go | |
# uses: actions/setup-go@v2 | |
# with: | |
# go-version: 1.21 | |
# - | |
# name: Start GPG Agent | |
# run: eval $(gpg-agent --daemon -s) | |
# - | |
# name: Import GPG key | |
# id: import_gpg | |
# uses: crazy-max/ghaction-import-gpg@v3 | |
# with: | |
# gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} | |
# passphrase: ${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }} | |
# - | |
# name: GoReleaser | |
# uses: goreleaser/goreleaser-action@v2 | |
# with: | |
# # either 'goreleaser' (default) or 'goreleaser-pro' | |
# distribution: goreleaser | |
# version: latest | |
# args: release -f ./.goreleaser-centos.yml | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# # Your GoReleaser Pro key, if you are using the 'goreleaser-pro' distribution | |
# # GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} | |
# - | |
# name: Test Install | |
# run: yum -y install ./dist/*.rpm | |
# - | |
# name: Test Run | |
# run: nfr -h | |
# - | |
# name: Upload Artifacts | |
# uses: actions/upload-artifact@v2 | |
# with: | |
# name: centos-artifacts | |
# path: dist | |
# centos7-test: | |
# needs: centos-build-test | |
# runs-on: ubuntu-latest | |
# container: centos:7 | |
# steps: | |
# - | |
# name: Download CentOS Artifacts | |
# uses: actions/download-artifact@v2 | |
# with: | |
# name: centos-artifacts | |
# path: centos-artifacts | |
# - | |
# name: Test Install | |
# run: yum -y install centos-artifacts/*.rpm | |
# - | |
# name: Test Run | |
# run: nfr -h | |
# Windows builder. For tags starting with 'v' only. Note that the actual release | |
# portion of this job (configured via .goreleaser-win.yml) is disabled. Artifacts | |
# are built and uploaded for later use. | |
windows-build: | |
needs: build-test-vet | |
if: startsWith(github.ref, 'refs/tags/v') | |
runs-on: ubuntu-latest | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v2 | |
- | |
name: Set up Go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: 1.21 | |
- | |
name: Start GPG Agent | |
run: eval $(gpg-agent --daemon -s) | |
- | |
name: Import GPG key | |
id: import_gpg | |
uses: crazy-max/ghaction-import-gpg@v3 | |
with: | |
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} | |
passphrase: ${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }} | |
- | |
name: GoReleaser | |
uses: goreleaser/goreleaser-action@v2 | |
with: | |
# either 'goreleaser' (default) or 'goreleaser-pro' | |
distribution: goreleaser | |
version: latest | |
args: release -f ./.goreleaser-win.yml | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# Your GoReleaser Pro key, if you are using the 'goreleaser-pro' distribution | |
# GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} | |
- | |
name: Upload Artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
name: win-artifacts | |
path: dist | |
# The actual release job. Performs no actual build, save for generating a changelog. | |
release-artifacts: | |
needs: [debian-build-test, windows-build] | |
if: startsWith(github.ref, 'refs/tags/v') | |
runs-on: ubuntu-latest | |
steps: | |
- | |
name: Download All Artifacts | |
uses: actions/download-artifact@v2 | |
- | |
name: Copy Checksums | |
run: | | |
sudo mkdir rel | |
sudo mv deb-artifacts/*checksums* rel/ | |
sudo mv win-artifacts/*checksums* rel/ | |
- | |
# Copies signatures also. | |
name: Copy Packages and Archives | |
run: | | |
sudo mv deb-artifacts/*.tar.gz* rel/ | |
sudo mv deb-artifacts/*.deb* rel/ | |
sudo mv win-artifacts/*.tar.gz* rel/ | |
- | |
# Needed because the below checkout destroys /home/runner/work/nfr, and the | |
# checkout is needed by the GoReleaser step. | |
name: Save Release Directory | |
run: | | |
sudo mv rel /home/runner/work | |
- | |
name: Checkout | |
uses: actions/checkout@v2 | |
- | |
name: Restore Release Directory | |
run: | | |
sudo mv /home/runner/work/rel /home/runner/work/nfr/nfr | |
- | |
name: Set up Go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: 1.21 | |
- | |
name: GoReleaser | |
uses: goreleaser/goreleaser-action@v2 | |
with: | |
# either 'goreleaser' (default) or 'goreleaser-pro' | |
distribution: goreleaser | |
version: latest | |
# Skip validation, as ./rel will cause git to be 'dirty'. | |
args: release -f ./.goreleaser-release.yml --skip-validate | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# Your GoReleaser Pro key, if you are using the 'goreleaser-pro' distribution | |
# GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} |