From 3684943d46ae490db1751d0199604a1fa6784a2f Mon Sep 17 00:00:00 2001 From: cbjeukendrup <48658420+cbjeukendrup@users.noreply.github.com> Date: Sat, 21 Sep 2024 15:31:26 +0200 Subject: [PATCH 1/2] CI cleanup Backport of #24847 --- .github/workflows/build_linux.yml | 209 +++++++-- .github/workflows/build_macos.yml | 195 +++++--- .github/workflows/build_windows.yml | 429 ++++++++++++------ .github/workflows/check_visual_tests.yml | 5 +- .github/workflows/update_release_info.yml | 10 +- build/ci/linux/setup.sh | 12 +- build/ci/release/get_file_from_s3.sh | 2 +- .../release/make_previous_releases_notes.sh | 12 +- build/ci/release/push_file_to_s3.sh | 2 +- build/ci/tools/setup_ccache_config.sh | 36 ++ 10 files changed, 638 insertions(+), 274 deletions(-) create mode 100644 build/ci/tools/setup_ccache_config.sh diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index b11fc8938b9c6..0a4b2e9cfce23 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -5,11 +5,9 @@ on: branches: - 3.x pull_request: - branches: - - 3.x - schedule: - - cron: '0 4 */1 * *' # At 04:00 on every day-of-month + - cron: '0 3 */1 */1 *' # At 03:00 on every day-of-month for master + - cron: '0 5 */1 */1 *' # At 05:00 on every day-of-month for current release branch workflow_dispatch: inputs: build_mode: @@ -20,6 +18,10 @@ on: description: 'Publish to FTP: on - publish' default: 'off' required: false + sentry_project: + description: 'Upload symbols and dumps to Sentry (choose a project): mu3(default for stable build), sandbox' + default: '' + required: false workflow_call: inputs: build_mode: @@ -31,81 +33,169 @@ on: description: 'Publish to FTP: on - publish' default: 'off' type: string + required: false + sentry_project: + description: 'Upload symbols and dumps to Sentry (choose a project): mu3(default for stable build), sandbox' + default: '' + type: string + required: false env: CURRENT_RELEASE_BRANCH: 3.x - + jobs: linux_x64: runs-on: ubuntu-20.04 + if: github.event_name != 'schedule' || github.repository == 'musescore/MuseScore' steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.12.1 with: access_token: ${{ github.token }} - - name: Clone repository + - name: Exit if current release branch configuration is incorrect + if: ${{ github.event_name == 'schedule' && github.event.schedule == '0 5 */1 */1 *' && env.CURRENT_RELEASE_BRANCH == '' }} + run: | + echo "::error::CURRENT_RELEASE_BRANCH is empty" + exit 1 + - name: Clone repository (default) uses: actions/checkout@v4 + if: ${{ github.event_name != 'schedule' || github.event.schedule == '0 3 */1 */1 *' }} + - name: Clone repository (${{ env.CURRENT_RELEASE_BRANCH }}) + uses: actions/checkout@v4 + if: ${{ github.event_name == 'schedule' && github.event.schedule == '0 5 */1 */1 *' }} + with: + ref: ${{ env.CURRENT_RELEASE_BRANCH }} - name: "Configure workflow" env: pull_request_title: ${{ github.event.pull_request.title }} + SENTRY_SERVER_KEY: ${{ secrets.SENTRY_SERVER_KEY }} + SENTRY_SERVER_SANDBOX_KEY: ${{ secrets.SENTRY_SERVER_SANDBOX_KEY }} + SENTRY_PROJECT: ${{ inputs.sentry_project }} run: | - sudo bash ./build/ci/tools/make_build_mode_env.sh -e ${{ github.event_name }} -m ${{ inputs.build_mode }} + bash ./build/ci/tools/make_build_mode_env.sh -e ${{ github.event_name }} -m ${{ inputs.build_mode }} BUILD_MODE=$(cat ./build.artifacts/env/build_mode.env) - sudo bash ./build/ci/tools/make_build_number.sh + bash ./build/ci/tools/make_build_number.sh BUILD_NUMBER=$(cat ./build.artifacts/env/build_number.env) - DO_BUILD='true' + DO_UPDATE_TS='false' + if [[ "$BUILD_MODE" == "testing" || "$BUILD_MODE" == "stable" ]]; then + DO_UPDATE_TS='true' + if [ -z "${{ secrets.TRANSIFEX_API_TOKEN }}" ]; then + echo "::warning::TRANSIFEX_API_TOKEN is empty; updating .ts files disabled" + DO_UPDATE_TS='false' + fi + fi + + DO_PLACEHOLDER_TRANSLATIONS='false' + if [[ "$BUILD_MODE" == "nightly" || "$BUILD_MODE" == "devel" ]]; then + DO_PLACEHOLDER_TRANSLATIONS='true' + fi + + DO_UPLOAD_SYMBOLS='false' + SENTRY_URL="" + + if [ "$SENTRY_SERVER_KEY" != "" ]; then + if [ -z "$SENTRY_PROJECT" ] && [ "$BUILD_MODE" == "stable" ]; then + SENTRY_PROJECT="mu3" + fi + + if [ "$SENTRY_PROJECT" == "mu3" ]; then + DO_UPLOAD_SYMBOLS='true' + SENTRY_URL=https://sentry.musescore.org/api/3/minidump/?sentry_key=$SENTRY_SERVER_KEY + fi + fi + + if [ -z "$SENTRY_PROJECT" ] && [ "$BUILD_MODE" == "nightly" ]; then + SENTRY_PROJECT="sandbox" + fi + + if [ "$SENTRY_PROJECT" == "sandbox" ] && [ "$SENTRY_SERVER_SANDBOX_KEY" != "" ]; then + DO_UPLOAD_SYMBOLS='true' + SENTRY_URL=https://sentry.musescore.org/api/3/minidump/?sentry_key=$SENTRY_SERVER_SANDBOX_KEY + fi DO_PUBLISH='false' - if [[ "${{ inputs.publish }}" == "on" || "$BUILD_MODE" == "nightly" ]]; then + if [[ "${{ inputs.publish }}" == "on" || ("${{ github.event_name }}" == "schedule" && $BUILD_MODE == 'nightly') ]]; then DO_PUBLISH='true' if [ -z "${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }}" ]; then - echo "warning: not set OSUOSL_SSH_ENCRYPT_SECRET, publish disabled" + echo "::warning::OSUOSL_SSH_ENCRYPT_SECRET is empty; not publishing to OSUOSL" DO_PUBLISH='false' - fi + fi fi ADD_INFO="_${GITHUB_REF#refs/heads/}" - if [ "${{ github.event_name }}" == "schedule" ] && [ "${{ github.event.schedule }}" == "0 5 */1 */1 *" ]; then ADD_INFO="_${CURRENT_RELEASE_BRANCH}"; fi + if [ "${{ github.event_name }}" == "schedule" ] && [ "${{ github.event.schedule }}" == "0 5 */1 */1 *" ]; then ADD_INFO="_${{ env.CURRENT_RELEASE_BRANCH }}"; fi if [ "${{ github.event_name }}" == "pull_request" ]; then ADD_INFO="_${{ github.event.pull_request.number }}_${pull_request_title}"; fi - UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\?' '_' <<<"Mu3.7_${BUILD_NUMBER}_Lin${ADD_INFO}")" + UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\’' '_' <<<"Mu3.7_${BUILD_NUMBER}_Lin${ADD_INFO}")" echo "github.repository: ${{ github.repository }}" - echo "BUILD_MODE=$BUILD_MODE" >> $GITHUB_ENV - echo "BUILD_MODE: $BUILD_MODE" - echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV - echo "BUILD_NUMBER: $BUILD_NUMBER" - echo "DO_BUILD=$DO_BUILD" >> $GITHUB_ENV - echo "DO_BUILD: $DO_BUILD" - echo "DO_PUBLISH=$DO_PUBLISH" >> $GITHUB_ENV - echo "DO_PUBLISH: $DO_PUBLISH" - echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" >> $GITHUB_ENV - echo "UPLOAD_ARTIFACT_NAME: $UPLOAD_ARTIFACT_NAME" + echo "BUILD_MODE=$BUILD_MODE" | tee -a $GITHUB_ENV + echo "BUILD_NUMBER=$BUILD_NUMBER" | tee -a $GITHUB_ENV + echo "DO_UPDATE_TS=$DO_UPDATE_TS" | tee -a $GITHUB_ENV + echo "DO_PLACEHOLDER_TRANSLATIONS=$DO_PLACEHOLDER_TRANSLATIONS" | tee -a $GITHUB_ENV + echo "DO_UPLOAD_SYMBOLS=$DO_UPLOAD_SYMBOLS" | tee -a $GITHUB_ENV + echo "SENTRY_PROJECT=$SENTRY_PROJECT" | tee -a $GITHUB_ENV + echo "SENTRY_URL=$SENTRY_URL" | tee -a $GITHUB_ENV + echo "DO_PUBLISH=$DO_PUBLISH" | tee -a $GITHUB_ENV + echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" | tee -a $GITHUB_ENV + + echo "CCACHE_TIMESTAMP=$(date -u +"%F-%T")" | tee -a $GITHUB_ENV + + - name: Restore ccache files + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/.ccache + key: ${{github.workflow}}-ccache-${{ env.CCACHE_TIMESTAMP }} + restore-keys: ${{github.workflow}}-ccache- + - name: Setup ccache + run: | + sudo apt-get update && sudo apt-get install -y ccache + bash ./build/ci/tools/setup_ccache_config.sh - name: Setup environment - if: env.DO_BUILD == 'true' run: | - sudo bash ./build/ci/linux/setup.sh + bash ./build/ci/linux/setup.sh + - name: Generate _en.ts files + env: + LUPDATE_ARGS: "" + POSTPROCESS_ARGS: ${{ env.DO_PLACEHOLDER_TRANSLATIONS == 'true' && '--generate-placeholder-translations' || '' }} + run: | + bash ./build/ci/translation/run_lupdate.sh + - name: Update .ts files + if: env.DO_UPDATE_TS == 'true' + run: | + bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s linux + bash ./build/ci/translation/tx_pull.sh - name: Build - if: env.DO_BUILD == 'true' run: | T_ID=${{ secrets.TELEMETRY_TRACK_ID }}; if [ -z "$T_ID" ]; then T_ID="''"; fi - sudo bash ./build/ci/linux/build.sh -n ${{ github.run_id }} --telemetry $T_ID + bash ./build/ci/linux/build.sh -n ${{ env.BUILD_NUMBER }} --telemetry $T_ID + echo "============== ccache ===============" + ccache -s - name: Package - if: env.DO_BUILD == 'true' run: | - sudo bash ./build/ci/linux/package.sh - - name: Checksum - if: env.DO_BUILD == 'true' + bash ./build/ci/linux/package.sh + - name: Checksum + run: | + bash ./build/ci/tools/checksum.sh + - name: Generate and upload dump symbols + if: env.DO_UPLOAD_SYMBOLS == 'true' run: | - sudo bash ./build/ci/tools/checksum.sh - - name: Publish package + APP_BIN=$(find "$(pwd)/build.release/src/app/" -type f -name "mscore3portable*" -print -quit) + ARCH=x86-64 + cmake -DAPP_BIN=${APP_BIN} \ + -DARCH=${ARCH} \ + -DSENTRY_URL=https://sentry.musescore.org \ + -DSENTRY_ORG=musescore \ + -DSENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} \ + -DSENTRY_PROJECT=${SENTRY_PROJECT} \ + -P build/ci/crashdumps/ci_generate_and_upload.cmake + - name: Publish to OSUOSL if: env.DO_PUBLISH == 'true' run: | - sudo bash ./build/ci/tools/osuosl/publish.sh -s ${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }} --os linux -v 3 + bash ./build/ci/tools/osuosl/publish.sh -s ${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }} --os linux -v 3 - name: Upload artifacts on GitHub - if: env.DO_BUILD == 'true' uses: actions/upload-artifact@v4 with: name: ${{ env.UPLOAD_ARTIFACT_NAME }} @@ -118,22 +208,51 @@ jobs: CFLAGS: "-fsanitize=address -fno-omit-frame-pointer" CXXFLAGS: "-fsanitize=address -fno-omit-frame-pointer" steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.12.1 + with: + access_token: ${{ github.token }} - name: Clone repository uses: actions/checkout@v4 + - name: Configure workflow + run: | + bash ./build/ci/tools/make_build_number.sh + BUILD_NUMBER=$(cat ./build.artifacts/env/build_number.env) + + echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV + echo "BUILD_NUMBER: $BUILD_NUMBER" + echo "BUILD_NUMBER=$BUILD_NUMBER" | tee -a $GITHUB_ENV + + echo "CCACHE_TIMESTAMP=$(date -u +"%F-%T")" | tee -a $GITHUB_ENV + + - name: Restore ccache files + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/.ccache + key: ${{github.workflow}}-ccache-${{ env.CCACHE_TIMESTAMP }} + restore-keys: ${{github.workflow}}-ccache- + - name: Setup ccache + run: | + sudo apt-get update && sudo apt-get install -y ccache + bash ./build/ci/tools/setup_ccache_config.sh + - name: Setup environment run: | - sudo bash ./build/ci/linux/setup.sh + bash ./build/ci/linux/setup.sh - name: Build run: | mkdir -p build.artifacts/env - #sudo bash ./build/ci/linux/build.sh -n ${{ github.run_id }} --build_mode mtests - ./build/ci/linux/build.sh -n ${{ github.run_id }} --build_mode mtests - - name: Run mtests + #bash ./build/ci/linux/build_utest.sh -n ${{ env.BUILD_NUMBER }} + bash ./build/ci/linux/build.sh -n ${{ env.BUILD_NUMBER }} --build_mode mtests + echo "============== ccache ===============" + ccache -s + - name: Free up disk space + # After building, too little disk space is left. Remove unnecessary tools to free up disk space. run: | - # At moment build and run mtests consume 13.4 Gb of the disk. - # After left too little free space. - # So, we remove unnecessary tools, for more free space sudo docker system prune -a -f sudo rm -rf /usr/local/lib/android - #sudo bash ./build/ci/linux/runmtests.sh - ./build/ci/linux/runmtests.sh + - name: Run tests + run: | + bash ./build/ci/linux/runmtests.sh + env: + ASAN_OPTIONS: "detect_leaks=0" diff --git a/.github/workflows/build_macos.yml b/.github/workflows/build_macos.yml index d1dbefdf80f41..79ebc97d01a93 100644 --- a/.github/workflows/build_macos.yml +++ b/.github/workflows/build_macos.yml @@ -5,11 +5,9 @@ on: branches: - 3.x pull_request: - branches: - - 3.x - schedule: - - cron: '0 4 */1 * *' # At 04:00 on every day-of-month + - cron: '0 3 */1 */1 *' # At 03:00 on every day-of-month for master + - cron: '0 5 */1 */1 *' # At 05:00 on every day-of-month for current release branch workflow_dispatch: inputs: build_mode: @@ -18,7 +16,11 @@ on: required: true publish: description: 'Publish to FTP: on - publish' - default: 'off' + default: 'off' + required: false + sentry_project: + description: 'Upload symbols and dumps to Sentry (choose a project): mu3(default for stable build), sandbox' + default: '' required: false workflow_call: inputs: @@ -32,6 +34,11 @@ on: default: 'off' type: string required: false + sentry_project: + description: 'Upload symbols and dumps to Sentry (choose a project): mu3(default for stable build), sandbox' + default: '' + type: string + required: false env: CURRENT_RELEASE_BRANCH: 3.x @@ -40,18 +47,31 @@ env: jobs: macos: runs-on: macos-12 + if: github.event_name != 'schedule' || github.repository == 'musescore/MuseScore' steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.12.1 with: access_token: ${{ github.token }} - - name: Clone repository + - name: Exit if current release branch configuration is incorrect + if: ${{ github.event_name == 'schedule' && github.event.schedule == '0 5 */1 */1 *' && env.CURRENT_RELEASE_BRANCH == '' }} + run: | + echo "::error::CURRENT_RELEASE_BRANCH is empty" + exit 1 + - name: Clone repository (default) + uses: actions/checkout@v4 + if: ${{ github.event_name != 'schedule' || github.event.schedule == '0 3 */1 */1 *' }} + - name: Clone repository (${{ env.CURRENT_RELEASE_BRANCH }}) uses: actions/checkout@v4 + if: ${{ github.event_name == 'schedule' && github.event.schedule == '0 5 */1 */1 *' }} with: - fetch-depth: 3 + ref: ${{ env.CURRENT_RELEASE_BRANCH }} - name: "Configure workflow" env: pull_request_title: ${{ github.event.pull_request.title }} + SENTRY_SERVER_KEY: ${{ secrets.SENTRY_SERVER_KEY }} + SENTRY_SERVER_SANDBOX_KEY: ${{ secrets.SENTRY_SERVER_SANDBOX_KEY }} + SENTRY_PROJECT: ${{ inputs.sentry_project }} run: | bash ./build/ci/tools/make_build_mode_env.sh -e ${{ github.event_name }} -m ${{ inputs.build_mode }} BUILD_MODE=$(cat ./build.artifacts/env/build_mode.env) @@ -59,90 +79,151 @@ jobs: bash ./build/ci/tools/make_build_number.sh BUILD_NUMBER=$(cat ./build.artifacts/env/build_number.env) - DO_PUBLISH='false' - if [[ "${{ inputs.publish }}" == "on" || "$BUILD_MODE" == "nightly" ]]; then - DO_PUBLISH='true' - if [ -z "${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }}" ]; then - echo "warning: not set OSUOSL_SSH_ENCRYPT_SECRET, publish disabled" - DO_PUBLISH='false' - fi - fi - DO_NOTARIZE='false' if [ "$BUILD_MODE" != "devel" ]; then DO_NOTARIZE='true' if [ -z "${{ secrets.APPLE_USERNAME }}" ]; then - echo "warning: not set APPLE_USERNAME, notarize disabled" + echo "::warning::APPLE_USERNAME is empty; notarization disabled" DO_NOTARIZE='false' fi if [ -z "${{ secrets.APPLE_PASSWORD }}" ]; then - echo "warning: not set APPLE_PASSWORD, notarize disabled" + echo "::warning::APPLE_PASSWORD is empty, notarization disabled" DO_NOTARIZE='false' - fi + fi + fi + + DO_UPDATE_TS='false' + if [[ "$BUILD_MODE" == "testing" || "$BUILD_MODE" == "stable" ]]; then + DO_UPDATE_TS='true' + if [ -z "${{ secrets.TRANSIFEX_API_TOKEN }}" ]; then + echo "::warning::TRANSIFEX_API_TOKEN is empty; updating .ts files disabled" + DO_UPDATE_TS='false' + fi + fi + + DO_PLACEHOLDER_TRANSLATIONS='false' + if [[ "$BUILD_MODE" == "nightly" || "$BUILD_MODE" == "devel" ]]; then + DO_PLACEHOLDER_TRANSLATIONS='true' + fi + + DO_UPLOAD_SYMBOLS='false' + SENTRY_URL="" + + if [ "$SENTRY_SERVER_KEY" != "" ]; then + if [ -z "$SENTRY_PROJECT" ] && [ "$BUILD_MODE" == "stable" ]; then + SENTRY_PROJECT="mu3" + fi + + if [ "$SENTRY_PROJECT" == "mu3" ]; then + DO_UPLOAD_SYMBOLS='true' + SENTRY_URL=https://sentry.musescore.org/api/3/minidump/?sentry_key=$SENTRY_SERVER_KEY + fi + fi + + if [ -z "$SENTRY_PROJECT" ] && [ "$BUILD_MODE" == "nightly" ]; then + SENTRY_PROJECT="sandbox" fi - DO_BUILD='true' + if [ "$SENTRY_PROJECT" == "sandbox" ] && [ "$SENTRY_SERVER_SANDBOX_KEY" != "" ]; then + DO_UPLOAD_SYMBOLS='true' + SENTRY_URL=https://sentry.musescore.org/api/3/minidump/?sentry_key=$SENTRY_SERVER_SANDBOX_KEY + fi + + DO_PUBLISH='false' + if [[ "${{ inputs.publish }}" == "on" || ("${{ github.event_name }}" == "schedule" && $BUILD_MODE == 'nightly') ]]; then + DO_PUBLISH='true' + if [ -z "${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }}" ]; then + echo "::warning::OSUOSL_SSH_ENCRYPT_SECRET is empty; not publishing to OSUOSL" + DO_PUBLISH='false' + fi + fi ADD_INFO="_${GITHUB_REF#refs/heads/}" if [ "${{ github.event_name }}" == "schedule" ] && [ "${{ github.event.schedule }}" == "0 5 */1 */1 *" ]; then ADD_INFO="_${CURRENT_RELEASE_BRANCH}"; fi if [ "${{ github.event_name }}" == "pull_request" ]; then ADD_INFO="_${{ github.event.pull_request.number }}_${pull_request_title}"; fi - UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\?' '_' <<<"Mu3.7_${BUILD_NUMBER}_Mac${ADD_INFO}")" + UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\’' '_' <<<"Mu3.7_${BUILD_NUMBER}_Mac${ADD_INFO}")" echo "github.repository: ${{ github.repository }}" - echo "BUILD_MODE=$BUILD_MODE" >> $GITHUB_ENV - echo "BUILD_MODE: $BUILD_MODE" - echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV - echo "BUILD_NUMBER: $BUILD_NUMBER" - echo "DO_BUILD=$DO_BUILD" >> $GITHUB_ENV - echo "DO_BUILD: $DO_BUILD" - echo "DO_NOTARIZE=$DO_NOTARIZE" >> $GITHUB_ENV - echo "DO_NOTARIZE: $DO_NOTARIZE" - echo "DO_PUBLISH=$DO_PUBLISH" >> $GITHUB_ENV - echo "DO_PUBLISH: $DO_PUBLISH" - echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" >> $GITHUB_ENV - echo "UPLOAD_ARTIFACT_NAME: $UPLOAD_ARTIFACT_NAME" - - - name: Free disk space - if: env.DO_BUILD == 'true' + echo "BUILD_MODE=$BUILD_MODE" | tee -a $GITHUB_ENV + echo "BUILD_NUMBER=$BUILD_NUMBER" | tee -a $GITHUB_ENV + echo "DO_UPDATE_TS=$DO_UPDATE_TS" | tee -a $GITHUB_ENV + echo "DO_PLACEHOLDER_TRANSLATIONS=$DO_PLACEHOLDER_TRANSLATIONS" | tee -a $GITHUB_ENV + echo "DO_NOTARIZE=$DO_NOTARIZE" | tee -a $GITHUB_ENV + echo "DO_UPLOAD_SYMBOLS=$DO_UPLOAD_SYMBOLS" | tee -a $GITHUB_ENV + echo "SENTRY_PROJECT=$SENTRY_PROJECT" | tee -a $GITHUB_ENV + echo "SENTRY_URL=$SENTRY_URL" | tee -a $GITHUB_ENV + echo "DO_PUBLISH=$DO_PUBLISH" | tee -a $GITHUB_ENV + echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" | tee -a $GITHUB_ENV + + echo "CCACHE_TIMESTAMP=$(date -u +"%F-%T")" | tee -a $GITHUB_ENV + + - name: Restore ccache files + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/.ccache + key: ${{github.workflow}}-ccache-${{ env.CCACHE_TIMESTAMP }} + restore-keys: ${{github.workflow}}-ccache- + - name: Setup ccache run: | - sudo rm -rf "/Applications/Visual Studio.app" - sudo rm -rf "/Applications/Visual Studio 2019.app" - sudo rm -rf "/Users/runner/Library/Android/sdk" + brew install ccache + bash ./build/ci/tools/setup_ccache_config.sh + - name: Setup environment - if: env.DO_BUILD == 'true' run: | bash ./build/ci/macos/setup.sh - - name: Build - if: env.DO_BUILD == 'true' + - name: Generate _en.ts files + env: + LUPDATE_ARGS: "" + POSTPROCESS_ARGS: "--warn-only ${{ env.DO_PLACEHOLDER_TRANSLATIONS == 'true' && '--generate-placeholder-translations' || '' }}" + run: | + bash ./build/ci/translation/run_lupdate.sh + - name: Update .ts files + if: env.DO_UPDATE_TS == 'true' + run: | + bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s macos + bash ./build/ci/translation/tx_pull.sh + - name: Build run: | + #C_URL=${SENTRY_URL}; if [ -z "$C_URL" ]; then C_URL="''"; fi + #bash ./build/ci/macos/build.sh -n ${{ env.BUILD_NUMBER }} --crash_log_url $C_URL T_ID=${{ secrets.TELEMETRY_TRACK_ID }}; if [ -z "$T_ID" ]; then T_ID="''"; fi - bash ./build/ci/macos/build.sh -n ${{ github.run_id }} --telemetry $T_ID - - name: Package - if: env.DO_BUILD == 'true' + bash ./build/ci/macos/build.sh -n ${{ env.BUILD_NUMBER }} --telemetry $T_ID + echo "============== ccache ===============" + ccache -s + - name: Package run: | S_S="${{ secrets.MAC_SIGN_CERTIFICATE_ENCRYPT_SECRET }}"; if [ -z "$S_S" ]; then S_S="''"; fi S_P="${{ secrets.MAC_SIGN_CERTIFICATE_PASSWORD }}"; if [ -z "$S_P" ]; then S_P="''"; fi - bash ./build/ci/macos/package.sh --signpass "$S_P" --signsecret "$S_S" + bash ./build/ci/macos/package.sh --signpass "$S_P" --signsecret "$S_S" - name: Notarize if: env.DO_NOTARIZE == 'true' run: | - USER=${{ secrets.APPLE_USERNAME }}; if [ -z "$USER" ]; then USER="''"; fi - PW=${{ secrets.APPLE_PASSWORD }}; if [ -z "$PW" ]; then PW="''"; fi + USER=${{ secrets.APPLE_USERNAME }}; if [ -z "$USER" ]; then USER=""; fi + PW=${{ secrets.APPLE_PASSWORD }}; if [ -z "$PW" ]; then PW=""; fi bash ./build/ci/macos/notarize.sh -u $USER -p $PW - - name: Checksum - if: env.DO_BUILD == 'true' + - name: Checksum run: | bash ./build/ci/tools/checksum.sh - - name: Publish package - if: env.DO_PUBLISH == 'true' + - name: Generate and upload dump symbols + if: env.DO_UPLOAD_SYMBOLS == 'true' run: | - sudo bash ./build/ci/tools/osuosl/publish.sh -s ${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }} --os macos -v 3 - - name: AppCast - if: env.DO_BUILD == 'true' + APP_BIN=$(pwd)/applebuild/mscore.app/Contents/MacOS/mscore + GENERATE_ARCHS=("x86_64 arm64") + BUILD_DIR=$(pwd)/applebuild + cmake -DAPP_BIN=${APP_BIN} \ + -DGENERATE_ARCHS="${GENERATE_ARCHS}" \ + -DBUILD_DIR=${BUILD_DIR} \ + -DSENTRY_URL=https://sentry.musescore.org \ + -DSENTRY_ORG=musescore \ + -DSENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} \ + -DSENTRY_PROJECT=${SENTRY_PROJECT} \ + -P build/ci/crashdumps/ci_generate_and_upload.cmake + - name: Publish to OSUOSL + if: env.DO_PUBLISH == 'true' run: | - bash ./build/ci/tools/sparkle_appcast_gen.sh -p macos + #bash ./build/ci/tools/sparkle_appcast_gen.sh -p macos + bash ./build/ci/tools/osuosl/publish.sh -s ${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }} --os macos -v 3 - name: Upload artifacts on GitHub - if: env.DO_BUILD == 'true' uses: actions/upload-artifact@v4 with: name: ${{ env.UPLOAD_ARTIFACT_NAME }} diff --git a/.github/workflows/build_windows.yml b/.github/workflows/build_windows.yml index 415b2a4ba6663..172203cab0dc5 100644 --- a/.github/workflows/build_windows.yml +++ b/.github/workflows/build_windows.yml @@ -5,11 +5,9 @@ on: branches: - 3.x pull_request: - branches: - - 3.x - schedule: - - cron: '0 4 */1 * *' # At 04:00 on every day-of-month + - cron: '0 3 */1 */1 *' # At 03:00 on every day-of-month for master + - cron: '0 5 */1 */1 *' # At 05:00 on every day-of-month for current release branch workflow_dispatch: inputs: platforms: @@ -22,7 +20,11 @@ on: required: true publish: description: 'Publish to FTP: on - publish' - default: 'off' + default: 'off' + required: false + sentry_project: + description: 'Upload symbols and dumps to Sentry (choose a project): mu3(default for stable build), sandbox' + default: '' required: false workflow_call: inputs: @@ -41,27 +43,47 @@ on: default: 'off' type: string required: false + sentry_project: + description: 'Upload symbols and dumps to Sentry (choose a project): mu3(default for stable build), sandbox' + default: '' + type: string + required: false env: CURRENT_RELEASE_BRANCH: 3.x jobs: + windows_x64: - if: ${{ github.event_name != 'workflow_dispatch' || contains(inputs.platforms, 'windows_x64') }} + if: | + (github.event_name != 'workflow_dispatch' || contains(inputs.platforms, 'windows_x64')) && + (github.event_name != 'schedule' || github.repository == 'musescore/MuseScore') runs-on: windows-2022 steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.12.1 with: access_token: ${{ github.token }} - - name: Clone repository + - name: Exit if current release branch configuration is incorrect + if: ${{ github.event_name == 'schedule' && github.event.schedule == '0 5 */1 */1 *' && env.CURRENT_RELEASE_BRANCH == '' }} + run: | + echo "::error::CURRENT_RELEASE_BRANCH is empty" + exit 1 + - name: Clone repository (default) + uses: actions/checkout@v4 + if: ${{ github.event_name != 'schedule' || github.event.schedule == '0 3 */1 */1 *' }} + - name: Clone repository (${{ env.CURRENT_RELEASE_BRANCH }}) uses: actions/checkout@v4 + if: ${{ github.event_name == 'schedule' && github.event.schedule == '0 5 */1 */1 *' }} with: - submodules: 'true' + ref: ${{ env.CURRENT_RELEASE_BRANCH }} - name: "Configure workflow" shell: bash env: pull_request_title: ${{ github.event.pull_request.title }} + SENTRY_SERVER_KEY: ${{ secrets.SENTRY_SERVER_KEY }} + SENTRY_SERVER_SANDBOX_KEY: ${{ secrets.SENTRY_SERVER_SANDBOX_KEY }} + SENTRY_PROJECT: ${{ inputs.sentry_project }} run: | bash ./build/ci/tools/make_build_mode_env.sh -e ${{ github.event_name }} -m ${{ inputs.build_mode }} BUILD_MODE=$(cat ./build.artifacts/env/build_mode.env) @@ -69,77 +91,124 @@ jobs: bash ./build/ci/tools/make_build_number.sh BUILD_NUMBER=$(cat ./build.artifacts/env/build_number.env) + DO_UPDATE_TS='false' + if [[ "$BUILD_MODE" == "testing" || "$BUILD_MODE" == "stable" ]]; then + DO_UPDATE_TS='true' + if [ -z "${{ secrets.TRANSIFEX_API_TOKEN }}" ]; then + echo "::warning::TRANSIFEX_API_TOKEN is empty; updating .ts files disabled" + DO_UPDATE_TS='false' + fi + fi + + DO_PLACEHOLDER_TRANSLATIONS='false' + if [[ "$BUILD_MODE" == "nightly" || "$BUILD_MODE" == "devel" ]]; then + DO_PLACEHOLDER_TRANSLATIONS='true' + fi + + DO_UPLOAD_SYMBOLS='false' + SENTRY_URL="" + + if [ "$SENTRY_SERVER_KEY" != "" ]; then + if [ -z "$SENTRY_PROJECT" ] && [ "$BUILD_MODE" == "stable" ]; then + SENTRY_PROJECT="mu3" + fi + + if [ "$SENTRY_PROJECT" == "mu3" ]; then + DO_UPLOAD_SYMBOLS='true' + SENTRY_URL=https://sentry.musescore.org/api/3/minidump/?sentry_key=$SENTRY_SERVER_KEY + fi + fi + + if [ -z "$SENTRY_PROJECT" ] && [ "$BUILD_MODE" == "nightly" ]; then + SENTRY_PROJECT="sandbox" + fi + + if [ "$SENTRY_PROJECT" == "sandbox" ] && [ "$SENTRY_SERVER_SANDBOX_KEY" != "" ]; then + DO_UPLOAD_SYMBOLS='true' + SENTRY_URL=https://sentry.musescore.org/api/3/minidump/?sentry_key=$SENTRY_SERVER_SANDBOX_KEY + fi + DO_PUBLISH='false' - if [[ "${{ inputs.publish }}" == "on" || "$BUILD_MODE" == "nightly" ]]; then + if [[ "${{ inputs.publish }}" == "on" || ("${{ github.event_name }}" == "schedule" && $BUILD_MODE == 'nightly') ]]; then DO_PUBLISH='true' if [ -z "${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }}" ]; then - echo "warning: not set OSUOSL_SSH_ENCRYPT_SECRET, publish disabled" + echo "::warning::OSUOSL_SSH_ENCRYPT_SECRET is empty; not publishing to OSUOSL" DO_PUBLISH='false' - fi + fi fi - DO_CHECKSUM='true' - if [ "$BUILD_MODE" == "devel" ]; then DO_CHECKSUM='false'; fi - - DO_APPCAST='true' - if [ "$BUILD_MODE" == "devel" ]; then DO_APPCAST='false'; fi - - DO_BUILD='true' - ADD_INFO="_${GITHUB_REF#refs/heads/}" if [ "${{ github.event_name }}" == "schedule" ] && [ "${{ github.event.schedule }}" == "0 5 */1 */1 *" ]; then ADD_INFO="_${CURRENT_RELEASE_BRANCH}"; fi if [ "${{ github.event_name }}" == "pull_request" ]; then ADD_INFO="_${{ github.event.pull_request.number }}_${pull_request_title}"; fi - UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\’' '_' <<<"Mu3.7_${BUILD_NUMBER}_Win64${ADD_INFO}")" + UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\’' '_' <<<"Mu3.7_${BUILD_NUMBER}_Win64${ADD_INFO}")" echo "github.repository: ${{ github.repository }}" - echo "BUILD_MODE=$BUILD_MODE" >> $GITHUB_ENV - echo "BUILD_MODE: $BUILD_MODE" - echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV - echo "BUILD_NUMBER: $BUILD_NUMBER" - echo "DO_BUILD=$DO_BUILD" >> $GITHUB_ENV - echo "DO_BUILD: $DO_BUILD" - echo "DO_PUBLISH=$DO_PUBLISH" >> $GITHUB_ENV - echo "DO_PUBLISH: $DO_PUBLISH" - echo "DO_CHECKSUM=$DO_CHECKSUM" >> $GITHUB_ENV - echo "DO_CHECKSUM: $DO_CHECKSUM" - echo "DO_APPCAST=$DO_APPCAST" >> $GITHUB_ENV - echo "DO_APPCAST: $DO_APPCAST" - echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" >> $GITHUB_ENV - echo "UPLOAD_ARTIFACT_NAME: $UPLOAD_ARTIFACT_NAME" + echo "BUILD_MODE=$BUILD_MODE" | tee -a $GITHUB_ENV + echo "BUILD_NUMBER=$BUILD_NUMBER" | tee -a $GITHUB_ENV + echo "DO_UPDATE_TS=$DO_UPDATE_TS" | tee -a $GITHUB_ENV + echo "DO_PLACEHOLDER_TRANSLATIONS=$DO_PLACEHOLDER_TRANSLATIONS" | tee -a $GITHUB_ENV + echo "DO_UPLOAD_SYMBOLS=$DO_UPLOAD_SYMBOLS" | tee -a $GITHUB_ENV + echo "SENTRY_PROJECT=$SENTRY_PROJECT" | tee -a $GITHUB_ENV + echo "SENTRY_URL=$SENTRY_URL" | tee -a $GITHUB_ENV + echo "DO_PUBLISH=$DO_PUBLISH" | tee -a $GITHUB_ENV + echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" | tee -a $GITHUB_ENV - name: Setup environment - if: env.DO_BUILD == 'true' run: | build\ci\windows\setup.bat + - name: Make environment file + shell: bash + run: | + bash ./build/ci/windows/make_environment.sh + - name: Generate _en.ts files + shell: bash + env: + LUPDATE_ARGS: "" + POSTPROCESS_ARGS: "--warn-only ${{ env.DO_PLACEHOLDER_TRANSLATIONS == 'true' && '--generate-placeholder-translations' || '' }}" + POSTPROCESS_LAUNCHER: "python3 -X utf8" + run: | + bash ./build/ci/translation/run_lupdate.sh + - name: Update .ts files + if: env.DO_UPDATE_TS == 'true' + shell: bash + run: | + bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s windows + bash ./build/ci/translation/tx_pull.sh - name: Build - if: env.DO_BUILD == 'true' shell: cmd run: | + #IF ${{ env.SENTRY_URL != 0 }} == true ( SET C_URL="${{ env.SENTRY_URL }}" ) ELSE ( SET C_URL="" ) + #build\ci\windows\build.bat -n ${{ env.BUILD_NUMBER }} --crash_log_url %C_URL% IF ${{ secrets.TELEMETRY_TRACK_ID != 0 }} == true ( SET T_ID=${{ secrets.TELEMETRY_TRACK_ID }} ) ELSE ( SET T_ID="''" ) IF ${{ secrets.SENTRY_SERVER_MU3_KEY != 0 }} == true ( SET C_KEY=${{ secrets.SENTRY_SERVER_MU3_KEY }} ) ELSE ( SET C_KEY="''" ) - build\ci\windows\build.bat -n ${{ github.run_id }} --telemetry %T_ID% --sentrykey %C_KEY% + build\ci\windows\build.bat -n ${{ env.BUILD_NUMBER }} --telemetry %T_ID% --sentrykey %C_KEY% - name: Package - if: env.DO_BUILD == 'true' shell: cmd run: | IF ${{ secrets.WIN_SIGN_CERTIFICATE_ENCRYPT_SECRET != 0 }} == true ( SET S_S=${{ secrets.WIN_SIGN_CERTIFICATE_ENCRYPT_SECRET }} ) ELSE ( SET S_S="''" ) IF ${{ secrets.WIN_SIGN_CERTIFICATE_PASSWORD != 0 }} == true ( SET S_P=${{ secrets.WIN_SIGN_CERTIFICATE_PASSWORD }} ) ELSE ( SET S_P="''" ) - IF ${{ env.BUILD_MODE }} == stable( SET GUID=${{ secrets.WIN_MSI_STABLE_GUID }} ) ELSE ( SET GUID=${{ secrets.WIN_MSI_TESTING_GUID }} ) - build\ci\windows\package.bat --signsecret %S_S% --signpass %S_P% --guid %GUID% + IF ${{ env.BUILD_MODE }} == stable ( SET GUID=${{ secrets.WIN_MSI_STABLE_GUID }} ) ELSE ( SET GUID=${{ secrets.WIN_MSI_TESTING_GUID }} ) + build\ci\windows\package.bat --signsecret %S_S% --signpass %S_P% --guid %GUID - name: Checksum - if: env.DO_CHECKSUM == 'true' run: | bash ./build/ci/tools/checksum.sh - - name: Publish package - if: env.DO_PUBLISH == 'true' + - name: Generate and upload dump symbols + if: env.DO_UPLOAD_SYMBOLS == 'true' shell: bash run: | - bash ./build/ci/tools/osuosl/publish.sh -s ${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }} --os windows -v 3 - - name: AppCast - if: env.DO_APPCAST == 'true' + APP_BIN=$(pwd)/build.release/src/app/MuseScore3.pdb + cmake -DAPP_BIN=${APP_BIN} \ + -DSENTRY_URL=https://sentry.musescore.org \ + -DSENTRY_ORG=musescore \ + -DSENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} \ + -DSENTRY_PROJECT=${SENTRY_PROJECT} \ + -P build/ci/crashdumps/ci_generate_and_upload.cmake + - name: Publish to OSUOSL + if: env.DO_PUBLISH == 'true' shell: bash run: | - bash ./build/ci/tools/sparkle_appcast_gen.sh -p windows + #bash ./build/ci/tools/sparkle_appcast_gen.sh -p windows + bash ./build/ci/tools/osuosl/publish.sh -s ${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }} --os windows -v 3 - name: Upload artifacts on GitHub if: ${{ always() }} uses: actions/upload-artifact@v4 @@ -148,24 +217,35 @@ jobs: path: build.artifacts\ windows_x32: - if: ${{ github.event_name != 'workflow_dispatch' || contains(inputs.platforms, 'windows_x32') }} + if: | + (github.event_name != 'workflow_dispatch' || contains(inputs.platforms, 'windows_x32')) && + (github.event_name != 'schedule' || github.repository == 'musescore/MuseScore') runs-on: windows-2022 steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.12.1 with: access_token: ${{ github.token }} - - name: Clone repository + - name: Exit if current release branch configuration is incorrect + if: ${{ github.event_name == 'schedule' && github.event.schedule == '0 5 */1 */1 *' && env.CURRENT_RELEASE_BRANCH == '' }} + run: | + echo "::error::CURRENT_RELEASE_BRANCH is empty" + exit 1 + - name: Clone repository (default) + uses: actions/checkout@v4 + if: ${{ github.event_name != 'schedule' || github.event.schedule == '0 3 */1 */1 *' }} + - name: Clone repository (${{ env.CURRENT_RELEASE_BRANCH }}) uses: actions/checkout@v4 + if: ${{ github.event_name == 'schedule' && github.event.schedule == '0 5 */1 */1 *' }} with: - fetch-depth: 3 - - name: Fetch submodules - run: | - git submodule update --init --recursive + ref: ${{ env.CURRENT_RELEASE_BRANCH }} - name: "Configure workflow" shell: bash env: pull_request_title: ${{ github.event.pull_request.title }} + SENTRY_SERVER_KEY: ${{ secrets.SENTRY_SERVER_KEY }} + SENTRY_SERVER_SANDBOX_KEY: ${{ secrets.SENTRY_SERVER_SANDBOX_KEY }} + SENTRY_PROJECT: ${{ inputs.sentry_project }} run: | bash ./build/ci/tools/make_build_mode_env.sh -e ${{ github.event_name }} -m ${{ inputs.build_mode }} BUILD_MODE=$(cat ./build.artifacts/env/build_mode.env) @@ -173,84 +253,126 @@ jobs: bash ./build/ci/tools/make_build_number.sh BUILD_NUMBER=$(cat ./build.artifacts/env/build_number.env) + DO_UPDATE_TS='false' + if [[ "$BUILD_MODE" == "testing" || "$BUILD_MODE" == "stable" ]]; then + DO_UPDATE_TS='true' + if [ -z "${{ secrets.TRANSIFEX_API_TOKEN }}" ]; then + echo "::warning::TRANSIFEX_API_TOKEN is empty; updating .ts files disabled" + DO_UPDATE_TS='false' + fi + fi + + DO_PLACEHOLDER_TRANSLATIONS='false' + if [[ "$BUILD_MODE" == "nightly" || "$BUILD_MODE" == "devel" ]]; then + DO_PLACEHOLDER_TRANSLATIONS='true' + fi + + DO_UPLOAD_SYMBOLS='false' + SENTRY_URL="" + + if [ "$SENTRY_SERVER_KEY" != "" ]; then + if [ -z "$SENTRY_PROJECT" ] && [ "$BUILD_MODE" == "stable" ]; then + SENTRY_PROJECT="mu3" + fi + + if [ "$SENTRY_PROJECT" == "mu3" ]; then + DO_UPLOAD_SYMBOLS='true' + SENTRY_URL=https://sentry.musescore.org/api/3/minidump/?sentry_key=$SENTRY_SERVER_KEY + fi + fi + + if [ -z "$SENTRY_PROJECT" ] && [ "$BUILD_MODE" == "nightly" ]; then + SENTRY_PROJECT="sandbox" + fi + + if [ "$SENTRY_PROJECT" == "sandbox" ] && [ "$SENTRY_SERVER_SANDBOX_KEY" != "" ]; then + DO_UPLOAD_SYMBOLS='true' + SENTRY_URL=https://sentry.musescore.org/api/3/minidump/?sentry_key=$SENTRY_SERVER_SANDBOX_KEY + fi + DO_PUBLISH='false' - if [ "${{ inputs.publish }}" == "on" ]; then + if [[ "${{ inputs.publish }}" == "on" || ("${{ github.event_name }}" == "schedule" && $BUILD_MODE == 'nightly') ]]; then DO_PUBLISH='true' if [ -z "${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }}" ]; then - echo "warning: not set OSUOSL_SSH_ENCRYPT_SECRET, publish disabled" + echo "::warning::OSUOSL_SSH_ENCRYPT_SECRET is empty; not publishing to OSUOSL" DO_PUBLISH='false' - fi + fi fi - DO_CHECKSUM='true' - if [ "$BUILD_MODE" == "devel" ]; then DO_CHECKSUM='false'; fi - - DO_APPCAST='true' - if [ "$BUILD_MODE" == "devel" ]; then DO_APPCAST='false'; fi - - #DO_BUILD='false' - #if [[ "$BUILD_MODE" == "testing" || "$BUILD_MODE" == "stable" ]]; then - #DO_BUILD='true' - #fi - #echo "!! ATTENTION !! Windows x32 build run only for 'testing' and 'stable', and SKIP for 'pull requests' and nightly" - DO_BUILD='true' - ADD_INFO="_${GITHUB_REF#refs/heads/}" if [ "${{ github.event_name }}" == "schedule" ] && [ "${{ github.event.schedule }}" == "0 5 */1 */1 *" ]; then ADD_INFO="_${CURRENT_RELEASE_BRANCH}"; fi if [ "${{ github.event_name }}" == "pull_request" ]; then ADD_INFO="_${{ github.event.pull_request.number }}_${pull_request_title}"; fi - UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\?' '_' <<<"Mu3.7_${BUILD_NUMBER}_Win32${ADD_INFO}")" + UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\’' '_' <<<"Mu3.7_${BUILD_NUMBER}_Win32${ADD_INFO}")" echo "github.repository: ${{ github.repository }}" - echo "BUILD_MODE=$BUILD_MODE" >> $GITHUB_ENV - echo "BUILD_MODE: $BUILD_MODE" - echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV - echo "BUILD_NUMBER: $BUILD_NUMBER" - echo "DO_BUILD=$DO_BUILD" >> $GITHUB_ENV - echo "DO_BUILD: $DO_BUILD" - echo "DO_PUBLISH=$DO_PUBLISH" >> $GITHUB_ENV - echo "DO_PUBLISH: $DO_PUBLISH" - echo "DO_CHECKSUM=$DO_CHECKSUM" >> $GITHUB_ENV - echo "DO_CHECKSUM: $DO_CHECKSUM" - echo "DO_APPCAST=$DO_APPCAST" >> $GITHUB_ENV - echo "DO_APPCAST: $DO_APPCAST" - echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" >> $GITHUB_ENV - echo "UPLOAD_ARTIFACT_NAME: $UPLOAD_ARTIFACT_NAME" + echo "BUILD_MODE=$BUILD_MODE" | tee -a $GITHUB_ENV + echo "BUILD_NUMBER=$BUILD_NUMBER" | tee -a $GITHUB_ENV + echo "DO_UPDATE_TS=$DO_UPDATE_TS" | tee -a $GITHUB_ENV + echo "DO_PLACEHOLDER_TRANSLATIONS=$DO_PLACEHOLDER_TRANSLATIONS" | tee -a $GITHUB_ENV + echo "DO_UPLOAD_SYMBOLS=$DO_UPLOAD_SYMBOLS" | tee -a $GITHUB_ENV + echo "SENTRY_PROJECT=$SENTRY_PROJECT" | tee -a $GITHUB_ENV + echo "SENTRY_URL=$SENTRY_URL" | tee -a $GITHUB_ENV + echo "DO_PUBLISH=$DO_PUBLISH" | tee -a $GITHUB_ENV + echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" | tee -a $GITHUB_ENV - name: Setup environment - if: env.DO_BUILD == 'true' run: | build\ci\windows\setup.bat -b 32 + - name: Make environment file + shell: bash + run: | + bash ./build/ci/windows/make_environment.sh + - name: Generate _en.ts files + shell: bash + env: + LUPDATE_ARGS: "" + POSTPROCESS_ARGS: "--warn-only ${{ env.DO_PLACEHOLDER_TRANSLATIONS == 'true' && '--generate-placeholder-translations' || '' }}" + POSTPROCESS_LAUNCHER: "python3 -X utf8" + run: | + bash ./build/ci/translation/run_lupdate.sh + - name: Update .ts files + if: env.DO_UPDATE_TS == 'true' + shell: bash + run: | + bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s windows + bash ./build/ci/translation/tx_pull.sh - name: Build - if: env.DO_BUILD == 'true' shell: cmd run: | + #IF ${{ env.SENTRY_URL != 0 }} == true ( SET C_URL="${{ env.SENTRY_URL }}" ) ELSE ( SET C_URL="" ) + #build\ci\windows\build.bat -b 32 -n ${{ env.BUILD_NUMBER }} --crash_log_url %C_URL% IF ${{ secrets.TELEMETRY_TRACK_ID != 0 }} == true ( SET T_ID=${{ secrets.TELEMETRY_TRACK_ID }} ) ELSE ( SET T_ID="''" ) IF ${{ secrets.SENTRY_SERVER_MU3_KEY != 0 }} == true ( SET C_KEY=${{ secrets.SENTRY_SERVER_MU3_KEY }} ) ELSE ( SET C_KEY="''" ) - build\ci\windows\build.bat -b 32 -n ${{ github.run_id }} --telemetry %T_ID% --sentrykey %C_KEY% + build\ci\windows\build.bat -b 32 -n ${{ env.BUILD_NUMBER }} --telemetry %T_ID% --sentrykey %C_KEY% - name: Package - if: env.DO_BUILD == 'true' shell: cmd run: | IF ${{ secrets.WIN_SIGN_CERTIFICATE_ENCRYPT_SECRET != 0 }} == true ( SET S_S=${{ secrets.WIN_SIGN_CERTIFICATE_ENCRYPT_SECRET }} ) ELSE ( SET S_S="''" ) IF ${{ secrets.WIN_SIGN_CERTIFICATE_PASSWORD != 0 }} == true ( SET S_P=${{ secrets.WIN_SIGN_CERTIFICATE_PASSWORD }} ) ELSE ( SET S_P="''" ) IF ${{ env.BUILD_MODE }} == stable ( SET GUID=${{ secrets.WIN_MSI_STABLE_GUID }} ) ELSE ( SET GUID=${{ secrets.WIN_MSI_TESTING_GUID }} ) build\ci\windows\package.bat -b 32 --signsecret %S_S% --signpass %S_P% --guid %GUID% - - name: Checksum - if: env.DO_BUILD == 'true' + - name: Checksum run: | bash ./build/ci/tools/checksum.sh - - name: Publish package - if: env.DO_PUBLISH == 'true' + - name: Generate and upload dump symbols + if: env.DO_UPLOAD_SYMBOLS == 'true' shell: bash run: | - bash ./build/ci/tools/osuosl/publish.sh -s ${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }} --os windows -v 3 - - name: AppCast - if: env.DO_BUILD == 'true' + APP_BIN=$(pwd)/build.release/src/app/MuseScore3.pdb + cmake -DAPP_BIN=${APP_BIN} \ + -DSENTRY_URL=https://sentry.musescore.org \ + -DSENTRY_ORG=musescore \ + -DSENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} \ + -DSENTRY_PROJECT=${SENTRY_PROJECT} \ + -P build/ci/crashdumps/ci_generate_and_upload.cmake + - name: Publish to OSUOSL + if: env.DO_PUBLISH == 'true' shell: bash run: | - bash ./build/ci/tools/sparkle_appcast_gen.sh -p windows + #bash ./build/ci/tools/sparkle_appcast_gen.sh -p windows + bash ./build/ci/tools/osuosl/publish.sh -s ${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }} --os windows -v 3 - name: Upload artifacts on GitHub - if: env.DO_BUILD == 'true' + if: ${{ always() }} uses: actions/upload-artifact@v4 with: name: ${{ env.UPLOAD_ARTIFACT_NAME }} @@ -258,20 +380,24 @@ jobs: windows_portable: # Disable on pull_request - if: ${{ github.event_name == 'schedule' || contains(inputs.platforms, 'windows_portable') }} + if: | + github.event_name != 'pull_request' && + (github.event_name != 'workflow_dispatch' || contains(inputs.platforms, 'windows_portable')) && + (github.event_name != 'schedule' || github.repository == 'musescore/MuseScore') runs-on: windows-2022 steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.12.1 with: access_token: ${{ github.token }} - - name: Clone repository + - name: Clone repository (default) uses: actions/checkout@v4 + if: ${{ github.event_name != 'schedule' || github.event.schedule == '0 3 */1 */1 *' }} + - name: Clone repository (${{ env.CURRENT_RELEASE_BRANCH }}) + uses: actions/checkout@v4 + if: ${{ github.event_name == 'schedule' && github.event.schedule == '0 5 */1 */1 *' }} with: - fetch-depth: 3 - - name: Fetch submodules - run: | - git submodule update --init --recursive + ref: ${{ env.CURRENT_RELEASE_BRANCH }} - name: "Configure workflow" shell: bash env: @@ -283,83 +409,86 @@ jobs: bash ./build/ci/tools/make_build_number.sh BUILD_NUMBER=$(cat ./build.artifacts/env/build_number.env) - if [ "${{ inputs.publish }}" == "on" ]; then - DO_PUBLISH='true' - if [ -z "${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }}" ]; then - echo "warning: not set OSUOSL_SSH_ENCRYPT_SECRET, publish disabled" - DO_PUBLISH='false' - fi + DO_UPDATE_TS='false' + if [[ "$BUILD_MODE" == "testing" || "$BUILD_MODE" == "stable" ]]; then + DO_UPDATE_TS='true' + if [ -z "${{ secrets.TRANSIFEX_API_TOKEN }}" ]; then + echo "::warning::TRANSIFEX_API_TOKEN is empty; updating .ts files disabled" + DO_UPDATE_TS='false' + fi fi - DO_CHECKSUM='true' - if [ "$BUILD_MODE" == "devel" ]; then DO_CHECKSUM='false'; fi - - DO_APPCAST='true' - if [ "$BUILD_MODE" == "devel" ]; then DO_APPCAST='false'; fi - - DO_BUILD='false' - if [[ "$BUILD_MODE" == "testing" || "$BUILD_MODE" == "stable" ]]; then - DO_BUILD='true' + DO_PLACEHOLDER_TRANSLATIONS='false' + if [[ "$BUILD_MODE" == "nightly" || "$BUILD_MODE" == "devel" ]]; then + DO_PLACEHOLDER_TRANSLATIONS='true' fi - echo "!! ATTENTION !! Windows portable build run only for 'testing' and 'stable', and SKIP for 'pull requests' and nightly" DO_PUBLISH='false' + if [[ "${{ inputs.publish }}" == "on" || ("${{ github.event_name }}" == "schedule" && $BUILD_MODE == 'nightly') ]]; then + DO_PUBLISH='true' + if [ -z "${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }}" ]; then + echo "::warning::OSUOSL_SSH_ENCRYPT_SECRET is empty; not publishing to OSUOSL" + DO_PUBLISH='false' + fi + fi + ADD_INFO="_${GITHUB_REF#refs/heads/}" if [ "${{ github.event_name }}" == "schedule" ] && [ "${{ github.event.schedule }}" == "0 5 */1 */1 *" ]; then ADD_INFO="_${CURRENT_RELEASE_BRANCH}"; fi if [ "${{ github.event_name }}" == "pull_request" ]; then ADD_INFO="_${{ github.event.pull_request.number }}_${pull_request_title}"; fi - UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\?' '_' <<<"Mu3.7_${BUILD_NUMBER}_WinPortable${ADD_INFO}")" + UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\’' '_' <<<"Mu3.7_${BUILD_NUMBER}_Win32_portable${ADD_INFO}")" echo "github.repository: ${{ github.repository }}" - echo "BUILD_MODE=$BUILD_MODE" >> $GITHUB_ENV - echo "BUILD_MODE=$BUILD_MODE" - echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV - echo "BUILD_NUMBER: $BUILD_NUMBER" - echo "DO_BUILD=$DO_BUILD" >> $GITHUB_ENV - echo "DO_BUILD: $DO_BUILD" - echo "DO_PUBLISH=$DO_PUBLISH" >> $GITHUB_ENV - echo "DO_PUBLISH: $DO_PUBLISH" - echo "DO_CHECKSUM=$DO_CHECKSUM" >> $GITHUB_ENV - echo "DO_CHECKSUM: $DO_CHECKSUM" - echo "DO_APPCAST=$DO_APPCAST" >> $GITHUB_ENV - echo "DO_APPCAST: $DO_APPCAST" - echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" >> $GITHUB_ENV - echo "UPLOAD_ARTIFACT_NAME: $UPLOAD_ARTIFACT_NAME" + echo "BUILD_MODE=$BUILD_MODE" | tee -a $GITHUB_ENV + echo "BUILD_NUMBER=$BUILD_NUMBER" | tee -a $GITHUB_ENV + echo "DO_UPDATE_TS=$DO_UPDATE_TS" | tee -a $GITHUB_ENV + echo "DO_PLACEHOLDER_TRANSLATIONS=$DO_PLACEHOLDER_TRANSLATIONS" | tee -a $GITHUB_ENV + echo "DO_PUBLISH=$DO_PUBLISH" | tee -a $GITHUB_ENV + echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" | tee -a $GITHUB_ENV - name: Setup environment - if: env.DO_BUILD == 'true' run: | build\ci\windows\setup.bat -b 32 --portable ON + - name: Make environment file + shell: bash + run: | + bash ./build/ci/windows/make_environment.sh + - name: Generate _en.ts files + shell: bash + env: + LUPDATE_ARGS: "" + POSTPROCESS_ARGS: "--warn-only ${{ env.DO_PLACEHOLDER_TRANSLATIONS == 'true' && '--generate-placeholder-translations' || '' }}" + POSTPROCESS_LAUNCHER: "python3 -X utf8" + run: | + bash ./build/ci/translation/run_lupdate.sh + - name: Update .ts files + if: env.DO_UPDATE_TS == 'true' + shell: bash + run: | + bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s windows + bash ./build/ci/translation/tx_pull.sh - name: Build - if: env.DO_BUILD == 'true' shell: cmd run: | + #IF ${{ env.SENTRY_URL != 0 }} == true ( SET C_URL="${{ env.SENTRY_URL }}" ) ELSE ( SET C_URL="" ) + #build\ci\windows\build.bat -b 32 --portable ON -n ${{ env.BUILD_NUMBER }} --crash_log_url %C_URL% IF ${{ secrets.TELEMETRY_TRACK_ID != 0 }} == true ( SET T_ID=${{ secrets.TELEMETRY_TRACK_ID }} ) ELSE ( SET T_ID="''" ) IF ${{ secrets.SENTRY_SERVER_MU3_KEY != 0 }} == true ( SET C_KEY=${{ secrets.SENTRY_SERVER_MU3_KEY }} ) ELSE ( SET C_KEY="''" ) - build\ci\windows\build.bat -b 32 --portable ON -n ${{ github.run_id }} --telemetry %T_ID% --sentrykey %C_KEY% + build\ci\windows\build.bat -b 32 --portable ON -n ${{ env.BUILD_NUMBER }} --telemetry %T_ID% --sentrykey %C_KEY% - name: Package - if: env.DO_BUILD == 'true' shell: cmd run: | IF ${{ secrets.WIN_SIGN_CERTIFICATE_ENCRYPT_SECRET != 0 }} == true ( SET S_S=${{ secrets.WIN_SIGN_CERTIFICATE_ENCRYPT_SECRET }} ) ELSE ( SET S_S="''" ) IF ${{ secrets.WIN_SIGN_CERTIFICATE_PASSWORD != 0 }} == true ( SET S_P=${{ secrets.WIN_SIGN_CERTIFICATE_PASSWORD }} ) ELSE ( SET S_P="''" ) build\ci\windows\package.bat -b 32 --portable ON --signsecret %S_S% --signpass %S_P% - - name: Checksum - shell: bash - if: env.DO_BUILD == 'true' + - name: Checksum run: | bash ./build/ci/tools/checksum.sh - - name: Publish package + - name: Publish to OSUOSL if: env.DO_PUBLISH == 'true' shell: bash run: | - bash ./build/ci/tools/osuosl/publish.sh -s ${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }} --os windows -v 3 - - name: AppCast - if: env.DO_BUILD == 'true' - shell: bash - run: | - bash ./build/ci/tools/sparkle_appcast_gen.sh -p windows - - name: Upload artifacts on GitHub - if: env.DO_BUILD == 'true' + bash ./build/ci/tools/osuosl/publish.sh -s ${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }} --os windows -v 3 --arch x86_32-portable + - name: Upload artifacts on GitHub uses: actions/upload-artifact@v4 with: name: ${{ env.UPLOAD_ARTIFACT_NAME }} diff --git a/.github/workflows/check_visual_tests.yml b/.github/workflows/check_visual_tests.yml index 1d06e8dfdf66c..7e54789e1e6a0 100644 --- a/.github/workflows/check_visual_tests.yml +++ b/.github/workflows/check_visual_tests.yml @@ -2,8 +2,7 @@ name: 'Check: Visual Tests (vtests)' on: pull_request: - branches: - - 3.x + workflow_dispatch: jobs: run_vtests: @@ -34,7 +33,7 @@ jobs: - name: Setup the environment if: contains( env.found, '1') run: | - sudo bash ./build/ci/linux/setup.sh + bash ./build/ci/linux/setup.sh - name: Build if: contains( env.found, '1') run: | diff --git a/.github/workflows/update_release_info.yml b/.github/workflows/update_release_info.yml index 400fd7224c74b..55776a1b53213 100644 --- a/.github/workflows/update_release_info.yml +++ b/.github/workflows/update_release_info.yml @@ -51,27 +51,27 @@ jobs: S3_ALL_URL="s3://musescore-updates/feed/all.test.xml" fi - sudo bash ./build/ci/release/make_release_info_file.sh \ + bash ./build/ci/release/make_release_info_file.sh \ --token ${{ secrets.GITHUB_TOKEN }} \ --repo ${{ github.repository }} \ --release_tag ${{ inputs.tag }} - sudo bash ./build/ci/release/push_file_to_s3.sh \ + bash ./build/ci/release/push_file_to_s3.sh \ --s3_key ${{ secrets.S3_KEY_UPDATE }} \ --s3_secret ${{ secrets.S3_SECRET_UPDATE }} \ --s3_url ${S3_URL} \ --s3_bucket ${{ secrets.S3_BUCKET_UPDATE }} \ --file_name "release_info.json" - sudo bash ./build/ci/release/make_previous_releases_notes.sh \ + bash ./build/ci/release/make_previous_releases_notes.sh \ --s3_key ${{ secrets.S3_KEY_UPDATE }} \ --s3_secret ${{ secrets.S3_SECRET_UPDATE }} \ --s3_url ${S3_ALL_URL} \ --s3_bucket ${{ secrets.S3_BUCKET_UPDATE }} \ --current_file_name "release_info.json" \ --previous_file_name "previous_releases_notes.json" - - sudo bash ./build/ci/release/push_file_to_s3.sh \ + + bash ./build/ci/release/push_file_to_s3.sh \ --s3_key ${{ secrets.S3_KEY_UPDATE }} \ --s3_secret ${{ secrets.S3_SECRET_UPDATE }} \ --s3_url ${S3_ALL_URL} \ diff --git a/build/ci/linux/setup.sh b/build/ci/linux/setup.sh index 7c4b857e81ae0..f0895312bfaee 100755 --- a/build/ci/linux/setup.sh +++ b/build/ci/linux/setup.sh @@ -71,8 +71,8 @@ apt_packages_runtime=( libdrm-dev ) -apt-get update # no package lists in Docker image -apt-get install -y --no-install-recommends \ +sudo apt-get update # no package lists in Docker image +sudo apt-get install -y --no-install-recommends \ "${apt_packages_basic[@]}" \ "${apt_packages_standard[@]}" \ "${apt_packages_runtime[@]}" @@ -107,8 +107,8 @@ echo export QML2_IMPORT_PATH="${qt_path}/qml" >> ${ENV_FILE} # COMPILER gcc_version="7" -apt-get install -y --no-install-recommends "g++-${gcc_version}" -update-alternatives \ +sudo apt-get install -y --no-install-recommends "g++-${gcc_version}" +sudo update-alternatives \ --install /usr/bin/gcc gcc "/usr/bin/gcc-${gcc_version}" 40 \ --slave /usr/bin/g++ g++ "/usr/bin/g++-${gcc_version}" @@ -139,8 +139,8 @@ cmake --version chmod +x "${ENV_FILE}" # # tidy up (reduce size of Docker image) -# apt-get clean autoclean -# apt-get autoremove --purge -y +# sudo apt-get clean autoclean +# sudo apt-get autoremove --purge -y # rm -rf /tmp/* /var/{cache,log,backups}/* /var/lib/apt/* df -h . diff --git a/build/ci/release/get_file_from_s3.sh b/build/ci/release/get_file_from_s3.sh index 1de9d486426ef..a5b824c9f2a36 100755 --- a/build/ci/release/get_file_from_s3.sh +++ b/build/ci/release/get_file_from_s3.sh @@ -44,7 +44,7 @@ command -v s3cmd >/dev/null 2>&1 if [[ $? -ne 0 ]]; then echo "=== Install tools ===" - apt install python3-setuptools + sudo apt-get python3-setuptools echo "Install s3cmd" pip3 install s3cmd diff --git a/build/ci/release/make_previous_releases_notes.sh b/build/ci/release/make_previous_releases_notes.sh index e819c7a22ffa2..48c495d619780 100755 --- a/build/ci/release/make_previous_releases_notes.sh +++ b/build/ci/release/make_previous_releases_notes.sh @@ -44,14 +44,14 @@ done echo "=== Get release info ===" -sudo bash ./buildscripts/ci/release/get_file_from_s3.sh \ - --s3_key "${S3_KEY}" \ - --s3_secret "${S3_SECRET}" \ - --s3_url "${S3_URL}" \ - --s3_bucket "${S3_BUCKET}" \ +bash ./buildscripts/ci/release/get_file_from_s3.sh \ + --s3_key "${S3_KEY}" \ + --s3_secret "${S3_SECRET}" \ + --s3_url "${S3_URL}" \ + --s3_bucket "${S3_BUCKET}" \ --local_file_name "${PREVIOUS_FILE_NAME}" echo "=== Append release info to previous releases ===" HERE="$(cd "$(dirname "$0")" && pwd)" -python3 "$HERE"/append_release_to_previous_releases.py ${ARTIFACTS_DIR}/"${CURRENT_FILE_NAME}" ${ARTIFACTS_DIR}/"${PREVIOUS_FILE_NAME}" \ No newline at end of file +python3 "$HERE"/append_release_to_previous_releases.py ${ARTIFACTS_DIR}/"${CURRENT_FILE_NAME}" ${ARTIFACTS_DIR}/"${PREVIOUS_FILE_NAME}" diff --git a/build/ci/release/push_file_to_s3.sh b/build/ci/release/push_file_to_s3.sh index 37dd616f995d1..45dc9ce954af8 100755 --- a/build/ci/release/push_file_to_s3.sh +++ b/build/ci/release/push_file_to_s3.sh @@ -44,7 +44,7 @@ command -v s3cmd >/dev/null 2>&1 if [[ $? -ne 0 ]]; then echo "=== Install tools ===" - apt install python3-setuptools + sudo apt-get python3-setuptools echo "Install s3cmd" pip3 install s3cmd diff --git a/build/ci/tools/setup_ccache_config.sh b/build/ci/tools/setup_ccache_config.sh new file mode 100644 index 0000000000000..b3f4f8214c615 --- /dev/null +++ b/build/ci/tools/setup_ccache_config.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: GPL-3.0-only +# MuseScore-Studio-CLA-applies +# +# MuseScore Studio +# Music Composition & Notation +# +# Copyright (C) 2021 MuseScore Limited +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +echo "Setup ccache config" + +export CCACHE_DIR=$GITHUB_WORKSPACE/.ccache +mkdir -p $CCACHE_DIR + +echo "CCACHE_DIR=$CCACHE_DIR" | tee -a $GITHUB_ENV +echo "base_dir = $GITHUB_WORKSPACE" >$CCACHE_DIR/ccache.conf +echo "compression = true" >>$CCACHE_DIR/ccache.conf +echo "compression_level = 5" >>$CCACHE_DIR/ccache.conf +echo "max_size = 2G" >>$CCACHE_DIR/ccache.conf +echo "sloppiness=pch_defines,time_macros" >>$CCACHE_DIR/ccache.conf +cat $CCACHE_DIR/ccache.conf + +ccache -s +ccache -z From 08a9dcb2dc74eba9952c1bbd1bf3b480f8991802 Mon Sep 17 00:00:00 2001 From: Joachim Schmitz Date: Sat, 21 Sep 2024 18:33:00 +0200 Subject: [PATCH 2/2] TODO --- .github/workflows/build_linux.yml | 6 ++--- .github/workflows/build_macos.yml | 9 +++++--- .github/workflows/build_windows.yml | 26 ++++++++++----------- build/ci/windows/make_environment.sh | 34 ++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+), 19 deletions(-) create mode 100644 build/ci/windows/make_environment.sh diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index 0a4b2e9cfce23..d6e9f2cc9a908 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -161,12 +161,12 @@ jobs: LUPDATE_ARGS: "" POSTPROCESS_ARGS: ${{ env.DO_PLACEHOLDER_TRANSLATIONS == 'true' && '--generate-placeholder-translations' || '' }} run: | - bash ./build/ci/translation/run_lupdate.sh + #bash ./build/ci/translation/run_lupdate.sh - name: Update .ts files if: env.DO_UPDATE_TS == 'true' run: | - bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s linux - bash ./build/ci/translation/tx_pull.sh + #bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s linux + #bash ./build/ci/translation/tx_pull.sh - name: Build run: | T_ID=${{ secrets.TELEMETRY_TRACK_ID }}; if [ -z "$T_ID" ]; then T_ID="''"; fi diff --git a/.github/workflows/build_macos.yml b/.github/workflows/build_macos.yml index 79ebc97d01a93..03beaf159fd66 100644 --- a/.github/workflows/build_macos.yml +++ b/.github/workflows/build_macos.yml @@ -165,6 +165,9 @@ jobs: restore-keys: ${{github.workflow}}-ccache- - name: Setup ccache run: | + #sudo rm -rf "/Applications/Visual Studio.app" + #sudo rm -rf "/Applications/Visual Studio 2019.app" + #sudo rm -rf "/Users/runner/Library/Android/sdk" brew install ccache bash ./build/ci/tools/setup_ccache_config.sh @@ -176,12 +179,12 @@ jobs: LUPDATE_ARGS: "" POSTPROCESS_ARGS: "--warn-only ${{ env.DO_PLACEHOLDER_TRANSLATIONS == 'true' && '--generate-placeholder-translations' || '' }}" run: | - bash ./build/ci/translation/run_lupdate.sh + #bash ./build/ci/translation/run_lupdate.sh - name: Update .ts files if: env.DO_UPDATE_TS == 'true' run: | - bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s macos - bash ./build/ci/translation/tx_pull.sh + #bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s macos + #bash ./build/ci/translation/tx_pull.sh - name: Build run: | #C_URL=${SENTRY_URL}; if [ -z "$C_URL" ]; then C_URL="''"; fi diff --git a/.github/workflows/build_windows.yml b/.github/workflows/build_windows.yml index 172203cab0dc5..60dd6b2a06223 100644 --- a/.github/workflows/build_windows.yml +++ b/.github/workflows/build_windows.yml @@ -159,7 +159,7 @@ jobs: - name: Make environment file shell: bash run: | - bash ./build/ci/windows/make_environment.sh + #bash ./build/ci/windows/make_environment.sh - name: Generate _en.ts files shell: bash env: @@ -167,13 +167,13 @@ jobs: POSTPROCESS_ARGS: "--warn-only ${{ env.DO_PLACEHOLDER_TRANSLATIONS == 'true' && '--generate-placeholder-translations' || '' }}" POSTPROCESS_LAUNCHER: "python3 -X utf8" run: | - bash ./build/ci/translation/run_lupdate.sh + #bash ./build/ci/translation/run_lupdate.sh - name: Update .ts files if: env.DO_UPDATE_TS == 'true' shell: bash run: | - bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s windows - bash ./build/ci/translation/tx_pull.sh + #bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s windows + #bash ./build/ci/translation/tx_pull.sh - name: Build shell: cmd run: | @@ -188,7 +188,7 @@ jobs: IF ${{ secrets.WIN_SIGN_CERTIFICATE_ENCRYPT_SECRET != 0 }} == true ( SET S_S=${{ secrets.WIN_SIGN_CERTIFICATE_ENCRYPT_SECRET }} ) ELSE ( SET S_S="''" ) IF ${{ secrets.WIN_SIGN_CERTIFICATE_PASSWORD != 0 }} == true ( SET S_P=${{ secrets.WIN_SIGN_CERTIFICATE_PASSWORD }} ) ELSE ( SET S_P="''" ) IF ${{ env.BUILD_MODE }} == stable ( SET GUID=${{ secrets.WIN_MSI_STABLE_GUID }} ) ELSE ( SET GUID=${{ secrets.WIN_MSI_TESTING_GUID }} ) - build\ci\windows\package.bat --signsecret %S_S% --signpass %S_P% --guid %GUID + build\ci\windows\package.bat --signsecret %S_S% --signpass %S_P% --guid %GUID% - name: Checksum run: | bash ./build/ci/tools/checksum.sh @@ -321,7 +321,7 @@ jobs: - name: Make environment file shell: bash run: | - bash ./build/ci/windows/make_environment.sh + #bash ./build/ci/windows/make_environment.sh - name: Generate _en.ts files shell: bash env: @@ -329,13 +329,13 @@ jobs: POSTPROCESS_ARGS: "--warn-only ${{ env.DO_PLACEHOLDER_TRANSLATIONS == 'true' && '--generate-placeholder-translations' || '' }}" POSTPROCESS_LAUNCHER: "python3 -X utf8" run: | - bash ./build/ci/translation/run_lupdate.sh + #bash ./build/ci/translation/run_lupdate.sh - name: Update .ts files if: env.DO_UPDATE_TS == 'true' shell: bash run: | - bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s windows - bash ./build/ci/translation/tx_pull.sh + #bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s windows + #bash ./build/ci/translation/tx_pull.sh - name: Build shell: cmd run: | @@ -451,7 +451,7 @@ jobs: - name: Make environment file shell: bash run: | - bash ./build/ci/windows/make_environment.sh + #bash ./build/ci/windows/make_environment.sh - name: Generate _en.ts files shell: bash env: @@ -459,13 +459,13 @@ jobs: POSTPROCESS_ARGS: "--warn-only ${{ env.DO_PLACEHOLDER_TRANSLATIONS == 'true' && '--generate-placeholder-translations' || '' }}" POSTPROCESS_LAUNCHER: "python3 -X utf8" run: | - bash ./build/ci/translation/run_lupdate.sh + #bash ./build/ci/translation/run_lupdate.sh - name: Update .ts files if: env.DO_UPDATE_TS == 'true' shell: bash run: | - bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s windows - bash ./build/ci/translation/tx_pull.sh + #bash ./build/ci/translation/tx_install.sh -t ${{ secrets.TRANSIFEX_API_TOKEN }} -s windows + #bash ./build/ci/translation/tx_pull.sh - name: Build shell: cmd run: | diff --git a/build/ci/windows/make_environment.sh b/build/ci/windows/make_environment.sh new file mode 100644 index 0000000000000..ec4f9b6d30f16 --- /dev/null +++ b/build/ci/windows/make_environment.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: GPL-3.0-only +# MuseScore-Studio-CLA-applies +# +# MuseScore Studio +# Music Composition & Notation +# +# Copyright (C) 2021 MuseScore Limited +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +BUILD_TOOLS=$HOME/build_tools +ENV_FILE=$BUILD_TOOLS/environment.sh + +mkdir -p $BUILD_TOOLS +rm -f $ENV_FILE + +QT_DIR="/c/Qt/6.2.4" + +echo export PATH="${QT_DIR}/msvc2019_64/bin:\${PATH}" >> ${ENV_FILE} + +chmod +x "$ENV_FILE" + +cat $ENV_FILE