name: bsd on: push: branches: - master pull_request: branches: - master permissions: contents: read env: GNU_TAR_VERSION: "1.35" GO_VERSION_DRAGONFLY: "1.24.1" GO_VERSION_FREEBSD: "123" GO_VERSION_NETBSD: "1.24.1" GO_VERSION_OPENBSD: "1.23.1" GO_VERSION_SOLARIS: "1.24.1" # To spin up one of the VMs below, see the "Debug Shell" section here: https://github.com/vmactions jobs: test_freebsd: name: Run end-to-end tests on FreeBSD runs-on: ubuntu-latest steps: - name: Checkout the repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: test-e2e uses: vmactions/freebsd-vm@8873d98fd1413b5977cb2f7348fe329775159892 # v1.1.9 with: copyback: false envs: 'GO_VERSION_FREEBSD GNU_TAR_VERSION' usesh: true prepare: | pkg update -f pkg install -y \ bash \ git \ gmake \ gnugrep \ go${GO_VERSION_FREEBSD} \ gsed \ gtar \ python \ wget run: | echo "::group::Setup prerequisites" set -eu mkdir bin ln -s $(which go${GO_VERSION_FREEBSD}) $(pwd)/bin/go ln -s $(which ggrep) $(pwd)/bin/grep ln -s $(which gmake) $(pwd)/bin/make ln -s $(which gsed) $(pwd)/bin/sed ln -s $(which gtar) $(pwd)/bin/tar export PATH=$(pwd)/bin:$PATH echo "::endgroup::" echo "::group::Print environment information" uname -a echo "GOOS: $(go env GOOS)" echo "GOARCH: $(go env GOARCH)" echo "::endgroup::" echo "::group::Run End-to-End Tests" git config --global --add safe.directory $(pwd) gmake test-e2e echo "::endgroup::" test_openbsd: name: Run end-to-end tests on OpenBSD runs-on: ubuntu-latest steps: - name: Checkout the repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: test-e2e uses: vmactions/openbsd-vm@7ac70b6de6f33efc74a90c1964afa3bcf0ee4401 # v1.1.6 with: copyback: false envs: 'GO_VERSION_OPENBSD GNU_TAR_VERSION' usesh: true prepare: | pkg_add -u pkg_add \ bash \ ggrep \ git \ gmake \ go-${GO_VERSION_OPENBSD} \ gsed \ gtar-${GNU_TAR_VERSION}p0-static \ python \ wget run: | echo "::group::Setup prerequisites" set -eu mkdir bin ln -s $(which ggrep) $(pwd)/bin/grep ln -s $(which gmake) $(pwd)/bin/make ln -s $(which gsed) $(pwd)/bin/sed ln -s $(which gtar) $(pwd)/bin/tar export PATH=$(pwd)/bin:$PATH echo "::endgroup::" echo "::group::Print environment information" uname -a echo "GOOS: $(go env GOOS)" echo "GOARCH: $(go env GOARCH)" echo "::endgroup::" echo "::group::Run End-to-End Tests" git config --global --add safe.directory $(pwd) make test-e2e echo "::endgroup::" test_netbsd: name: Run end-to-end tests on NetBSD runs-on: ubuntu-latest steps: - name: Checkout the repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: test-e2e uses: vmactions/netbsd-vm@46a58bbf03682b4cb24142b97fa315ae52bed573 # v1.1.8 with: copyback: false envs: 'GO_VERSION_NETBSD GNU_TAR_VERSION' usesh: true prepare: | /usr/sbin/pkg_add -u /usr/sbin/pkg_add \ git \ gmake \ grep \ gsed \ gtar-base-${GNU_TAR_VERSION}\ python312 \ wget run: | echo "::group::Setup prerequisites" set -eu mkdir bin GOGZ="go${GO_VERSION_NETBSD}.netbsd-amd64.tar.gz" wget https://go.dev/dl/${GOGZ} gtar xzf ${GOGZ} ln -s $(pwd)/go/bin/go $(pwd)/bin/go ln -s $(which ggrep) $(pwd)/bin/grep ln -s $(which gmake) $(pwd)/bin/make ln -s $(which gsed) $(pwd)/bin/sed ln -s $(which gtar) $(pwd)/bin/tar export PATH=$(pwd)/bin:$PATH echo "::endgroup::" echo "::group::Print environment information" uname -a echo "GOOS: $(go env GOOS)" echo "GOARCH: $(go env GOARCH)" echo "::endgroup::" echo "::group::Run End-to-End Tests" git config --global --add safe.directory $(pwd) make test-e2e echo "::endgroup::" test_dragonfly: name: Run end-to-end tests on DragonFly runs-on: ubuntu-latest steps: - name: Checkout the repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: test-e2e uses: vmactions/dragonflybsd-vm@e3c420e8a2362c2496fca6e76a291abd46f5d8e7 # v1.1.0 with: copyback: false envs: 'GO_VERSION_DRAGONFLY' usesh: true prepare: | pkg update && pkg upgrade -y pkg install -y \ bash \ git \ gmake \ gnugrep \ gsed \ gtar \ python3 \ wget run: | echo "::group::Setup prerequisites" set -eu mkdir bin GOGZ="go${GO_VERSION_DRAGONFLY}.dragonfly-amd64.tar.gz" wget https://go.dev/dl/${GOGZ} gtar xzf ${GOGZ} ln -s $(pwd)/go/bin/go $(pwd)/bin/go ln -s $(which ggrep) $(pwd)/bin/grep ln -s $(which gmake) $(pwd)/bin/make ln -s $(which gsed) $(pwd)/bin/sed ln -s $(which gtar) $(pwd)/bin/tar ln -s $(which python3) $(pwd)/bin/python export PATH=$(pwd)/bin:$PATH echo "::endgroup::" echo "::group::Print environment information" uname -a echo "GOOS: $(go env GOOS)" echo "GOARCH: $(go env GOARCH)" echo "::endgroup::" echo "::group::Run End-to-End Tests" git config --global --add safe.directory $(pwd) gmake test-e2e echo "::endgroup::" test_solaris: name: Run end-to-end tests on Solaris runs-on: ubuntu-latest steps: - name: Checkout the repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: test-e2e uses: vmactions/solaris-vm@cc8f82fa1a7cc746153ec3f71bf11f311f16e225 # v1.1.1 with: copyback: false envs: 'GO_VERSION_SOLARIS' usesh: true prepare: | pkg update pkg install \ bash \ curl \ gcc \ git \ gnu-grep \ gnu-make \ gnu-sed \ gnu-tar run: | echo "::group::Setup prerequisites" set -eu mkdir bin GOGZ="go${GO_VERSION_SOLARIS}.solaris-amd64.tar.gz" wget https://go.dev/dl/${GOGZ} gtar xzf ${GOGZ} ln -s $(pwd)/go/bin/go $(pwd)/bin/go ln -s $(which ggrep) $(pwd)/bin/grep ln -s $(which gmake) $(pwd)/bin/make ln -s $(which gsed) $(pwd)/bin/sed ln -s $(which gtar) $(pwd)/bin/tar export PATH=$(pwd)/bin:$PATH echo ">> building promu as it is not shipped for Solaris" git clone https://github.com/prometheus/promu.git cd promu go build . cd - mkdir -p $(go env GOPATH)/bin ln -s $(pwd)/promu/promu $(go env GOPATH)/bin/promu export PATH=$(go env GOPATH)/bin:$PATH echo "::endgroup::" echo "::group::Print environment information" uname -a echo "GOOS: $(go env GOOS)" echo "GOARCH: $(go env GOARCH)" echo "::endgroup::" echo "::group::Run End-to-End Tests" git config --global --add safe.directory $(pwd) make test-e2e echo "::endgroup::" test_macos: name: Run end-to-end tests on macOS runs-on: macos-latest steps: - name: Checkout the repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Install dependencies run: | brew install \ bash \ curl \ git \ grep \ make \ gnu-sed \ gnu-tar \ go \ python3 - name: test-e2e run: | echo "::group::Setup prerequisites" set -eu mkdir bin ln -s $(which ggrep) $(pwd)/bin/grep ln -s $(which gmake) $(pwd)/bin/make ln -s $(which gsed) $(pwd)/bin/sed ln -s $(which gtar) $(pwd)/bin/tar export PATH=$(pwd)/bin:$PATH echo "::endgroup::" echo "::group::Print environment information" uname -a echo "GOOS: $(go env GOOS)" echo "GOARCH: $(go env GOARCH)" echo "::endgroup::" echo "::group::Run End-to-End Tests" git config --global --add safe.directory $(pwd) make test-e2e echo "::endgroup::"