66
77 workflow_dispatch :
88 inputs :
9+ platforms :
10+ description : ' Platforms to build:'
11+ default : ' linux_x64 linux_arm64'
12+ required : true
913 build_mode :
1014 description : ' Build mode: devel, testing, stable'
1115 default : ' devel'
2428 required : false
2529 workflow_call :
2630 inputs :
31+ platforms :
32+ description : ' Platforms to build:'
33+ default : ' linux_x64 linux_arm64'
34+ type : string
35+ required : true
2736 build_mode :
2837 description : ' Build mode: devel, nightly, testing, stable'
2938 default : ' devel'
@@ -50,93 +59,115 @@ env:
5059
5160jobs :
5261 backend :
53- runs-on : ubuntu-22.04
5462 if : github.event_name != 'schedule' || github.repository == 'musescore/MuseScore'
63+ runs-on : ${{ matrix.runs-on }}
64+ strategy :
65+ fail-fast : false
66+ matrix :
67+ platform : ${{
68+ (github.event_name != 'workflow_dispatch'
69+ || (contains(inputs.platforms, 'linux_x64') && contains(inputs.platforms, 'linux_arm64')))
70+ && fromJson('["linux_x64","linux_arm64"]')
71+ || (contains(inputs.platforms, 'linux_x64') && fromJson('["linux_x64"]')
72+ || (contains(inputs.platforms, 'linux_arm64') && fromJson('["linux_arm64"]')
73+ || fromJson('[]')))
74+ }}
75+ include :
76+ - platform : linux_arm64
77+ arch : aarch64
78+ runs-on : ubuntu-24.04-arm
79+ qt-host : linux_arm64
80+ qt-arch : linux_gcc_arm64
5581 steps :
56- - name : Cancel Previous Runs
57- 58- with :
59- access_token : ${{ github.token }}
60- - name : Clone repository
61- uses : actions/checkout@v4
82+ - name : Cancel Previous Runs
83+ 84+ with :
85+ access_token : ${{ github.token }}
86+ - name : Clone repository
87+ uses : actions/checkout@v5
6288
6389 - name : " Configure workflow"
64- run : |
65- bash ./buildscripts/ci/tools/make_build_mode_env.sh -e ${{ github.event_name }} -m ${{ inputs.build_mode }}
66- BUILD_MODE=$(cat ./build.artifacts/env/build_mode.env)
67-
68- bash ./buildscripts/ci/tools/make_build_number.sh
69- BUILD_NUMBER=$(cat ./build.artifacts/env/build_number.env)
70-
71- DO_PUBLISH='false'
72- if [ "${{ inputs.publish }}" = "on" ]; then
73- DO_PUBLISH='true';
74- if [ -z "${{ secrets.S3_KEY_CONVERTER }}" ]; then
75- echo "::warning::S3_KEY_CONVERTER is empty; publishing to S3 disabled"
76- DO_PUBLISH='false'
90+ run : |
91+ bash ./buildscripts/ci/tools/make_build_mode_env.sh -e ${{ github.event_name }} -m ${{ inputs.build_mode }}
92+ BUILD_MODE=$(cat ./build.artifacts/env/build_mode.env)
93+
94+ if [ -n "${{ inputs.build_number }}" ]; then
95+ BUILD_NUMBER="${{ inputs.build_number }}"
96+ bash ./buildscripts/ci/tools/make_build_number.sh "$BUILD_NUMBER"
97+ else
98+ bash ./buildscripts/ci/tools/make_build_number.sh
7799 fi
78- if [ -z "${{ secrets.S3_SECRET_CONVERTER }}" ]; then
79- echo "::warning::S3_SECRET_CONVERTER is empty; publishing to S3 disabled"
80- DO_PUBLISH='false'
100+ BUILD_NUMBER=$(cat ./build.artifacts/env/build_number.env)
101+
102+ DO_PUBLISH='false'
103+ if [ "${{ inputs.publish }}" = "on" ]; then
104+ DO_PUBLISH='true';
105+ if [ -z "${{ secrets.S3_KEY_CONVERTER }}" ]; then
106+ echo "::warning::S3_KEY_CONVERTER is empty; publishing to S3 disabled"
107+ DO_PUBLISH='false'
108+ fi
109+ if [ -z "${{ secrets.S3_SECRET_CONVERTER }}" ]; then
110+ echo "::warning::S3_SECRET_CONVERTER is empty; publishing to S3 disabled"
111+ DO_PUBLISH='false'
112+ fi
81113 fi
82- fi
83-
84- DO_DEPLOY='false'
85- if [ "${{ inputs.deploy }}" = "on" ]; then
86- DO_DEPLOY='true'
87- fi
88-
89- bash ./buildscripts/ci/tools/make_version_env.sh $BUILD_NUMBER
90- VERSION=$(cat ./build.artifacts/env/build_version.env)
91- GITHUB_ARTIFACT_NAME="MuseScore-${VERSION}"
92-
93- VERSION_MAJOR_MINOR=$(echo "$VERSION" | cut -d '.' -f 1,2)
94-
95- echo "github.repository: ${{ github.repository }}"
96- echo "BUILD_MODE=$BUILD_MODE" | tee -a $GITHUB_ENV
97- echo "BUILD_NUMBER=$BUILD_NUMBER" | tee -a $GITHUB_ENV
98- echo "DO_PUBLISH=$DO_PUBLISH" | tee -a $GITHUB_ENV
99- echo "DO_DEPLOY=$DO_DEPLOY" | tee -a $GITHUB_ENV
100- echo "VERSION=$VERSION" | tee -a $GITHUB_ENV
101- echo "VERSION_MAJOR_MINOR=$VERSION_MAJOR_MINOR" | tee -a $GITHUB_ENV
102- echo "GITHUB_ARTIFACT_NAME=$GITHUB_ARTIFACT_NAME" | tee -a $GITHUB_ENV
103-
104- - name : Install Qt
105- uses : jurplel/install-qt-action@v4
106- with :
107- version : ${{ env.USE_QT69 == 'on' && '6.9.2' || '6.2.4' }}
108- host : ' linux'
109- target : ' desktop'
110- arch : ${{ env.USE_QT69 == 'on' && 'linux_gcc_64' || 'gcc_64' }}
111- modules : ' qt5compat qtnetworkauth qtscxml qtshadertools qtwebsockets'
112-
113- - name : Setup environment
114- run : |
115- bash ./buildscripts/ci/backend/setup.sh
116-
117- - name : Build
118- run : |
119- bash ./buildscripts/ci/backend/build.sh -n ${{ env.BUILD_NUMBER }} --build_videoexport
120-
121- - name : Package
122- run : |
123- bash ./buildscripts/ci/backend/package.sh
124-
125- - name : Send package to S3
126- if : env.DO_PUBLISH == 'true'
127- run : |
128- bash ./buildscripts/ci/backend/publish_to_s3.sh \
129- --s3_key ${{ secrets.S3_KEY_CONVERTER }} \
130- --s3_secret ${{ secrets.S3_SECRET_CONVERTER }}
131114
132- - name : Build Docker (used package from S3)
133- if : env.DO_PUBLISH == 'true'
134- run : |
135- bash ./buildscripts/ci/backend/build_docker.sh
115+ DO_DEPLOY='false'
116+ if [ "${{ inputs.deploy }}" = "on" ]; then
117+ DO_DEPLOY='true'
118+ fi
136119
137- - name : Publish to Registry
138- if : env.DO_PUBLISH == 'true'
139- run : |
120+ bash ./buildscripts/ci/tools/make_version_env.sh $BUILD_NUMBER
121+ VERSION=$(cat ./build.artifacts/env/build_version.env)
122+ GITHUB_ARTIFACT_NAME="MuseScore-${VERSION}_${{ matrix.arch }}"
123+
124+ VERSION_MAJOR_MINOR=$(echo "$VERSION" | cut -d '.' -f 1,2)
125+
126+ echo "github.repository: ${{ github.repository }}"
127+ echo "BUILD_MODE=$BUILD_MODE" | tee -a $GITHUB_ENV
128+ echo "BUILD_NUMBER=$BUILD_NUMBER" | tee -a $GITHUB_ENV
129+ echo "DO_PUBLISH=$DO_PUBLISH" | tee -a $GITHUB_ENV
130+ echo "DO_DEPLOY=$DO_DEPLOY" | tee -a $GITHUB_ENV
131+ echo "VERSION=$VERSION" | tee -a $GITHUB_ENV
132+ echo "VERSION_MAJOR_MINOR=$VERSION_MAJOR_MINOR" | tee -a $GITHUB_ENV
133+ echo "GITHUB_ARTIFACT_NAME=$GITHUB_ARTIFACT_NAME" | tee -a $GITHUB_ENV
134+
135+ - name : Install Qt
136+ uses : jurplel/install-qt-action@v4
137+ with :
138+ version : 6.10.0
139+ host : ${{ matrix.qt-host }}
140+ target : ' desktop'
141+ arch : ${{ matrix.qt-arch }}
142+ modules : ' qt5compat qtnetworkauth qtscxml qtshadertools qtwebsockets'
143+
144+ - name : Setup environment
145+ run : |
146+ bash ./buildscripts/ci/backend/setup.sh --arch ${{ matrix.arch }}
147+
148+ - name : Build
149+ run : |
150+ bash ./buildscripts/ci/backend/build.sh -n ${{ env.BUILD_NUMBER }} --build_videoexport
151+
152+ - name : Package
153+ run : |
154+ bash ./buildscripts/ci/backend/package.sh --arch ${{ matrix.arch }}
155+
156+ - name : Send package to S3
157+ if : env.DO_PUBLISH == 'true'
158+ run : |
159+ bash ./buildscripts/ci/backend/publish_to_s3.sh \
160+ --s3_key ${{ secrets.S3_KEY_CONVERTER }} \
161+ --s3_secret ${{ secrets.S3_SECRET_CONVERTER }}
162+
163+ - name : Build Docker (used package from S3)
164+ if : env.DO_PUBLISH == 'true'
165+ run : |
166+ bash ./buildscripts/ci/backend/build_docker.sh --arch ${{ matrix.arch }}
167+
168+ - name : Publish to Registry
169+ if : env.DO_PUBLISH == 'true'
170+ run : |
140171 bash ./buildscripts/ci/backend/publish_to_registry.sh --token ${{ secrets.PACKAGES_PAT }}
141172
142173 - name : Deploy to musescore.com
@@ -149,12 +180,9 @@ jobs:
149180 --mu_version ${{ env.VERSION }} \
150181 --mu_version_major_minor ${{ env.VERSION_MAJOR_MINOR }}
151182
152- pip install jenkinsapi
153- python3 ./buildscripts/ci/backend/deploy.py --mu_version ${{ env.VERSION_MAJOR_MINOR }} --api_token ${{ secrets.JENKINS_API_TOKEN }}
154-
155- - name : Upload artifacts on GitHub
156- if : ${{ always() }}
157- uses : actions/upload-artifact@v4
158- with :
159- name : ${{ env.GITHUB_ARTIFACT_NAME }}
160- path : ./build.artifacts/
183+ - name : Upload artifacts on GitHub
184+ if : ${{ always() }}
185+ uses : actions/upload-artifact@v5
186+ with :
187+ name : ${{ env.GITHUB_ARTIFACT_NAME }}
188+ path : ./build.artifacts/
0 commit comments