diff --git a/Jenkinsfile b/Jenkinsfile index 7d7a2e8..331002d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,4 +1,5 @@ library 'magic-butler-catalogue' +def TRIGGER_PATTERN = '.*@logdnabot.*' pipeline { agent none @@ -8,15 +9,16 @@ pipeline { ansiColor 'xterm' } triggers { - issueCommentTrigger('.*test this please.*') + + issueCommentTrigger(TRIGGER_PATTERN) parameterizedCron( env.BRANCH_NAME ==~ 'main' ? 'H 8 * * 7 % PUBLISH_GCR_IMAGE=true;PUBLISH_ICR_IMAGE=true' : '' ) } environment { DOCKER_BUILDKIT='1' - SCCACHE_BUCKET='logdna-sccache-us-east-1' - SCCACHE_REGION='us-east-1' + SCCACHE_BUCKET='logdna-sccache-us-east-2' + SCCACHE_REGION='us-east-2' } parameters { booleanParam(name: 'PUBLISH_GCR_IMAGE', description: 'Publish docker image to Google Container Registry (GCR)', defaultValue: false) @@ -31,7 +33,8 @@ pipeline { } } steps { - error("A maintainer needs to approve this PR with a comment of '${TRIGGER_STRING}'") + + error("A maintainer needs to approve this PR for with comment containing ${TRIGGER_PATTERN}") } } @@ -49,8 +52,8 @@ pipeline { // Host architecture of the built image axis { name 'PLATFORM' - // Support for x86_64 and arm64 for Mac M1s/AWS graviton devs/builders - values 'linux/amd64', 'linux/arm64' + // Support for x86_64 and arm64 and s390x for Mac M1s/AWS graviton devs/builders + values 'linux/amd64', 'linux/arm64', 'linux/s390x' } } agent { @@ -164,12 +167,12 @@ pipeline { // Target ISA for musl cross comp toolchain and precompiled libs axis { name 'CROSS_COMPILER_TARGET_ARCH' - values 'x86_64', 'aarch64' + values 'x86_64', 'aarch64', 's390x' } // Host architecture of the built image axis { name 'PLATFORM' - values 'linux/amd64', 'linux/arm64' + values 'linux/amd64', 'linux/arm64', 'linux/s390x' } } agent { @@ -312,7 +315,7 @@ pipeline { // Target ISA for musl cross comp toolchain and precompiled libs axis { name 'CROSS_COMPILER_TARGET_ARCH' - values 'x86_64', 'aarch64' + values 'x86_64', 'aarch64', 's390x' } } agent { @@ -559,6 +562,15 @@ def createMultiArchImageManifest(Map config = [:]){ , image_suffix: "${config.image_suffix}-linux-arm64" , append_git_sha: append_git_sha ) - sh("docker manifest create ${manifest_name} --amend ${arm64_image_name} --amend ${amd64_image_name}") + def s390x_image_name = generateImageName( + repo_base: repo_base + , name: config.name + , variant_base: config.variant_base + , variant_version: config.variant_version + , version: config.version + , image_suffix: "${config.image_suffix}-linux-s390x" + , append_git_sha: append_git_sha + ) + sh("docker manifest create ${manifest_name} --amend ${arm64_image_name} --amend ${amd64_image_name} --amend ${s390x_image_name}") return manifest_name } diff --git a/rust/debian/Dockerfile b/rust/debian/Dockerfile index c153139..e9aa489 100644 --- a/rust/debian/Dockerfile +++ b/rust/debian/Dockerfile @@ -1,4 +1,4 @@ -ARG CROSS_COMPILER_TARGET_ARCH=x86_64 +ARG CROSS_COMPILER_TARGET_ARCH=blank ARG BASE_IMAGE=logdna/build-images/rust-buster-1-stable-base-${CROSS_COMPILER_TARGET_ARCH} # Image that runs natively on the BUILDPLATFORM to produce cross compile @@ -29,6 +29,8 @@ ENV CC_aarch64_unknown_linux_musl=clang ENV CFLAGS_aarch64_unknown_linux_musl="-isystem /usr/include/aarch64-linux-musl" ENV CC_x86_64_unknown_linux_musl=clang ENV CFLAGS_x86_64_unknown_linux_musl="-isystem /usr/include/x86_64-linux-musl" +ENV CC_s390x_unknown_linux_musl=clang +ENV CFLAGS_s390x_unknown_linux_musl="-isystem /usr/include/s390x-linux-musl" RUN --mount=type=secret,id=aws,target=/root/.aws/credentials \ mkdir -p /out/tools /usr/local/bin/ && \ @@ -271,10 +273,13 @@ RUN mkdir -p /usr/local/rocksdb/${CROSS_COMPILER_TARGET_ARCH}-linux-musl/include RUN printf "#!/usr/bin/env bash\nclang -fuse-ld=lld --target=aarch64-unknown-linux-musl \$@" > /usr/local/bin/aarch64-unknown-linux-musl-clang && \ chmod +x /usr/local/bin/aarch64-unknown-linux-musl-clang && \ printf "#!/usr/bin/env bash\nclang -fuse-ld=lld --target=x86_64-unknown-linux-musl \$@" > /usr/local/bin/x86_64-unknown-linux-musl-clang && \ - chmod +x /usr/local/bin/x86_64-unknown-linux-musl-clang + chmod +x /usr/local/bin/x86_64-unknown-linux-musl-clang && \ + printf "#!/usr/bin/env bash\nclang -fuse-ld=lld --target=s390x-unknown-linux-musl \$@" > /usr/local/bin/s390x-unknown-linux-musl-clang && \ + chmod +x /usr/local/bin/s390x-unknown-linux-musl-clang ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER="/usr/local/bin/aarch64-unknown-linux-musl-clang" ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER="/usr/local/bin/x86_64-unknown-linux-musl-clang" +ENV CARGO_TARGET_s390x_UNKNOWN_LINUX_MUSL_LINKER="/usr/local/bin/s390x-unknown-linux-musl-clang" ENV XWIN_CACHE_DIR="${CARGO_HOME}/xwin" ENV XWIN_TOOLKIT_BIN_PATH="/usr/local/bin" @@ -303,6 +308,7 @@ ENV STATIC_RUSTFLAGS="${COMMON_RUSTFLAGS} -Ctarget-feature=+crt-static -Clink-ar ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="${STATIC_RUSTFLAGS} -Clink-args=--target=aarch64-unknown-linux-musl" ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="${STATIC_RUSTFLAGS} -Clink-args=--target=x86_64-unknown-linux-musl" +ENV CARGO_TARGET_s390x_UNKNOWN_LINUX_MUSL_RUSTFLAGS="${STATIC_RUSTFLAGS} -Clink-args=--target=s390x-unknown-linux-musl" ENV CC_aarch64_unknown_linux_musl="clang" ENV CFLAGS_aarch64_unknown_linux_musl="--target=aarch64-unknown-linux-musl -fuse-ld=lld -static -fPIC -nostdlib -nodefaultlibs -nostdinc -isystem $LLVM_SYSROOT/usr/lib/clang/${LLVM_VERSION}/include/ -isystem $LLVM_SYSROOT/usr/aarch64-unknown-linux-musl/include/ -isystem $LLVM_SYSROOT/usr/include/linux/ -L ${LLVM_SYSROOT}/usr/aarch64-unknown-linux-musl/lib -lc -L ${LLVM_SYSROOT}/usr/lib/linux/ -lclang_rt.builtins-aarch64" @@ -314,6 +320,11 @@ ENV CFLAGS_x86_64_unknown_linux_musl="--target=x86_64-unknown-linux-musl -fuse-l ENV CXX_x86_64_unknown_linux_musl="clang++" ENV CXXFLAGS_x86_64_unknown_linux_musl="--target=x86_64-unknown-linux-musl -fuse-ld=lld -nostdinc -static-libstdc++ --stdlib=c++ --rtlib=compiler-rt -nodefaultlibs -nostdinc++ -isystem $LLVM_SYSROOT/usr/include/c++/v1/ -isystem $LLVM_SYSROOT/usr/x86_64-unknown-linux-musl/include/ -isystem $LLVM_SYSROOT/usr/lib/clang/${LLVM_VERSION}/include/ -isystem $LLVM_SYSROOT/usr/x86_64-unknown-linux-musl/include/ -isystem $LLVM_SYSROOT/usr/include/linux/ " +ENV CC_s390x_unknown_linux_musl="clang" +ENV CFLAGS_s390x_unknown_linux_musl="--target=s390x-unknown-linux-musl -fuse-ld=lld -static -fPIC -nostdlib -nodefaultlibs -nostdinc -isystem $LLVM_SYSROOT/usr/lib/clang/${LLVM_VERSION}/include/ -isystem $LLVM_SYSROOT/usr/s390x-unknown-linux-musl/include/ -isystem $LLVM_SYSROOT/usr/include/linux/ -L ${LLVM_SYSROOT}/usr/x86_64-unknown-linux-musl/lib -lc -L ${LLVM_SYSROOT}/usr/lib/linux/ -lclang_rt.builtins-x86_64" +ENV CXX_s390x_unknown_linux_musl="clang++" +ENV CXXFLAGS_s390x_unknown_linux_musl="--target=s390x-unknown-linux-musl -fuse-ld=lld -nostdinc -static-libstdc++ --stdlib=c++ --rtlib=compiler-rt -nodefaultlibs -nostdinc++ -isystem $LLVM_SYSROOT/usr/include/c++/v1/ -isystem $LLVM_SYSROOT/usr/s390x-unknown-linux-musl/include/ -isystem $LLVM_SYSROOT/usr/lib/clang/${LLVM_VERSION}/include/ -isystem $LLVM_SYSROOT/usr/s390x-unknown-linux-musl/include/ -isystem $LLVM_SYSROOT/usr/include/linux/ " + ENV PCRE2_SYS_STATIC=1 ENV SYSTEMD_LIB_DIR="/lib/${CROSS_COMPILER_TARGET_ARCH}-linux-gnu" diff --git a/rust/debian/Dockerfile.base b/rust/debian/Dockerfile.base index cec1e08..3664e18 100644 --- a/rust/debian/Dockerfile.base +++ b/rust/debian/Dockerfile.base @@ -25,6 +25,7 @@ ENV amd64=x86_64 ENV arm64=aarch64 ENV x86_64=amd64 ENV aarch64=arm64 +ENV s390x=s390x ENV LANG en_US.UTF-8 ENV LANGUAGE en_US @@ -109,6 +110,11 @@ ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER=clang ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_AR=llvm-ar ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-Clink-args=-fuse-ld=lld \ -Clink-args=--target=x86_64-unknown-linux-musl" + +ENV CARGO_TARGET_s390x_UNKNOWN_LINUX_MUSL_LINKER=clang +ENV CARGO_TARGET_s390x_UNKNOWN_LINUX_MUSL_AR=llvm-ar +ENV CARGO_TARGET_s390x_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-Clink-args=-fuse-ld=lld \ + -Clink-args=--target=s390x-unknown-linux-musl" # Teach cargo to use clang as the linker driver ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=clang ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_AR=llvm-ar @@ -116,6 +122,9 @@ ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_AR=llvm-ar ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=clang ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_AR=llvm-ar +ENV CARGO_TARGET_s390x_UNKNOWN_LINUX_GNU_LINKER=clang +ENV CARGO_TARGET_s390x_UNKNOWN_LINUX_GNU_AR=llvm-ar + # Set up basic gnu C configuration for to use clang as the linker driver, llvm-ar, ETC ENV CC_aarch64_unknown_linux_gnu="clang" ENV CFLAGS_aarch64_unknown_linux_gnu="--target=aarch64-unknown-linux-gnu -fuse-ld=lld -fPIC" @@ -127,6 +136,11 @@ ENV CFLAGS_x86_64_unknown_linux_gnu="--target=x86_64-unknown-linux-gnu -fuse-ld= ENV CXX_x86_64_unknown_linux_gnu="clang++" ENV CXXFLAGS_x86_64_unknown_linux_gnu="--target=x86_64-unknown-linux-gnu -fuse-ld=lld -fPIC" +ENV CC_s390x_unknown_linux_gnu="clang" +ENV CFLAGS_s390x_unknown_linux_gnu="--target=s390x-unknown-linux-gnu -fuse-ld=lld -fPIC" +ENV CXX_s390x_unknown_linux_gnu="clang++" +ENV CXXFLAGS_s390x_unknown_linux_gnu="--target=s390x-unknown-linux-gnu -fuse-ld=lld -fPIC" + ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse CMD ["bash"]