github: add arm builds #1083
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: CI | |
on: | |
pull_request: | |
push: | |
tags: | |
- 'v*' | |
branches: | |
- 'master' | |
defaults: | |
run: | |
# see: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#using-a-specific-shell | |
shell: bash --noprofile --norc -eo pipefail {0} | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
jobs: | |
build: | |
name: "System Tests (Ubuntu 22.04)" | |
runs-on: ubuntu-22.04 | |
continue-on-error: false | |
timeout-minutes: 30 | |
env: | |
NO_FTP_ACCESS: yes | |
BOTO_CONFIG: /dev/null | |
GO111MODULE: "on" | |
GOPROXY: "https://proxy.golang.org" | |
GOVER: '1.19' | |
steps: | |
- name: "Install packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends graphviz gnupg2 gpgv2 git gcc make devscripts | |
- name: "Checkout repository" | |
uses: actions/checkout@v3 | |
with: | |
# fetch the whole repo for `git describe` to work | |
fetch-depth: 0 | |
- name: "Setup Go" | |
uses: actions/setup-go@v3 | |
with: | |
go-version: ${{ env.GOVER }} | |
- name: "Get aptly version" | |
run: | | |
make version | |
- name: "Setup Python" | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- name: "Install Python packages" | |
run: | | |
pip install six packaging appdirs virtualenv | |
pip install -U pip setuptools | |
pip install -r system/requirements.txt | |
- name: "Install Azurite" | |
id: azuright | |
uses: potatoqualitee/azuright@v1.1 | |
with: | |
directory: ${{ runner.temp }} | |
- name: Make | |
env: | |
RUN_LONG_TESTS: 'yes' | |
AZURE_STORAGE_ENDPOINT: "http://127.0.0.1:10000/devstoreaccount1" | |
AZURE_STORAGE_ACCOUNT: "devstoreaccount1" | |
AZURE_STORAGE_ACCESS_KEY: "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==" | |
run: | | |
sudo mkdir -p /srv ; sudo chown runner /srv | |
COVERAGE_DIR=${{ runner.temp }} make all | |
- name: Merge code coverage | |
run: | | |
go install github.com/wadey/gocovmerge@latest | |
~/go/bin/gocovmerge unit.out ${{ runner.temp }}/*.out > coverage.txt | |
- name: Upload code coverage | |
uses: codecov/codecov-action@v2 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: coverage.txt | |
ci-debian: | |
name: "CI Build (Deb)" | |
needs: build | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
name: ["Debian 12", "Debian 11", "Debian 10", "Ubuntu 22.04", "Ubuntu 20.04"] | |
include: | |
- name: "Debian 12" | |
suite: bookworm | |
image: debian:bookworm | |
- name: "Debian 10" | |
suite: buster | |
image: debian:buster | |
- name: "Debian 11" | |
suite: bullseye | |
image: debian:bullseye | |
- name: "Ubuntu 22.04" | |
suite: jammy | |
image: ubuntu:22.04 | |
- name: "Ubuntu 20.04" | |
suite: focal | |
image: ubuntu:20.04 | |
container: | |
image: ${{ matrix.image }} | |
env: | |
APT_LISTCHANGES_FRONTEND: none | |
DEBIAN_FRONTEND: noninteractive | |
steps: | |
- name: "Install packages" | |
run: | | |
apt-get update | |
apt-get install -y --no-install-recommends make ca-certificates git curl build-essential devscripts dh-golang binutils-i686-linux-gnu binutils-aarch64-linux-gnu binutils-arm-linux-gnueabihf | |
git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
- name: "Checkout repository" | |
uses: actions/checkout@v3 | |
with: | |
# fetch the whole repo for `git describe` to work | |
fetch-depth: 0 | |
- name: "Read go version from go.mod" | |
run: | | |
echo "GOVER=$(sed -n 's/^go \(.*\)/\1/p' go.mod)" >> $GITHUB_OUTPUT | |
id: goversion | |
- name: "Setup Go" | |
uses: actions/setup-go@v3 | |
with: | |
go-version: ${{ steps.goversion.outputs.GOVER }} | |
- name: "Build Debian packages" | |
env: | |
GOBIN: /usr/local/bin | |
run: | | |
GOPATH=$PWD/.go go generate -v | |
DEBEMAIL="CI <runner@github>" dch -v `make version` "CI build" | |
dpkg-buildpackage -us -uc -b -d --host-arch=amd64 | |
dpkg-buildpackage -us -uc -b -d --host-arch=i386 | |
dpkg-buildpackage -us -uc -b -d --host-arch=arm64 | |
dpkg-buildpackage -us -uc -b -d --host-arch=armhf | |
mkdir -p build && mv ../*.deb build/ | |
cd build && ls -l *.deb | |
- name: "Publish CI release to aptly" | |
if: github.ref == 'refs/heads/master' | |
env: | |
APTLY_USER: ${{ secrets.APTLY_USER }} | |
APTLY_PASSWORD: ${{ secrets.APTLY_PASSWORD }} | |
run: | | |
./upload-artifacts.sh nightly ${{ matrix.suite }} | |
- name: "Publish release to aptly" | |
if: startsWith(github.event.ref, 'refs/tags') | |
env: | |
APTLY_USER: ${{ secrets.APTLY_USER }} | |
APTLY_PASSWORD: ${{ secrets.APTLY_PASSWORD }} | |
run: | | |
./upload-artifacts.sh release ${{ matrix.suite }} | |
ci-other: | |
name: "CI Build (FreeBSD, MacOS, Linux)" | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Install packages" | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends make ca-certificates git curl devscripts | |
git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
- name: "Checkout repository" | |
uses: actions/checkout@v3 | |
with: | |
# fetch the whole repo for `git describe` to work | |
fetch-depth: 0 | |
- name: "Read go version from go.mod" | |
run: | | |
echo "GOVER=$(sed -n 's/^go \(.*\)/\1/p' go.mod)" >> $GITHUB_OUTPUT | |
id: goversion | |
- name: "Setup Go" | |
uses: actions/setup-go@v3 | |
with: | |
go-version: ${{ steps.goversion.outputs.GOVER }} | |
- name: "Build goxc packages" | |
env: | |
GOBIN: /usr/local/bin | |
run: | | |
go version | |
make release |