Add CI job to cross compile all the things
This makes sure we can compile on all the platforms and prevent things like integer overflows. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
parent
10a498c7c8
commit
311e326a1c
89
.github/workflows/ci.yml
vendored
89
.github/workflows/ci.yml
vendored
@ -123,6 +123,88 @@ jobs:
|
||||
- run: make man
|
||||
working-directory: src/github.com/containerd/containerd
|
||||
|
||||
# Make sure binaries compile with other platforms
|
||||
crossbuild:
|
||||
name: Crossbuild Binaries
|
||||
needs: [project, linters, protos, man]
|
||||
runs-on: ubuntu-18.04
|
||||
timeout-minutes: 10
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- goos: linux
|
||||
goarch: arm64
|
||||
- goos: linux
|
||||
goarch: arm
|
||||
goarm: "7"
|
||||
- goos: linux
|
||||
goarch: arm
|
||||
goarm: "5"
|
||||
- goos: freebsd
|
||||
goarch: amd64
|
||||
- goos: freebsd
|
||||
goarch: arm64
|
||||
- goos: windows
|
||||
goarch: arm
|
||||
goarm: "7"
|
||||
|
||||
steps:
|
||||
- uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: '1.16.2'
|
||||
- name: Set env
|
||||
shell: bash
|
||||
run: |
|
||||
echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV
|
||||
echo "${{ github.workspace }}/bin" >> $GITHUB_PATH
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
path: src/github.com/containerd/containerd
|
||||
- run: |
|
||||
set -e -x
|
||||
|
||||
packages=""
|
||||
platform="${{matrix.goos}}/${{matrix.goarch}}"
|
||||
if [ -n "${{matrix.goarm}}" ]; then
|
||||
platform+="/v${{matrix.goarm}}"
|
||||
fi
|
||||
|
||||
case "${platform}" in
|
||||
linux/arm/v5)
|
||||
packages+=" crossbuild-essential-armel"
|
||||
echo "CGO_ENABLED=1" >> $GITHUB_ENV
|
||||
echo "CC=arm-linux-gnueabi-gcc" >> $GITHUB_ENV
|
||||
;;
|
||||
linux/arm/v7)
|
||||
packages+=" crossbuild-essential-armhf"
|
||||
echo "CGO_ENABLED=1" >> $GITHUB_ENV
|
||||
echo "CC=arm-linux-gnueabihf-gcc" >> $GITHUB_ENV
|
||||
;;
|
||||
linux/arm64)
|
||||
packages+=" crossbuild-essential-arm64"
|
||||
echo "CGO_ENABLED=1" >> $GITHUB_ENV
|
||||
echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
|
||||
;;
|
||||
windows/arm/v7)
|
||||
echo "CGO_ENABLED=0" >> $GITHUB_ENV
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -n "${packages}" ]; then
|
||||
sudo apt-get update && sudo apt-get install -y ${packages}
|
||||
fi
|
||||
name: install deps
|
||||
- name: Build
|
||||
working-directory: src/github.com/containerd/containerd
|
||||
env:
|
||||
GOOS: ${{matrix.goos}}
|
||||
GOARCH: ${{matrix.goarch}}
|
||||
GOARM: ${{matrix.goarm}}
|
||||
run: |
|
||||
make build
|
||||
make binaries
|
||||
|
||||
#
|
||||
# Build containerd binaries
|
||||
#
|
||||
@ -157,13 +239,6 @@ jobs:
|
||||
make binaries
|
||||
working-directory: src/github.com/containerd/containerd
|
||||
|
||||
- name: Cross-compile
|
||||
if: startsWith(matrix.os, 'ubuntu')
|
||||
run : |
|
||||
GOOS=freebsd make build
|
||||
GOOS=freebsd make binaries
|
||||
working-directory: src/github.com/containerd/containerd
|
||||
|
||||
#
|
||||
# Integration and CRI tests
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user