cirrus: Replace curl with _cache

This commit is contained in:
Arne Welzel 2023-01-31 20:20:19 +01:00
parent 5a611d4bdb
commit 3f7adbe6b8

View file

@ -406,35 +406,41 @@ docker_build_template: &DOCKER_BUILD_TEMPLATE
env: env:
ZEEK_CONFIGURE_FLAGS: --ccache --generator=Ninja --build-type=Release ZEEK_CONFIGURE_FLAGS: --ccache --generator=Ninja --build-type=Release
CIRRUS_LOG_TIMESTAMP: true CIRRUS_LOG_TIMESTAMP: true
IMAGE_CACHE_DIR: /tmp/image-cache BUILDER_IMAGE_CACHE_DIR: /tmp/builder-image-cache
ZEEK_IMAGE_CACHE_DIR: /tmp/zeek-image-cache-${CIRRUS_ARCH}
always: always:
ccache_cache: ccache_cache:
folder: /tmp/ccache folder: /tmp/ccache
fingerprint_script: echo ccache-$CIRRUS_TASK_NAME-$CIRRUS_OS fingerprint_script: echo ccache-$CIRRUS_TASK_NAME-$CIRRUS_OS
reupload_on_changes: true reupload_on_changes: true
image_cache:
folder: /tmp/image-cache builder_image_cache:
fingerprint_script: echo image-cache-$CIRRUS_TASK_NAME-$CIRRUS_OS folder: /tmp/builder-image-cache
fingerprint_script: echo builder-image-cache-$CIRRUS_TASK_NAME-$CIRRUS_OS
reupload_on_changes: true
zeek_image_cache:
folder: /tmp/zeek-image-cache-${CIRRUS_ARCH}
fingerprint_key: zeek-image-cache-${CIRRUS_BUILD_ID}-${CIRRUS_ARCH}
reupload_on_changes: true reupload_on_changes: true
sync_submodules_script: git submodule update --recursive --init --recommend-shallow -j $(nproc) sync_submodules_script: git submodule update --recursive --init --recommend-shallow -j $(nproc)
prepare_builder_script: prepare_builder_script:
- set -x - set -x
- mkdir -p ${IMAGE_CACHE_DIR} - mkdir -p ${BUILDER_IMAGE_CACHE_DIR} ${ZEEK_IMAGE_CACHE_DIR}
- if [ -f ${IMAGE_CACHE_DIR}/builder.zst ]; then zstd -d < ${IMAGE_CACHE_DIR}/builder.zst | docker load; fi - if [ -f ${BUILDER_IMAGE_CACHE_DIR}/builder.zst ]; then zstd -d < ${BUILDER_IMAGE_CACHE_DIR}/builder.zst | docker load; fi
- if [ -f ${IMAGE_CACHE_DIR}/final.zst ]; then zstd -d < ${IMAGE_CACHE_DIR}/final.zst | docker load; fi - if [ -f ${BUILDER_IMAGE_CACHE_DIR}/final.zst ]; then zstd -d < ${BUILDER_IMAGE_CACHE_DIR}/final.zst | docker load; fi
- (cd docker && docker build --cache-from zeek-builder:latest -t zeek-builder:latest -f builder.Dockerfile .) - (cd docker && docker build --cache-from zeek-builder:latest -t zeek-builder:latest -f builder.Dockerfile .)
- docker save zeek-builder:latest | zstd > ${IMAGE_CACHE_DIR}/builder.zst - docker save zeek-builder:latest | zstd > ${BUILDER_IMAGE_CACHE_DIR}/builder.zst
build_zeek_script: build_zeek_script:
- docker run --name zeek-builder-container -e CCACHE_DIR=/tmp/ccache -v $(pwd):/src/zeek -v/tmp/ccache:/tmp/ccache -w /src/zeek zeek-builder:latest bash -c "./configure $ZEEK_CONFIGURE_FLAGS && ninja -C build install" - docker run --name zeek-builder-container -e CCACHE_DIR=/tmp/ccache -e CCACHE_NOSTATS=1 -v $(pwd):/src/zeek -v/tmp/ccache:/tmp/ccache -w /src/zeek zeek-builder:latest bash -c "./configure $ZEEK_CONFIGURE_FLAGS && ninja -C build install"
# The "zeek-build" tag is used within final.Dockerfile using COPY --from=... # The "zeek-build" tag is used within final.Dockerfile using COPY --from=...
- docker commit zeek-builder-container zeek-build - docker commit zeek-builder-container zeek-build
build_final_script: build_final_script:
- (cd docker && docker build --cache-from ${IMAGE_TAG} -t ${IMAGE_TAG} -f final.Dockerfile .) - cd docker && docker build --cache-from ${IMAGE_TAG} -t ${IMAGE_TAG} -f final.Dockerfile .
- docker save ${IMAGE_TAG} | zstd > ${IMAGE_CACHE_DIR}/final.zst - docker save ${IMAGE_TAG} | zstd > ${ZEEK_IMAGE_CACHE_DIR}/final.zst
- curl -sSf -X POST --data-binary @${IMAGE_CACHE_DIR}/final.zst http://$CIRRUS_HTTP_CACHE_HOST/${CIRRUS_BUILD_ID}-image-${CIRRUS_ARCH}
arm64_container_image_docker_builder: arm64_container_image_docker_builder:
env: env:
@ -442,6 +448,8 @@ arm64_container_image_docker_builder:
<< : *DOCKER_BUILD_TEMPLATE << : *DOCKER_BUILD_TEMPLATE
amd64_container_image_docker_builder: amd64_container_image_docker_builder:
env:
CIRRUS_ARCH: amd64
<< : *DOCKER_BUILD_TEMPLATE << : *DOCKER_BUILD_TEMPLATE
container_image_manifest_docker_builder: container_image_manifest_docker_builder:
@ -491,13 +499,21 @@ container_image_manifest_docker_builder:
env env
exit 1 exit 1
fi fi
# These should've been populated by the previous jobs
zeek_image_arm64_cache:
folder: /tmp/zeek-image-cache-arm64
fingerprint_key: zeek-image-cache-${CIRRUS_BUILD_ID}-arm64
zeek_image_amd64_cache:
folder: /tmp/zeek-image-cache-amd64
fingerprint_key: zeek-image-cache-${CIRRUS_BUILD_ID}-amd64
load_image_script: load_image_script:
# Fetch and load the images from the previous tasks
- set -x; - set -x;
- curl -sSf -O http://$CIRRUS_HTTP_CACHE_HOST/${CIRRUS_BUILD_ID}-image-arm64 - ls -lha /tmp/zeek-image-cache-*/
- curl -sSf -O http://$CIRRUS_HTTP_CACHE_HOST/${CIRRUS_BUILD_ID}-image-amd64 - zstd -d < /tmp/zeek-image-cache-arm64/final.zst | docker load
- zstd -d < ${CIRRUS_BUILD_ID}-image-arm64 | docker load - zstd -d < /tmp/zeek-image-cache-amd64/final.zst | docker load
- zstd -d < ${CIRRUS_BUILD_ID}-image-amd64 | docker load
tag_push_script: tag_push_script:
# Tag images and push to Docker Hub and AWS ECR # Tag images and push to Docker Hub and AWS ECR
- ./ci/container-images-tag-and-push.sh - ./ci/container-images-tag-and-push.sh
@ -521,9 +537,11 @@ cluster_testing_docker_builder:
sync_btest_script: git submodule update --init ./auxil/btest/ sync_btest_script: git submodule update --init ./auxil/btest/
checkout_script: checkout_script:
- set -x; cd testing/external/ && git clone https://github.com/zeek/zeek-testing-cluster.git && make checkout-repos - set -x; cd testing/external/ && git clone https://github.com/zeek/zeek-testing-cluster.git && make checkout-repos
zeek_image_amd64_cache:
folder: /tmp/zeek-image-cache-amd64
fingerprint_key: zeek-image-cache-${CIRRUS_BUILD_ID}-amd64
load_image_script: load_image_script:
- curl -sSf -O http://$CIRRUS_HTTP_CACHE_HOST/${CIRRUS_BUILD_ID}-image-amd64 - zstd -d < /tmp/zeek-image-cache-amd64/final.zst | docker load
- zstd -d < ${CIRRUS_BUILD_ID}-image-amd64 | docker load
- docker tag zeek/zeek-multiarch:amd64 zeektest:latest - docker tag zeek/zeek-multiarch:amd64 zeektest:latest
test_script: test_script:
- cd testing/external/zeek-testing-cluster && make - cd testing/external/zeek-testing-cluster && make