diff --git a/.circleci/config.yml b/.circleci/config.yml index 07cdb03f..40c558a2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -80,27 +80,54 @@ jobs: pushd build-minimal make tests popd - # Build for aarch64 - "build/aarch64": + # Prepare dependencies for aarch64 + "build/aarch64-prepare": machine: image: ubuntu-2004:202010-01 steps: - checkout - run: - name: Build for aarch64 + name: Prepare dependencies for aarch64 command: | docker run --rm --privileged multiarch/qemu-user-static:register - docker run -v $PWD:/falco -w /falco -e BUILD_DIR=/build -v /build:/build multiarch/alpine:aarch64-v3.12 scripts/ci-build-alpine-aarch64.sh + docker run -v $PWD:/falco -w /falco -e BUILD_DIR=/build --entrypoint="scripts/ci-build-alpine-aarch64.sh" -v /build:/build multiarch/alpine:aarch64-v3.12 prepare + - persist_to_workspace: + root: / + paths: + - falco + - build + # CMake for aarch64 + "build/aarch64-cmake": + machine: + image: ubuntu-2004:202010-01 + steps: + - attach_workspace: + at: / - run: - name: Prepare artifacts + name: CMake for aarch64 command: | - mkdir -p /tmp/packages - cp /build/release/*.deb /tmp/packages - cp /build/release/*.tar.gz /tmp/packages - cp /build/release/*.rpm /tmp/packages - - store_artifacts: - path: /tmp/packages - destination: /packages + docker run --rm --privileged multiarch/qemu-user-static:register + docker run -v $PWD:/falco -w /falco -e BUILD_DIR=/build --entrypoint="scripts/ci-build-alpine-aarch64.sh" -v /build:/build multiarch/alpine:aarch64-v3.12 cmake + - persist_to_workspace: + root: / + paths: + - build + # Build gRPC for aarch64 + "build/aarch64-grpc": + machine: + image: ubuntu-2004:202010-01 + steps: + - attach_workspace: + at: / + - run: + name: Build gRPC for aarch64 + command: | + docker run --rm --privileged multiarch/qemu-user-static:register + docker run -v $PWD:/falco -w /falco -e BUILD_DIR=/build --entrypoint="scripts/ci-build-alpine-aarch64.sh" -v /build:/build multiarch/alpine:aarch64-v3.12 grpc + - persist_to_workspace: + root: / + paths: + - build # Build using ubuntu LTS # This build is dynamic, most dependencies are taken from the OS "build/ubuntu-focal": @@ -545,7 +572,13 @@ workflows: jobs: - "build/musl" - "build/minimal" - - "build/aarch64" + - "build/aarch64-prepare" + - "build/aarch64-cmake": + requires: + - "build/aarch64-prepare" + - "build/aarch64-grpc": + requires: + - "build/aarch64-cmake" - "build/ubuntu-focal" - "build/ubuntu-focal-debug" - "build/ubuntu-bionic" diff --git a/scripts/ci-build-alpine-aarch64.sh b/scripts/ci-build-alpine-aarch64.sh index 81d9a5a9..3794a4de 100755 --- a/scripts/ci-build-alpine-aarch64.sh +++ b/scripts/ci-build-alpine-aarch64.sh @@ -2,13 +2,41 @@ set -xeu -apk update -apk add g++ gcc cmake cmake make ncurses-dev git bash perl linux-headers autoconf automake m4 libtool elfutils-dev libelf-static patch binutils +: "${BUILD_DIR?"Missing BUILD_DIR environment variable"}" mkdir -p "${BUILD_DIR}" cd "${BUILD_DIR}" -cmake -DUSE_BUNDLED_DEPS=On -DMUSL_OPTIMIZED_BUILD=On -DBUILD_DRIVER=Off /falco -make -j4 all -make tests -make -j4 package +while test $# -gt 0; do + case "$1" in + prepare) + apk update + apk add g++ gcc cmake cmake make ncurses-dev git bash perl linux-headers autoconf automake m4 libtool elfutils-dev libelf-static patch binutils + exit 0 + ;; + cmake) + cmake -DUSE_BUNDLED_DEPS=On -DMUSL_OPTIMIZED_BUILD=On -DBUILD_DRIVER=Off /falco + exit 0 + ;; + falco) + make -j4 falco + exit 0 + ;; + grpc) + make -j4 grpc + exit 0 + ;; + all) + make -j4 all + exit 0 + ;; + tests) + make tests + exit 0 + ;; + packages) + make -j4 package + exit 0 + ;; + esac +done \ No newline at end of file