mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 14:59:39 -04:00
ci: add option for running tests without volume
DANGER_CI_ON_HOST_CACHE_FOLDERS if set will mount caches in directories on the host rather than in docker volumes. Supports saving and restoring caches on Github Actions.
This commit is contained in:
parent
2d21060af8
commit
4ecbbd9b7f
2 changed files with 26 additions and 4 deletions
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
|
@ -313,6 +313,7 @@ jobs:
|
||||||
timeout-minutes: 120
|
timeout-minutes: 120
|
||||||
env:
|
env:
|
||||||
FILE_ENV: "./ci/test/00_setup_env_native_asan.sh"
|
FILE_ENV: "./ci/test/00_setup_env_native_asan.sh"
|
||||||
|
DANGER_CI_ON_HOST_CACHE_FOLDERS: 1
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
@ -320,6 +321,9 @@ jobs:
|
||||||
- name: Set Ccache directory
|
- name: Set Ccache directory
|
||||||
run: echo "CCACHE_DIR=${RUNNER_TEMP}/ccache_dir" >> "$GITHUB_ENV"
|
run: echo "CCACHE_DIR=${RUNNER_TEMP}/ccache_dir" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
|
- name: Set base root directory
|
||||||
|
run: echo "BASE_ROOT_DIR=${RUNNER_TEMP}" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Restore Ccache cache
|
- name: Restore Ccache cache
|
||||||
id: ccache-cache
|
id: ccache-cache
|
||||||
uses: actions/cache/restore@v4
|
uses: actions/cache/restore@v4
|
||||||
|
|
|
@ -30,6 +30,24 @@ if [ -z "$DANGER_RUN_CI_ON_HOST" ]; then
|
||||||
docker volume create "${CONTAINER_NAME}_depends_sources" || true
|
docker volume create "${CONTAINER_NAME}_depends_sources" || true
|
||||||
docker volume create "${CONTAINER_NAME}_previous_releases" || true
|
docker volume create "${CONTAINER_NAME}_previous_releases" || true
|
||||||
|
|
||||||
|
CI_CCACHE_MOUNT="type=volume,src=${CONTAINER_NAME}_ccache,dst=$CCACHE_DIR"
|
||||||
|
CI_DEPENDS_MOUNT="type=volume,src=${CONTAINER_NAME}_depends,dst=$DEPENDS_DIR/built"
|
||||||
|
CI_DEPENDS_SOURCES_MOUNT="type=volume,src=${CONTAINER_NAME}_depends_sources,dst=$DEPENDS_DIR/sources"
|
||||||
|
CI_PREVIOUS_RELEASES_MOUNT="type=volume,src=${CONTAINER_NAME}_previous_releases,dst=$PREVIOUS_RELEASES_DIR"
|
||||||
|
|
||||||
|
if [ "$DANGER_CI_ON_HOST_CACHE_FOLDERS" ]; then
|
||||||
|
# ensure the directories exist
|
||||||
|
mkdir -p "${CCACHE_DIR}"
|
||||||
|
mkdir -p "${DEPENDS_DIR}/built"
|
||||||
|
mkdir -p "${DEPENDS_DIR}/sources"
|
||||||
|
mkdir -p "${PREVIOUS_RELEASES_DIR}"
|
||||||
|
|
||||||
|
CI_CCACHE_MOUNT="type=bind,src=${CCACHE_DIR},dst=$CCACHE_DIR"
|
||||||
|
CI_DEPENDS_MOUNT="type=bind,src=${DEPENDS_DIR}/built,dst=$DEPENDS_DIR/built"
|
||||||
|
CI_DEPENDS_SOURCES_MOUNT="type=bind,src=${DEPENDS_DIR}/sources,dst=$DEPENDS_DIR/sources"
|
||||||
|
CI_PREVIOUS_RELEASES_MOUNT="type=bind,src=${PREVIOUS_RELEASES_DIR},dst=$PREVIOUS_RELEASES_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
docker network create --ipv6 --subnet 1111:1111::/112 ci-ip6net || true
|
docker network create --ipv6 --subnet 1111:1111::/112 ci-ip6net || true
|
||||||
|
|
||||||
if [ -n "${RESTART_CI_DOCKER_BEFORE_RUN}" ] ; then
|
if [ -n "${RESTART_CI_DOCKER_BEFORE_RUN}" ] ; then
|
||||||
|
@ -52,10 +70,10 @@ if [ -z "$DANGER_RUN_CI_ON_HOST" ]; then
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
CI_CONTAINER_ID=$(docker run --cap-add LINUX_IMMUTABLE $CI_CONTAINER_CAP --rm --interactive --detach --tty \
|
CI_CONTAINER_ID=$(docker run --cap-add LINUX_IMMUTABLE $CI_CONTAINER_CAP --rm --interactive --detach --tty \
|
||||||
--mount "type=bind,src=$BASE_READ_ONLY_DIR,dst=$BASE_READ_ONLY_DIR,readonly" \
|
--mount "type=bind,src=$BASE_READ_ONLY_DIR,dst=$BASE_READ_ONLY_DIR,readonly" \
|
||||||
--mount "type=volume,src=${CONTAINER_NAME}_ccache,dst=$CCACHE_DIR" \
|
--mount "${CI_CCACHE_MOUNT}" \
|
||||||
--mount "type=volume,src=${CONTAINER_NAME}_depends,dst=$DEPENDS_DIR/built" \
|
--mount "${CI_DEPENDS_MOUNT}" \
|
||||||
--mount "type=volume,src=${CONTAINER_NAME}_depends_sources,dst=$DEPENDS_DIR/sources" \
|
--mount "${CI_DEPENDS_SOURCES_MOUNT}" \
|
||||||
--mount "type=volume,src=${CONTAINER_NAME}_previous_releases,dst=$PREVIOUS_RELEASES_DIR" \
|
--mount "${CI_PREVIOUS_RELEASES_MOUNT}" \
|
||||||
--env-file /tmp/env-$USER-$CONTAINER_NAME \
|
--env-file /tmp/env-$USER-$CONTAINER_NAME \
|
||||||
--name "$CONTAINER_NAME" \
|
--name "$CONTAINER_NAME" \
|
||||||
--network ci-ip6net \
|
--network ci-ip6net \
|
||||||
|
|
Loading…
Add table
Reference in a new issue