From 1daa729d5930da0c545e577777ca78ea9bbfd35f Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Tue, 13 Aug 2024 13:12:18 +0200 Subject: [PATCH] build: try to cache source tarballs --- .docker/build-linux.sh | 11 +---------- .github/workflows/build.yml | 17 +---------------- CMakeLists.txt | 8 +++++--- 3 files changed, 7 insertions(+), 29 deletions(-) diff --git a/.docker/build-linux.sh b/.docker/build-linux.sh index 84ab0a22..3e879c7d 100755 --- a/.docker/build-linux.sh +++ b/.docker/build-linux.sh @@ -44,12 +44,7 @@ cd "$HOME" rm -rf dwarfs dwarfs-* if [[ "$BUILD_FROM_TARBALL" == "1" ]]; then - # delete all but the latest tarball - ls -1 -r --sort=time /workspace/dwarfs-*.tar.zst | tail -n +2 | while read -r tarball; do - echo "deleting old tarball: $tarball" - rm -f "$tarball" - done - tar xf /workspace/dwarfs-*.tar.zst + tar xf "/artifacts/cache/dwarfs-source-${GITHUB_RUN_NUMBER}.tar.zst" ln -s dwarfs-* dwarfs else git config --global --add safe.directory /workspace @@ -309,10 +304,6 @@ else elif [[ "-$BUILD_TYPE-" == *-source-* ]]; then $BUILD_TOOL package_source $BUILD_TOOL copy_source_artifacts - rm -rf /tmp-runner/artifacts - mkdir -p /tmp-runner/artifacts - cp source-artifacts.env /tmp-runner - cp dwarfs-*.tar.zst /tmp-runner/artifacts fi if [[ "-$BUILD_TYPE-" != *-[at]san-* ]] && \ diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9641fcc4..fb284d23 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -136,17 +136,6 @@ jobs: --env GITHUB_RUN_ATTEMPT \ dwarfs-linux-build-arch - - name: Prepare Artifact Upload - run: cat ${{ runner.temp }}/source-artifacts.env >> $GITHUB_ENV - - - name: Upload Source Package - uses: actions/upload-artifact@v4 - with: - name: dwarfs-source - path: ${{ runner.temp }}/artifacts/${{ env.source_tarball }} - if-no-files-found: error - compression-level: 0 - linux-src: needs: package-source @@ -213,11 +202,6 @@ jobs: fetch-depth: '0' ref: ${{ github.ref }} - - name: Download Source Tarball - uses: actions/download-artifact@v4 - with: - name: dwarfs-source - - name: Build Docker Image run: | docker build \ @@ -235,6 +219,7 @@ jobs: --mount type=bind,source=${{ runner.temp }},target=/tmp-runner \ --mount type=bind,source=/home/mhx/github-ccache,target=/ccache \ --mount type=bind,source=/home/mhx/github-local,target=/local \ + --mount type=bind,source=/mnt/opensource/artifacts/dwarfs,target=/artifacts \ --env BUILD_FROM_TARBALL=1 \ --env BUILD_TYPE=${{ matrix.build_type }} \ --env BUILD_ARCH=${{ matrix.arch }} \ diff --git a/CMakeLists.txt b/CMakeLists.txt index 3bf0e79f..f88bf3e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -855,12 +855,14 @@ if(DEFINED ENV{GITHUB_REF_TYPE}) set(PACKAGE_EXT ".tar.zst") endif() - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/source-artifacts.env" - "source_tarball=${CMAKE_PROJECT_NAME}-${PRJ_VERSION_FULL}${PACKAGE_EXT}\n") + set(SOURCE_TARBALL "${CMAKE_PROJECT_NAME}-${PRJ_VERSION_FULL}${PACKAGE_EXT}") add_custom_target(copy_source_artifacts COMMAND ${CMAKE_COMMAND} -E make_directory ${ARTIFACTS_FULL_PATH} - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${PRJ_VERSION_FULL}${PACKAGE_EXT} ${ARTIFACTS_FULL_PATH} + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_TARBALL} ${ARTIFACTS_FULL_PATH} + COMMAND ${CMAKE_COMMAND} -E make_directory ${DWARFS_ARTIFACTS_DIR}/cache + COMMAND ${CMAKE_COMMAND} -E create_symlink ../${ARTIFACTS_SUBDIR}/${SOURCE_TARBALL} + ${DWARFS_ARTIFACTS_DIR}/cache/dwarfs-source-$ENV{GITHUB_RUN_NUMBER}${PACKAGE_EXT} ) if(STATIC_BUILD_DO_NOT_USE OR WIN32)