summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@qt.io>2021-11-29 17:21:09 +0100
committerCristian Adam <cristian.adam@qt.io>2021-11-30 09:54:45 +0000
commit4a41f97a48e6ff614fa04529af5f1b944eae76de (patch)
tree6d8f318bfcef05815cfb50d484ef9d2f294dce91 /.github
parentbcc0160ea509450fa6177856d7b19202cc10bdda (diff)
downloadqt-creator-4a41f97a48e6ff614fa04529af5f1b944eae76de.tar.gz
GitHub Actions: Store ccache storage directory as artifact
GitHub Actions cache action uses the branch name to scope the file caching, which when using with a gerrit bot can lead to cache misses. By using the cache storage as an artifact we can always get the artifacts if previous jobs created them. By upgrading to v2 of actions/download/upload artifact we remove the v1 problem of the upload action that creates a directory name with the name of the artifact, which leads to failed release uploads. Change-Id: I8cb8c3242b58f709f51202852ad45d42b833fa84 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/build_cmake.yml84
1 files changed, 57 insertions, 27 deletions
diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml
index 99f567c45f..ec72559bb5 100644
--- a/.github/workflows/build_cmake.yml
+++ b/.github/workflows/build_cmake.yml
@@ -354,34 +354,54 @@ jobs:
message("::set-output name=elfutils_dir::${elfutils_dir}")
- name: Download ccache
- id: ccache
shell: cmake -P {0}
run: |
set(ccache_url "https://github.com/cristianadam/ccache/releases/download/v$ENV{CCACHE_VERSION}/${{ runner.os }}.tar.xz")
file(DOWNLOAD "${ccache_url}" ./ccache.tar.xz SHOW_PROGRESS)
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf ./ccache.tar.xz)
- - name: Prepare ccache timestamp
- id: ccache_cache_timestamp
+ - name: Prepare ccache archive name
+ id: ccache
shell: cmake -P {0}
run: |
- string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
- message("::set-output name=timestamp::${current_date}")
-
file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}" github_workspace)
include(${github_workspace}/cmake/QtCreatorIDEBranding.cmake)
string(REPLACE "." ";" IDE_VERSION_LIST ${IDE_VERSION_DISPLAY})
list(GET IDE_VERSION_LIST 0 IDE_VERSION_MAJOR)
- message("::set-output name=ide_major_version::${IDE_VERSION_MAJOR}")
-
+ message("::set-output name=archive_name::ccache-${{ matrix.config.os }}-${{ matrix.config.cc }}-qtc${IDE_VERSION_MAJOR}")
- - name: ccache cache files
- uses: actions/cache@v1
- with:
- path: .ccache
- key: ${{ matrix.config.name }}-ccache-${{ steps.ccache_cache_timestamp.outputs.ide_major_version }}-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
- restore-keys: |
- ${{ matrix.config.name }}-ccache-${{ steps.ccache_cache_timestamp.outputs.ide_major_version }}
+ - name: Download ccache archive
+ shell: cmake -P {0}
+ run: |
+ file(WRITE $ENV{GITHUB_WORKSPACE}/netrc.txt
+ "default login runneradmin password ${{ secrets.GITHUB_TOKEN }}")
+ file(
+ DOWNLOAD "https://api.github.com/repos/${{ github.repository }}/actions/artifacts"
+ HTTPHEADER "Accept: application/vnd.github.v3+json"
+ NETRC_FILE "$ENV{GITHUB_WORKSPACE}/netrc.txt"
+ NETRC REQUIRED
+ SHOW_PROGRESS
+ artifacts.json)
+ file(READ artifacts.json artifacts_json)
+
+ string(JSON artifacts_length LENGTH "${artifacts_json}" "artifacts")
+ math(EXPR artifacts_length "${artifacts_length} - 1")
+ foreach(idx RANGE 0 ${artifacts_length})
+ string(JSON artifact_js GET "${artifacts_json}" "artifacts" ${idx})
+ string(JSON name GET "${artifact_js}" "name")
+ if ("${name}" STREQUAL "${{ steps.ccache.outputs.archive_name }}")
+ string(JSON download_url GET "${artifact_js}" "archive_download_url")
+ file(DOWNLOAD "${download_url}"
+ "${{ steps.ccache.outputs.archive_name }}.zip"
+ NETRC_FILE "$ENV{GITHUB_WORKSPACE}/netrc.txt"
+ NETRC REQUIRED
+ SHOW_PROGRESS)
+ execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf "${{ steps.ccache.outputs.archive_name }}.zip")
+ file(MAKE_DIRECTORY .ccache)
+ execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "../${{ steps.ccache.outputs.archive_name }}.tar" WORKING_DIRECTORY .ccache)
+ break()
+ endif()
+ endforeach()
- name: Install system libs
shell: cmake -P {0}
@@ -538,38 +558,48 @@ jobs:
endif()
- name: Upload
- uses: actions/upload-artifact@v1
+ uses: actions/upload-artifact@v2
with:
path: build/qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
- name: Upload Devel
- uses: actions/upload-artifact@v1
+ uses: actions/upload-artifact@v2
with:
path: build/qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
- name: Upload wininterrupt
if: runner.os == 'Windows'
- uses: actions/upload-artifact@v1
+ uses: actions/upload-artifact@v2
with:
path: build/wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
name: wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
- name: Upload qtcreatorcdbext
if: runner.os == 'Windows' && matrix.config.is_msvc
- uses: actions/upload-artifact@v1
+ uses: actions/upload-artifact@v2
with:
path: build/qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
name: qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
- name: Upload disk image
if: runner.os == 'macOS'
- uses: actions/upload-artifact@v1
+ uses: actions/upload-artifact@v2
with:
path: build/qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
name: qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
+ - name: Create ccache archive
+ working-directory: .ccache
+ run: cmake -E tar cf ../${{ steps.ccache.outputs.archive_name }}.tar .
+
+ - name: Upload ccache archive
+ uses: actions/upload-artifact@v2
+ with:
+ path: ./${{ steps.ccache.outputs.archive_name }}.tar
+ name: ${{ steps.ccache.outputs.archive_name }}
+
release:
if: contains(github.ref, 'tags/v')
runs-on: ubuntu-latest
@@ -591,7 +621,7 @@ jobs:
run: |
echo "${{ steps.create_release.outputs.upload_url }}" > ./upload_url
- - uses: actions/upload-artifact@v1
+ - uses: actions/upload-artifact@v2
with:
path: ./upload_url
name: upload_url
@@ -624,40 +654,40 @@ jobs:
steps:
- name: Download artifact
- uses: actions/download-artifact@v1
+ uses: actions/download-artifact@v2
with:
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
path: ./
- name: Download Devel artifact
- uses: actions/download-artifact@v1
+ uses: actions/download-artifact@v2
with:
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
path: ./
- name: Download wininterrupt artifact
if: contains(matrix.config.artifact, 'Windows')
- uses: actions/download-artifact@v1
+ uses: actions/download-artifact@v2
with:
name: wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
path: ./
- name: Download qtcreatorcdbext artifact
if: matrix.config.artifact == 'Windows-MSVC'
- uses: actions/upload-artifact@v1
+ uses: actions/upload-artifact@v2
with:
name: qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
path: ./
- name: Download disk image artifact
if: matrix.config.artifact == 'macOS'
- uses: actions/upload-artifact@v1
+ uses: actions/upload-artifact@v2
with:
name: qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
path: ./
- name: Download URL
- uses: actions/download-artifact@v1
+ uses: actions/download-artifact@v2
with:
name: upload_url
path: ./