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'
2024 required : false
2125 workflow_call :
2226 inputs :
27+ platforms :
28+ description : ' Platforms to build:'
29+ default : ' linux_x64 linux_arm64'
30+ type : string
31+ required : true
2332 build_mode :
2433 description : ' Build mode: devel, nightly, testing, stable'
2534 default : ' devel'
4352
4453jobs :
4554 backend :
46- runs-on : ubuntu-22.04
4755 if : github.event_name != 'schedule' || github.repository == 'musescore/MuseScore'
56+ runs-on : ${{ matrix.runs-on }}
57+ strategy :
58+ fail-fast : false
59+ matrix :
60+ platform : ${{
61+ (github.event_name != 'workflow_dispatch'
62+ || (contains(inputs.platforms, 'linux_x64') && contains(inputs.platforms, 'linux_arm64')))
63+ && fromJson('["linux_x64","linux_arm64"]')
64+ || (contains(inputs.platforms, 'linux_x64') && fromJson('["linux_x64"]')
65+ || (contains(inputs.platforms, 'linux_arm64') && fromJson('["linux_arm64"]')
66+ || fromJson('[]')))
67+ }}
68+ include :
69+ - platform : linux_arm64
70+ arch : aarch64
71+ runs-on : ubuntu-24.04-arm
72+ qt-host : linux_arm64
73+ qt-arch : linux_gcc_arm64
4874 steps :
49- - name : Cancel Previous Runs
50- 51- with :
52- access_token : ${{ github.token }}
53- - name : Clone repository
54- uses : actions/checkout@v5
75+ - name : Cancel Previous Runs
76+ 77+ with :
78+ access_token : ${{ github.token }}
79+ - name : Clone repository
80+ uses : actions/checkout@v5
5581
5682 - name : " Configure workflow"
57- run : |
58- bash ./buildscripts/ci/tools/make_build_mode_env.sh -e ${{ github.event_name }} -m ${{ inputs.build_mode }}
59- BUILD_MODE=$(cat ./build.artifacts/env/build_mode.env)
60-
61- if [ -n "${{ inputs.build_number }}" ]; then
62- BUILD_NUMBER="${{ inputs.build_number }}"
63- bash ./buildscripts/ci/tools/make_build_number.sh "$BUILD_NUMBER"
64- else
65- bash ./buildscripts/ci/tools/make_build_number.sh
66- fi
67- BUILD_NUMBER=$(cat ./build.artifacts/env/build_number.env)
68-
69- DO_PUBLISH='false'
70- if [ "${{ inputs.publish }}" = "on" ]; then
71- DO_PUBLISH='true';
72- if [ -z "${{ secrets.S3_KEY_CONVERTER }}" ]; then
73- echo "::warning::S3_KEY_CONVERTER is empty; publishing to S3 disabled"
74- DO_PUBLISH='false'
83+ run : |
84+ bash ./buildscripts/ci/tools/make_build_mode_env.sh -e ${{ github.event_name }} -m ${{ inputs.build_mode }}
85+ BUILD_MODE=$(cat ./build.artifacts/env/build_mode.env)
86+
87+ if [ -n "${{ inputs.build_number }}" ]; then
88+ BUILD_NUMBER="${{ inputs.build_number }}"
89+ bash ./buildscripts/ci/tools/make_build_number.sh "$BUILD_NUMBER"
90+ else
91+ bash ./buildscripts/ci/tools/make_build_number.sh
7592 fi
76- if [ -z "${{ secrets.S3_SECRET_CONVERTER }}" ]; then
77- echo "::warning::S3_SECRET_CONVERTER is empty; publishing to S3 disabled"
78- DO_PUBLISH='false'
93+ BUILD_NUMBER=$(cat ./build.artifacts/env/build_number.env)
94+
95+ DO_PUBLISH='false'
96+ if [ "${{ inputs.publish }}" = "on" ]; then
97+ DO_PUBLISH='true';
98+ if [ -z "${{ secrets.S3_KEY_CONVERTER }}" ]; then
99+ echo "::warning::S3_KEY_CONVERTER is empty; publishing to S3 disabled"
100+ DO_PUBLISH='false'
101+ fi
102+ if [ -z "${{ secrets.S3_SECRET_CONVERTER }}" ]; then
103+ echo "::warning::S3_SECRET_CONVERTER is empty; publishing to S3 disabled"
104+ DO_PUBLISH='false'
105+ fi
79106 fi
80- fi
81-
82- DO_DEPLOY='false'
83- if [ "${{ inputs.deploy }}" = "on" ]; then
84- DO_DEPLOY='true'
85- fi
86-
87- bash ./buildscripts/ci/tools/make_version_env.sh $BUILD_NUMBER
88- VERSION=$(cat ./build.artifacts/env/build_version.env)
89- GITHUB_ARTIFACT_NAME="MuseScore-${VERSION}"
90-
91- VERSION_MAJOR_MINOR=$(echo "$VERSION" | cut -d '.' -f 1,2)
92-
93- echo "github.repository: ${{ github.repository }}"
94- echo "BUILD_MODE=$BUILD_MODE" | tee -a $GITHUB_ENV
95- echo "BUILD_NUMBER=$BUILD_NUMBER" | tee -a $GITHUB_ENV
96- echo "DO_PUBLISH=$DO_PUBLISH" | tee -a $GITHUB_ENV
97- echo "DO_DEPLOY=$DO_DEPLOY" | tee -a $GITHUB_ENV
98- echo "VERSION=$VERSION" | tee -a $GITHUB_ENV
99- echo "VERSION_MAJOR_MINOR=$VERSION_MAJOR_MINOR" | tee -a $GITHUB_ENV
100- echo "GITHUB_ARTIFACT_NAME=$GITHUB_ARTIFACT_NAME" | tee -a $GITHUB_ENV
101-
102- - name : Install Qt
103- uses : jurplel/install-qt-action@v4
104- with :
105- version : 6.10.0
106- host : ' linux'
107- target : ' desktop'
108- arch : ' linux_gcc_64'
109- modules : ' qt5compat qtnetworkauth qtscxml qtshadertools qtwebsockets'
110-
111- - name : Setup environment
112- run : |
113- bash ./buildscripts/ci/backend/setup.sh
114-
115- - name : Build
116- run : |
117- bash ./buildscripts/ci/backend/build.sh -n ${{ env.BUILD_NUMBER }} --build_videoexport
118107
119- - name : Package
120- run : |
121- bash ./buildscripts/ci/backend/package.sh
122-
123- - name : Send package to S3
124- if : env.DO_PUBLISH == 'true'
125- run : |
126- bash ./buildscripts/ci/backend/publish_to_s3.sh \
127- --s3_key ${{ secrets.S3_KEY_CONVERTER }} \
128- --s3_secret ${{ secrets.S3_SECRET_CONVERTER }}
129-
130- - name : Build Docker (used package from S3)
131- if : env.DO_PUBLISH == 'true'
132- run : |
133- bash ./buildscripts/ci/backend/build_docker.sh
108+ DO_DEPLOY='false'
109+ if [ "${{ inputs.deploy }}" = "on" ]; then
110+ DO_DEPLOY='true'
111+ fi
134112
135- - name : Publish to Registry
136- if : env.DO_PUBLISH == 'true'
137- run : |
113+ bash ./buildscripts/ci/tools/make_version_env.sh $BUILD_NUMBER
114+ VERSION=$(cat ./build.artifacts/env/build_version.env)
115+ GITHUB_ARTIFACT_NAME="MuseScore-${VERSION}_${{ matrix.arch }}"
116+
117+ VERSION_MAJOR_MINOR=$(echo "$VERSION" | cut -d '.' -f 1,2)
118+
119+ echo "github.repository: ${{ github.repository }}"
120+ echo "BUILD_MODE=$BUILD_MODE" | tee -a $GITHUB_ENV
121+ echo "BUILD_NUMBER=$BUILD_NUMBER" | tee -a $GITHUB_ENV
122+ echo "DO_PUBLISH=$DO_PUBLISH" | tee -a $GITHUB_ENV
123+ echo "DO_DEPLOY=$DO_DEPLOY" | tee -a $GITHUB_ENV
124+ echo "VERSION=$VERSION" | tee -a $GITHUB_ENV
125+ echo "VERSION_MAJOR_MINOR=$VERSION_MAJOR_MINOR" | tee -a $GITHUB_ENV
126+ echo "GITHUB_ARTIFACT_NAME=$GITHUB_ARTIFACT_NAME" | tee -a $GITHUB_ENV
127+
128+ - name : Install Qt
129+ uses : jurplel/install-qt-action@v4
130+ with :
131+ version : 6.10.0
132+ host : ${{ matrix.qt-host }}
133+ target : ' desktop'
134+ arch : ${{ matrix.qt-arch }}
135+ modules : ' qt5compat qtnetworkauth qtscxml qtshadertools qtwebsockets'
136+
137+ - name : Setup environment
138+ run : |
139+ bash ./buildscripts/ci/backend/setup.sh --arch ${{ matrix.arch }}
140+
141+ - name : Build
142+ run : |
143+ bash ./buildscripts/ci/backend/build.sh -n ${{ env.BUILD_NUMBER }} --build_videoexport
144+
145+ - name : Package
146+ run : |
147+ bash ./buildscripts/ci/backend/package.sh --arch ${{ matrix.arch }}
148+
149+ - name : Send package to S3
150+ if : env.DO_PUBLISH == 'true'
151+ run : |
152+ bash ./buildscripts/ci/backend/publish_to_s3.sh \
153+ --s3_key ${{ secrets.S3_KEY_CONVERTER }} \
154+ --s3_secret ${{ secrets.S3_SECRET_CONVERTER }}
155+
156+ - name : Build Docker (used package from S3)
157+ if : env.DO_PUBLISH == 'true'
158+ run : |
159+ bash ./buildscripts/ci/backend/build_docker.sh --arch ${{ matrix.arch }}
160+
161+ - name : Publish to Registry
162+ if : env.DO_PUBLISH == 'true'
163+ run : |
138164 bash ./buildscripts/ci/backend/publish_to_registry.sh --token ${{ secrets.PACKAGES_PAT }}
139165
140166 - name : Check and update config on S3
@@ -148,9 +174,9 @@ jobs:
148174 --mu_version ${{ env.VERSION }} \
149175 --mu_version_major_minor ${{ env.VERSION_MAJOR_MINOR }}
150176
151- - name : Upload artifacts on GitHub
152- if : ${{ always() }}
153- uses : actions/upload-artifact@v5
154- with :
155- name : ${{ env.GITHUB_ARTIFACT_NAME }}
156- path : ./build.artifacts/
177+ - name : Upload artifacts on GitHub
178+ if : ${{ always() }}
179+ uses : actions/upload-artifact@v5
180+ with :
181+ name : ${{ env.GITHUB_ARTIFACT_NAME }}
182+ path : ./build.artifacts/
0 commit comments