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