Skip to content

Commit ea17618

Browse files
committed
Merge bitcoin/bitcoin#33480: ci: Turn CentOS config into Alpine musl config
444409f ci: Reduce Alpine musl task to md runner size (MarcoFalke) fa6b2e9 ci: Turn centos config into alpine musl config (MarcoFalke) Pull request description: Fixes bitcoin/bitcoin#33437 Historically, the centos task was added to add CI coverage for old packages and 32-bit depends builds, but both are now covered by different tasks. The CentOS task aligns with Ubuntu/Debian CI tasks in terms of libc usage, but (slightly) differs in package naming and update philosophy. I am not aware of the task ever discovering a centos-related issue, so it seems fine to recycle it into an Alpine Linux task. The main difference would be that musl libc is now used. Also, busybox is used in Alpine, so in theory the busybox install could be removed from the arm CI task in the future. Packaging considerations: All packages should roughly be the same (gcc remains at version 14, python remains at version 3.12, etc). Also, all packages are from the Alpine main track, coming with 2 years of support. The only exception is the py3-pip package (https://pkgs.alpinelinux.org/packages?name=py3-pip&branch=v3.22&repo=&arch=riscv64) from the community track, however, I don't expect any issues arising from that. ACKs for top commit: janb84: reACK 444409f willcl-ark: ACK 444409f Tree-SHA512: fd1a1da0fd766591e44a57dbdb84f9b3b47ca92113a429bba139ee5fef54714b8fe509c321e7b3a470c29b4af7d9eab9786e1660b9effb862ecea52824f458aa
2 parents b1f8a13 + 444409f commit ea17618

File tree

5 files changed

+18
-14
lines changed

5 files changed

+18
-14
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -501,11 +501,11 @@ jobs:
501501
timeout-minutes: 120
502502
file-env: './ci/test/00_setup_env_native_previous_releases.sh'
503503

504-
- name: 'CentOS, depends, gui'
505-
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-lg'
504+
- name: 'Alpine (musl), depends, gui'
505+
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md'
506506
fallback-runner: 'ubuntu-24.04'
507507
timeout-minutes: 120
508-
file-env: './ci/test/00_setup_env_native_centos.sh'
508+
file-env: './ci/test/00_setup_env_native_alpine_musl.sh'
509509

510510
- name: 'tidy'
511511
cirrus-runner: 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md'

ci/test/00_setup_env_native_centos.sh renamed to ci/test/00_setup_env_native_alpine_musl.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66

77
export LC_ALL=C.UTF-8
88

9-
export CONTAINER_NAME=ci_native_centos
10-
export CI_IMAGE_NAME_TAG="quay.io/centos/centos:stream10"
11-
export CI_BASE_PACKAGES="gcc-c++ glibc-devel libstdc++-devel ccache make ninja-build git python3 python3-pip which patch xz procps-ng rsync coreutils bison e2fsprogs cmake dash"
12-
export PIP_PACKAGES="pyzmq pycapnp"
9+
export CONTAINER_NAME=ci_native_alpine_musl
10+
export CI_IMAGE_NAME_TAG="mirror.gcr.io/alpine:3.22"
11+
export CI_BASE_PACKAGES="build-base musl-dev pkgconf curl ccache make ninja git python3 py3-pip which patch xz procps rsync util-linux bison e2fsprogs cmake dash linux-headers"
12+
export PIP_PACKAGES="--break-system-packages pyzmq pycapnp"
1313
export DEP_OPTS="DEBUG=1"
1414
export GOAL="install"
1515
export BITCOIN_CONFIG="\

ci/test/01_base_install.sh

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,17 @@ if [ -n "${APT_LLVM_V}" ]; then
3232
)
3333
fi
3434

35-
if [[ $CI_IMAGE_NAME_TAG == *centos* ]]; then
36-
bash -c "dnf -y install epel-release"
37-
# The ninja-build package is available in the CRB repository.
38-
bash -c "dnf -y --allowerasing --enablerepo crb install $CI_BASE_PACKAGES $PACKAGES"
35+
if [[ $CI_IMAGE_NAME_TAG == *alpine* ]]; then
36+
${CI_RETRY_EXE} apk update
37+
# shellcheck disable=SC2086
38+
${CI_RETRY_EXE} apk add --no-cache $CI_BASE_PACKAGES $PACKAGES
3939
elif [ "$CI_OS_NAME" != "macos" ]; then
4040
if [[ -n "${APPEND_APT_SOURCES_LIST}" ]]; then
4141
echo "${APPEND_APT_SOURCES_LIST}" >> /etc/apt/sources.list
4242
fi
4343
${CI_RETRY_EXE} apt-get update
44-
${CI_RETRY_EXE} bash -c "apt-get install --no-install-recommends --no-upgrade -y $PACKAGES $CI_BASE_PACKAGES"
44+
# shellcheck disable=SC2086
45+
${CI_RETRY_EXE} apt-get install --no-install-recommends --no-upgrade -y $PACKAGES $CI_BASE_PACKAGES
4546
fi
4647

4748
if [ -n "${APT_LLVM_V}" ]; then

ci/test/03_test_script.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ else
9999
fi
100100

101101
if [ -z "$NO_DEPENDS" ]; then
102-
if [[ $CI_IMAGE_NAME_TAG == *centos* ]]; then
103-
SHELL_OPTS="CONFIG_SHELL=/bin/dash"
102+
if [[ $CI_IMAGE_NAME_TAG == *alpine* ]]; then
103+
SHELL_OPTS="CONFIG_SHELL=/usr/bin/dash"
104104
else
105105
SHELL_OPTS="CONFIG_SHELL="
106106
fi

ci/test_imagefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,7 @@ ENV BASE_ROOT_DIR=${BASE_ROOT_DIR}
1717
COPY ./ci/retry/retry /usr/bin/retry
1818
COPY ./ci/test/00_setup_env.sh ./${FILE_ENV} ./ci/test/01_base_install.sh /ci_container_base/ci/test/
1919

20+
# Bash is required, so install it when missing
21+
RUN sh -c "bash -c 'true' || ( apk update && apk add --no-cache bash )"
22+
2023
RUN ["bash", "-c", "cd /ci_container_base/ && set -o errexit && source ./ci/test/00_setup_env.sh && ./ci/test/01_base_install.sh"]

0 commit comments

Comments
 (0)