mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
Merge remote-tracking branch 'origin/topic/awelzel/2674-arm64-containers-on-cirrus'
* origin/topic/awelzel/2674-arm64-containers-on-cirrus: cirrus/containers: Do not install btest pcaps cirrus: Replace curl with _cache cirrus: Add cluster testing cirrus: Polish container_image_manifest_docker_builder cirrus: Use ccache for faster container builds cirrus: Add docker_builder tasks to build and push images github: No more docker workflow
This commit is contained in:
commit
cfd9979044
8 changed files with 283 additions and 196 deletions
168
.cirrus.yml
168
.cirrus.yml
|
@ -382,3 +382,171 @@ windows_task:
|
|||
CTEST_OUTPUT_ON_FAILURE: 1
|
||||
<< : *BRANCH_WHITELIST
|
||||
<< : *SKIP_TASK_ON_PR
|
||||
|
||||
|
||||
# Container images
|
||||
#
|
||||
# Use two separate tasks to build images for amd64 and arm64.
|
||||
# Use use a third docker_builder task to collect the produced images
|
||||
# (through CIRRUS_HTTP_CACHE) and push them to the registry as
|
||||
# zeek/zeek:v1.2.3-<arch> or zeek/zeek-dev:latest-<arch> tags. Once
|
||||
# pushed, create a manifest for zeek/zeek:v1.2.3 or zeek/zeek-dev:latest
|
||||
# that includes the just pushed architecture specific images.
|
||||
#
|
||||
# We've previously tried using docker buildx with QEMU using GitHub
|
||||
# actions. The emulated arm64 build on the amd64 VMs they provide took
|
||||
# more than 6 hours and timed out. Using separate builders on Cirrus allows
|
||||
# us build natively and much faster at the expense of the docker manifest
|
||||
# wrangling (and not being able to use the nice GitHub actions).
|
||||
docker_build_template: &DOCKER_BUILD_TEMPLATE
|
||||
cpu: *CPUS
|
||||
memory: *MEMORY
|
||||
set_image_tag_script: echo "IMAGE_TAG=zeek/zeek-multiarch:${CIRRUS_ARCH}" >> $CIRRUS_ENV
|
||||
|
||||
env:
|
||||
ZEEK_CONFIGURE_FLAGS: --ccache --generator=Ninja --build-type=Release --disable-btest-pcaps
|
||||
CIRRUS_LOG_TIMESTAMP: true
|
||||
BUILDER_IMAGE_CACHE_DIR: /tmp/builder-image-cache
|
||||
ZEEK_IMAGE_CACHE_DIR: /tmp/zeek-image-cache-${CIRRUS_ARCH}
|
||||
|
||||
always:
|
||||
ccache_cache:
|
||||
folder: /tmp/ccache
|
||||
fingerprint_script: echo ccache-$CIRRUS_TASK_NAME-$CIRRUS_OS
|
||||
reupload_on_changes: true
|
||||
|
||||
builder_image_cache:
|
||||
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
|
||||
|
||||
sync_submodules_script: git submodule update --recursive --init --recommend-shallow -j $(nproc)
|
||||
|
||||
prepare_builder_script:
|
||||
- set -x
|
||||
- mkdir -p ${BUILDER_IMAGE_CACHE_DIR} ${ZEEK_IMAGE_CACHE_DIR}
|
||||
- if [ -f ${BUILDER_IMAGE_CACHE_DIR}/builder.zst ]; then zstd -d < ${BUILDER_IMAGE_CACHE_DIR}/builder.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 .
|
||||
- docker save zeek-builder:latest | zstd > ${BUILDER_IMAGE_CACHE_DIR}/builder.zst
|
||||
build_zeek_script:
|
||||
- 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=...
|
||||
- docker commit zeek-builder-container zeek-build
|
||||
build_final_script:
|
||||
- cd docker && docker build --cache-from ${IMAGE_TAG} -t ${IMAGE_TAG} -f final.Dockerfile .
|
||||
- docker save ${IMAGE_TAG} | zstd > ${ZEEK_IMAGE_CACHE_DIR}/final.zst
|
||||
|
||||
arm64_container_image_docker_builder:
|
||||
env:
|
||||
CIRRUS_ARCH: arm64
|
||||
<< : *DOCKER_BUILD_TEMPLATE
|
||||
|
||||
amd64_container_image_docker_builder:
|
||||
env:
|
||||
CIRRUS_ARCH: amd64
|
||||
<< : *DOCKER_BUILD_TEMPLATE
|
||||
|
||||
container_image_manifest_docker_builder:
|
||||
cpu: 1
|
||||
# Push master builds to zeek/zeek-dev, or tagged release branches to zeek/zeek
|
||||
only_if: >
|
||||
( $CIRRUS_REPO_FULL_NAME == 'zeek/zeek' &&
|
||||
( $CIRRUS_BRANCH == 'master' ||
|
||||
( $CIRRUS_BRANCH =~ 'release/.*' && $CIRRUS_TAG != '')
|
||||
)
|
||||
)
|
||||
env:
|
||||
DOCKER_USERNAME: ENCRYPTED[!505b3dee552a395730a7e79e6aab280ffbe1b84ec62ae7616774dfefe104e34f896d2e20ce3ad701f338987c13c33533!]
|
||||
DOCKER_PASSWORD: ENCRYPTED[!6c4b2f6f0e5379ef1091719cc5d2d74c90cfd2665ac786942033d6d924597ffb95dbbc1df45a30cc9ddeec76c07ac620!]
|
||||
AWS_ECR_ACCESS_KEY_ID: ENCRYPTED[!eff52f6442e1bc78bce5b15a23546344df41bf519f6201924cb70c7af12db23f442c0e5f2b3687c2d856ceb11fcb8c49!]
|
||||
AWS_ECR_SECRET_ACCESS_KEY: ENCRYPTED[!748bc302dd196140a5fa8e89c9efd148882dc846d4e723787d2de152eb136fa98e8dea7e6d2d6779d94f72dd3c088228!]
|
||||
login_script: |
|
||||
docker login --username $DOCKER_USERNAME --password $DOCKER_PASSWORD
|
||||
AWS_ACCESS_KEY_ID=$AWS_ECR_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY=$AWS_ECR_SECRET_ACCESS_KEY aws ecr-public get-login-password --region us-east-1 | \
|
||||
docker login --username AWS $AWS_ECR_USERNAME --password-stdin public.ecr.aws
|
||||
set_image_tag_script: |
|
||||
# If we have a CIRRUS_TAG, use the value in VERSION to push the multiarch
|
||||
# images, otherwise use latest. Basically we push the arch images as
|
||||
# zeek/zeek:1.2.3-<amd64|arm64> or
|
||||
# zeek/zeek-dev:latest-<amd64|arm64>
|
||||
# and using these, create a manifest of the form zeek/zeek:${CIRRUS_TAG}
|
||||
# for tags, or zeek/zeek-dev:latest for pushes to master.
|
||||
if [ -n "${CIRRUS_TAG}" ]; then
|
||||
echo "MANIFEST_NAME=zeek" >> $CIRRUS_ENV
|
||||
echo "MANIFEST_TAG=$(cat VERSION)" >> $CIRRUS_ENV
|
||||
echo "ARCH_IMAGE_TAG=$(cat VERSION)" >> $CIRRUS_ENV
|
||||
echo "ARCH_IMAGE_NAME=zeek" >> $CIRRUS_ENV
|
||||
elif [ "${CIRRUS_BRANCH}" = "master" ]; then
|
||||
echo "MANIFEST_NAME=zeek-dev" >> $CIRRUS_ENV
|
||||
echo "MANIFEST_TAG=latest" >> $CIRRUS_ENV
|
||||
echo "ARCH_IMAGE_NAME=zeek-dev" >> $CIRRUS_ENV
|
||||
echo "ARCH_IMAGE_TAG=latest" >> $CIRRUS_ENV
|
||||
# Hunk for testing and pushing into zeek/zeek-next. Make sure
|
||||
# to allow the branch in the above only_if attribute of this task.
|
||||
# elif [ "${CIRRUS_BRANCH}" = "topic/awelzel/2674-arm64-containers-on-cirrus" ]; then
|
||||
# echo "MANIFEST_NAME=zeek-next" >> $CIRRUS_ENV
|
||||
# echo "MANIFEST_TAG=latest" >> $CIRRUS_ENV
|
||||
# echo "ARCH_IMAGE_NAME=zeek-next" >> $CIRRUS_ENV
|
||||
# echo "ARCH_IMAGE_TAG=latest" >> $CIRRUS_ENV
|
||||
else
|
||||
echo "Bad tag/branch for container_image_manifest"
|
||||
env
|
||||
exit 1
|
||||
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:
|
||||
- set -x;
|
||||
- ls -lha /tmp/zeek-image-cache-*/
|
||||
- zstd -d < /tmp/zeek-image-cache-arm64/final.zst | docker load
|
||||
- zstd -d < /tmp/zeek-image-cache-amd64/final.zst | docker load
|
||||
tag_push_script:
|
||||
# Tag images and push to Docker Hub and AWS ECR
|
||||
- ./ci/container-images-tag-and-push.sh
|
||||
- REGISTRY_PREFIX=public.ecr.aws/ ./ci/container-images-tag-and-push.sh
|
||||
depends_on:
|
||||
- arm64_container_image
|
||||
- amd64_container_image
|
||||
|
||||
cluster_testing_docker_builder:
|
||||
cpu: *CPUS
|
||||
memory: *MEMORY
|
||||
only_if: $CIRRUS_REPO_FULL_NAME == 'zeek/zeek'
|
||||
env:
|
||||
CIRRUS_LOG_TIMESTAMP: true
|
||||
# At this point, zeek-testing-cluster checks for "GITHUB_ACTION" to
|
||||
# see if it should rebuild the Zeek image or not.
|
||||
GITHUB_ACTION: fake
|
||||
install_deps_script:
|
||||
# The cluster tests depend on jq and docker_builder doesn't have that :-(
|
||||
- apt-get -q update && apt-get install -y --no-install-recommends jq
|
||||
sync_btest_script: git submodule update --init ./auxil/btest/
|
||||
checkout_script:
|
||||
- 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:
|
||||
- zstd -d < /tmp/zeek-image-cache-amd64/final.zst | docker load
|
||||
- docker tag zeek/zeek-multiarch:amd64 zeektest:latest
|
||||
test_script:
|
||||
- cd testing/external/zeek-testing-cluster && make
|
||||
on_failure:
|
||||
upload_cluster_testing_artifacts:
|
||||
path: "testing/external/zeek-testing-cluster/.tmp/**"
|
||||
depends_on:
|
||||
- amd64_container_image
|
||||
|
|
195
.github/workflows/docker.yml
vendored
195
.github/workflows/docker.yml
vendored
|
@ -1,195 +0,0 @@
|
|||
name: Check and publish Docker images
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches: [master]
|
||||
tags:
|
||||
- 'v*'
|
||||
- '!v*-dev'
|
||||
- 'release'
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
env:
|
||||
IMAGE_NAME: zeek-image.tar
|
||||
IMAGE_FILE: /tmp/zeek-image.tar
|
||||
IMAGE_PATH: /tmp
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
docker-build:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
TEST_TAG: zeek:latest
|
||||
CONFFLAGS: --generator=Ninja --build-type=Release
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: "recursive"
|
||||
|
||||
# Create and boot a loader. This will e.g., provide caching
|
||||
# so we avoid rebuilds of the same image after this step.
|
||||
- uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Build image
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: ./
|
||||
file: docker/Dockerfile
|
||||
build-args: |
|
||||
CONFFLAGS=${{ env.CONFFLAGS }}
|
||||
load: true
|
||||
tags: ${{ env.TEST_TAG }}
|
||||
|
||||
- name: Run btests
|
||||
run: make -C docker/btest
|
||||
|
||||
- name: Save image tarball
|
||||
run: docker save -o ${{ env.IMAGE_FILE }} ${{ env.TEST_TAG }}
|
||||
|
||||
- name: Get version
|
||||
id: version
|
||||
run: echo "RELEASE_VERSION=$(cat VERSION)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Compute target tag
|
||||
id: target
|
||||
env:
|
||||
RELEASE_VERSION: ${{ steps.version.outputs.RELEASE_VERSION }}
|
||||
run: |
|
||||
# Translate the GitHub reference into a tag name.
|
||||
#
|
||||
# - `release` tag maps to `zeek:latest`
|
||||
# - `v*` tag (excluding `v*-dev` tags) maps to `zeek:RELEASE_VERSION`
|
||||
# - `master` branch maps to `zeek-dev:latest`
|
||||
#
|
||||
# Any other refs are not published below.
|
||||
if [ "${GITHUB_REF}" = "refs/tags/release" ]; then
|
||||
echo "tag=zeek:latest" >> $GITHUB_OUTPUT
|
||||
elif [ "${GITHUB_REF}" = "refs/heads/master" ]; then
|
||||
echo "tag=zeek-dev:latest" >> $GITHUB_OUTPUT
|
||||
elif [[ "${GITHUB_REF}" = refs/tags/v* ]] && [[ "${GITHUB_REF}" != refs/tags/v*-dev ]]; then
|
||||
echo "tag=zeek:${RELEASE_VERSION}" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Login to ECR
|
||||
# Don't publish on forks. Also note that secrets for the login are not
|
||||
# available for pull requests, so trigger on pushes only.
|
||||
if: github.repository == 'zeek/zeek' && github.event_name == 'push'
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
registry: public.ecr.aws
|
||||
username: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v2
|
||||
# Don't publish on forks. Also note that secrets for the login are not
|
||||
# available for pull requests, so trigger on pushes only.
|
||||
if: github.repository == 'zeek/zeek' && github.event_name == 'push'
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Push image
|
||||
# Only publish if we did compute a tag.
|
||||
if: github.repository == 'zeek/zeek' && github.event_name == 'push' && steps.target.outputs.tag != ''
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: ./
|
||||
file: docker/Dockerfile
|
||||
build-args: |
|
||||
CONFFLAGS=${{ env.CONFFLAGS }}
|
||||
push: true
|
||||
tags: |
|
||||
public.ecr.aws/zeek/${{ steps.target.outputs.tag }}
|
||||
docker.io/zeekurity/${{ steps.target.outputs.tag }}
|
||||
docker.io/zeek/${{ steps.target.outputs.tag }}
|
||||
|
||||
- name: Preserve image artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ env.IMAGE_NAME }}
|
||||
path: ${{ env.IMAGE_FILE }}
|
||||
retention-days: 1
|
||||
|
||||
- name: Preserve btest artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
if: failure()
|
||||
with:
|
||||
name: docker-btest
|
||||
path: docker/btest/.tmp
|
||||
if-no-files-found: ignore
|
||||
|
||||
cluster-testing:
|
||||
# We need the Zeek Docker image build job to complete first, since we need
|
||||
# the resulting image for our docker-compose setup.
|
||||
needs: docker-build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Grab the sources so we have access to btest. Could also use pip, but it
|
||||
# seems appealing to be using the in-tree version of btest. btest is in a
|
||||
# submodule; we check it out selectively to save time.
|
||||
- uses: actions/checkout@v3
|
||||
- name: Check out btest
|
||||
run: git submodule update --init ./auxil/btest
|
||||
|
||||
- name: Download Docker image artifact
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: ${{ env.IMAGE_NAME }}
|
||||
path: ${{ env.IMAGE_PATH }}
|
||||
|
||||
- name: Load Docker image
|
||||
run: |
|
||||
docker load --input ${{ env.IMAGE_FILE }}
|
||||
docker tag zeek:latest zeektest:latest
|
||||
|
||||
# The testsuite ref to use for this version of Zeek is stored in a file in
|
||||
# the Zeek source tree.
|
||||
- name: Get testsuite version
|
||||
run: |
|
||||
echo "TESTSUITE_COMMIT=$(cat ./testing/external/commit-hash.zeek-testing-cluster)" >> $GITHUB_ENV
|
||||
|
||||
- name: Retrieve cluster testsuite
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: zeek/zeek-testing-cluster
|
||||
path: testing/external/zeek-testing-cluster
|
||||
ref: ${{ ENV.TESTSUITE_COMMIT }}
|
||||
|
||||
- name: Run testsuite
|
||||
run: make -C testing/external/zeek-testing-cluster
|
||||
|
||||
# upload-artifact balks at certain characters in artifact
|
||||
# filenames, so substitute them for dots.
|
||||
- name: Sanitize artifacts
|
||||
if: failure()
|
||||
run: |
|
||||
sudo apt-get -q update && sudo apt-get install -q -y rename
|
||||
find testing/external/zeek-testing-cluster/.tmp -depth -execdir rename 's/[":<>|*?\r\n]/./g' "{}" \;
|
||||
|
||||
- name: Preserve btest artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
if: failure()
|
||||
with:
|
||||
name: cluster-btest
|
||||
path: testing/external/zeek-testing-cluster/.tmp
|
||||
if-no-files-found: ignore
|
||||
|
||||
# To save storage space, truncate the Docker image artifact
|
||||
# when this run was successful.
|
||||
- name: Truncate Docker image
|
||||
run: |
|
||||
truncate -s0 ${{ env.IMAGE_FILE }}
|
||||
|
||||
- name: Store truncated image artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ env.IMAGE_NAME }}
|
||||
path: ${{ env.IMAGE_FILE }}
|
||||
retention-days: 1
|
16
CHANGES
16
CHANGES
|
@ -1,3 +1,19 @@
|
|||
5.2.0-dev.589 | 2023-02-01 09:02:00 +0100
|
||||
|
||||
* cirrus/containers: Do not install btest pcaps (Arne Welzel, Corelight)
|
||||
|
||||
* cirrus: Replace curl with _cache (Arne Welzel, Corelight)
|
||||
|
||||
* cirrus: Add cluster testing (Arne Welzel, Corelight)
|
||||
|
||||
* cirrus: Polish container_image_manifest_docker_builder (Arne Welzel, Corelight)
|
||||
|
||||
* cirrus: Use ccache for faster container builds (Arne Welzel, Corelight)
|
||||
|
||||
* cirrus: Add docker_builder tasks to build and push images (Arne Welzel, Corelight)
|
||||
|
||||
* github: No more docker workflow (Arne Welzel, Corelight)
|
||||
|
||||
5.2.0-dev.579 | 2023-01-31 14:49:29 +0100
|
||||
|
||||
* mysql: Recognize when client/server negotiate SSL (Arne Welzel, Corelight)
|
||||
|
|
6
NEWS
6
NEWS
|
@ -59,6 +59,12 @@ New Functionality
|
|||
The Zeek team wants to give a huge thank you to the team at Microsoft for all
|
||||
of their effort in completing this port.
|
||||
|
||||
- Zeek container images are now being published to zeek/zeek and zeek/zeek-dev
|
||||
rather than zeekurity/zeek and zeekurity/zeek-dev on Docker Hub (and continue
|
||||
to be published to public.ecr.aws) Further, container images for amd64 and
|
||||
arm64 platforms are now available. Main driver for the latter was to allow
|
||||
usage of the official container images on Apple's M1 systems.
|
||||
|
||||
- New ``analyzer_confirmation_info`` and ``analyzer_violation_info`` events with
|
||||
accompanying record types ``AnalyzerConfirmationInfo`` and
|
||||
``AnalyzerViolationInfo`` have been added. These supersede
|
||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
|||
5.2.0-dev.579
|
||||
5.2.0-dev.589
|
||||
|
|
38
ci/container-images-tag-and-push.sh
Executable file
38
ci/container-images-tag-and-push.sh
Executable file
|
@ -0,0 +1,38 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# This script expects two local images in the local container registry:
|
||||
#
|
||||
# zeek/zeek-multiarch:arm64
|
||||
# zeek/zeek-multiarch:amd64
|
||||
#
|
||||
# It retags these according to the environment ARCH_IMAGE_NAME and
|
||||
# ARCH_IMAGE_TAG as zeek/${ARCH_IMAGE_NAME}:${ARCH_IMAGE_TAG}-{arm64,amd64},
|
||||
# pushes them to the registry, then creates a manifest based on MANIFEST_NAME
|
||||
# and MANIFEST_TAG environment variables as zeek/${MANIFEST_NAME}:${MANIFEST_TAG}
|
||||
# including the two tags.
|
||||
#
|
||||
# REGISTRY_PREFIX can be used to prefix images with a registry. Needs
|
||||
# to end with a slash.
|
||||
set -eux
|
||||
|
||||
REGISTRY_PREFIX=${REGISTRY_PREFIX:-}
|
||||
ZEEK_IMAGE_REPO=${ZEEK_IMAGE_REPO:-zeek}
|
||||
|
||||
# Check for ending slash in registry prefix
|
||||
if [ -n "${REGISTRY_PREFIX}" ]; then
|
||||
if [[ ! "${REGISTRY_PREFIX}" =~ .+/$ ]]; then
|
||||
echo "Missing slash in: ${REGISTRY_PREFIX}"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
docker tag ${ZEEK_IMAGE_REPO}/zeek-multiarch:arm64 ${REGISTRY_PREFIX}${ZEEK_IMAGE_REPO}/${ARCH_IMAGE_NAME}:${ARCH_IMAGE_TAG}-arm64
|
||||
docker tag ${ZEEK_IMAGE_REPO}/zeek-multiarch:amd64 ${REGISTRY_PREFIX}${ZEEK_IMAGE_REPO}/${ARCH_IMAGE_NAME}:${ARCH_IMAGE_TAG}-amd64
|
||||
docker push ${REGISTRY_PREFIX}${ZEEK_IMAGE_REPO}/${ARCH_IMAGE_NAME}:${ARCH_IMAGE_TAG}-arm64
|
||||
docker push ${REGISTRY_PREFIX}${ZEEK_IMAGE_REPO}/${ARCH_IMAGE_NAME}:${ARCH_IMAGE_TAG}-amd64
|
||||
|
||||
docker manifest create ${REGISTRY_PREFIX}${ZEEK_IMAGE_REPO}/$MANIFEST_NAME:${MANIFEST_TAG} \
|
||||
${REGISTRY_PREFIX}${ZEEK_IMAGE_REPO}/${ARCH_IMAGE_NAME}:${ARCH_IMAGE_TAG}-arm64 \
|
||||
${REGISTRY_PREFIX}${ZEEK_IMAGE_REPO}/${ARCH_IMAGE_NAME}:${ARCH_IMAGE_TAG}-amd64
|
||||
|
||||
docker manifest push ${REGISTRY_PREFIX}${ZEEK_IMAGE_REPO}/$MANIFEST_NAME:${MANIFEST_TAG}
|
29
docker/builder.Dockerfile
Normal file
29
docker/builder.Dockerfile
Normal file
|
@ -0,0 +1,29 @@
|
|||
# See the file "COPYING" in the main distribution directory for copyright.
|
||||
|
||||
# Layer to build Zeek.
|
||||
FROM debian:bullseye-slim
|
||||
|
||||
# Configure system for build.
|
||||
RUN apt-get -q update \
|
||||
&& apt-get install -q -y --no-install-recommends \
|
||||
bind9 \
|
||||
bison \
|
||||
ccache \
|
||||
cmake \
|
||||
flex \
|
||||
g++ \
|
||||
gcc \
|
||||
libfl2 \
|
||||
libfl-dev \
|
||||
libmaxminddb-dev \
|
||||
libpcap-dev \
|
||||
libssl-dev \
|
||||
libz-dev \
|
||||
make \
|
||||
python3-minimal \
|
||||
python3.9-dev \
|
||||
swig \
|
||||
ninja-build \
|
||||
python3-pip \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
25
docker/final.Dockerfile
Normal file
25
docker/final.Dockerfile
Normal file
|
@ -0,0 +1,25 @@
|
|||
# See the file "COPYING" in the main distribution directory for copyright.
|
||||
|
||||
# Final layer containing all artifacts.
|
||||
FROM debian:bullseye-slim
|
||||
|
||||
RUN apt-get -q update \
|
||||
&& apt-get install -q -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
git \
|
||||
libmaxminddb0 \
|
||||
libpython3.9 \
|
||||
libpcap0.8 \
|
||||
libssl1.1 \
|
||||
libz1 \
|
||||
python3-minimal \
|
||||
python3-git \
|
||||
python3-semantic-version \
|
||||
python3-websocket \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Copy over Zeek installation from build
|
||||
COPY --from=zeek-build /usr/local/zeek /usr/local/zeek
|
||||
ENV PATH "/usr/local/zeek/bin:${PATH}"
|
||||
ENV PYTHONPATH "/usr/local/zeek/lib/zeek/python:${PYTHONPATH}"
|
Loading…
Add table
Add a link
Reference in a new issue