From fd343de35487a84ab37b5c91d5c84766845f07a6 Mon Sep 17 00:00:00 2001 From: Peter Jonas Date: Sat, 24 Aug 2024 00:50:52 +0100 Subject: [PATCH] CI Deploy: Handle differences in openssl output --- .github/workflows/build_all.yml | 16 +++++++++++++--- .github/workflows/deploy.yml | 2 +- .github/workflows/update_learn_playlists.yml | 3 ++- .../ci/release/collate_release_binaries.sh | 16 ++++++++-------- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index 0a0b4d4ce0765..0f14c9e0de47e 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -100,7 +100,17 @@ jobs: # Dummy build for testing purposes. dummy: if: ${{ contains(inputs.platforms, 'dummy') }} - runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + # Expose edge cases like different command versions, CRLF line endings, etc. + # Use same OS versions as used in real build workflows. + os: + - ubuntu-20.04 # linux_x64, backend + - ubuntu-22.04 # linux_arm32, linux_arm64 + - macos-latest + - windows-2022 # windows_x64, windows_portable + runs-on: ${{ matrix.os }} steps: - name: Clone repository uses: actions/checkout@v4 @@ -130,13 +140,13 @@ jobs: buildscripts/ci/tools/make_release_channel_env.sh -c "${MUSE_APP_BUILD_MODE}" buildscripts/ci/tools/make_revision_env.sh "$(git rev-parse --short=7 HEAD)" - buildscripts/ci/tools/make_artifact_name_env.sh "MuseScore-Dummy-${BUILD_VERSION}-x86_64.txt" + buildscripts/ci/tools/make_artifact_name_env.sh "MuseScore-Dummy-${BUILD_VERSION}-${{ matrix.os }}-${HOSTTYPE}.txt" ARTIFACT_NAME="$(<"${ARTIFACTS_DIR}/env/artifact_name.env")" echo "Hello, world!" >"${ARTIFACTS_DIR}/${ARTIFACT_NAME}" buildscripts/ci/tools/checksum.sh - UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\’' '_' <<<"MU4_${BUILD_NUMBER}_Dummy_${BUILD_BRANCH}")" + UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\’' '_' <<<"MU4_${BUILD_NUMBER}_Dummy-${{ matrix.os }}_${BUILD_BRANCH}")" echo "UPLOAD_ARTIFACT_NAME=${UPLOAD_ARTIFACT_NAME}" | tee -a "${GITHUB_ENV}" - name: Upload artifacts to GitHub uses: actions/upload-artifact@v4 diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index cf8b25496fcdd..37510776c6a97 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,7 +5,7 @@ on: inputs: platforms: description: 'Platforms to build:' - default: 'linux_arm32 linux_arm64 linux_x64 macos windows_x64 windows_portable' # TODO: backend + default: 'backend linux_arm32 linux_arm64 linux_x64 macos windows_x64 windows_portable' required: true release_type: description: 'Release type: alpha,beta,rc,stable, or any label with chars A-Za-z0-9._ for testing' diff --git a/.github/workflows/update_learn_playlists.yml b/.github/workflows/update_learn_playlists.yml index ad6ba8664dc17..a4bc3977bc579 100644 --- a/.github/workflows/update_learn_playlists.yml +++ b/.github/workflows/update_learn_playlists.yml @@ -26,14 +26,15 @@ defaults: jobs: update_playlists: - runs-on: ubuntu-latest strategy: + fail-fast: false matrix: playlist: - filename: started_playlist id: PLTYuWi2LmaPEhcwZJwFZqoyQ2xXx_maPa # - filename: advanced_playlist # old playlist no longer used # id: PL24C760637A625BB6 + runs-on: ubuntu-latest environment: name: ${{ inputs.environment }} # can be empty/blank (if so, URL will not be shown) url: https://www.youtube.com/playlist?list=${{ matrix.playlist.id }} # show on run page diff --git a/buildscripts/ci/release/collate_release_binaries.sh b/buildscripts/ci/release/collate_release_binaries.sh index 9a1f62ed36320..fd1607c2fe3dd 100755 --- a/buildscripts/ci/release/collate_release_binaries.sh +++ b/buildscripts/ci/release/collate_release_binaries.sh @@ -50,15 +50,15 @@ echo >&2 echo >&2 "Old checksums (openssl sha256):" for path in "${ARTIFACTS_DIR}/"*"/checksum.txt"; do while read -r line; do + line="${line%$'\r'}" # openssl output has CRLF line endings on Windows printf '%s\n' "${line}" >&2 - if [[ ! "${line}" =~ ^SHA256\(.*\)=\ [0-9a-f]{64}$ ]]; then + # Some versions of openssl output 'SHA2-256' instead of 'SHA256'. + if [[ ! "${line}" =~ ^SHA(2-)?256\((.*)\)=\ ([0-9a-f]{64})$ ]]; then echo >&2 "$o: Error: openssl line is badly formed: ${line}" exit 1 fi - checksum="${line##*)= }" - filename="${line%)= *}" - filename="${filename#SHA256(}" - filename="$(basename "${filename}")" + filename="$(basename "${BASH_REMATCH[2]}")" + checksum="${BASH_REMATCH[3]}" old_checksums["${filename}"]="${checksum}" done <"${path}" done @@ -74,12 +74,12 @@ echo >&2 while read -r line; do # sha256sum prepends filenames with space ( ) if opened in text mode # or asterisk (*) if opened in binary mode. - if [[ ! "${line}" =~ ^[0-9a-f]{64}\ [\ *][^/]+$ ]]; then + if [[ ! "${line}" =~ ^([0-9a-f]{64})\ [\ *]([^/]+)$ ]]; then echo >&2 "$o: Error: sha256sum line is badly formed: ${line}" exit 1 fi - checksum="${line%% *}" - filename="${line#* ?}" + checksum="${BASH_REMATCH[1]}" + filename="${BASH_REMATCH[2]}" new_checksums["${filename}"]="${checksum}" done <"${CHECKSUMS_FILE}"