Build: Backend #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: 'Build: Backend' | |
| on: | |
| schedule: | |
| - cron: '0 3 * * 4' # At 03:00 on every Thursday | |
| workflow_dispatch: | |
| inputs: | |
| build_mode: | |
| description: 'Build mode: devel, testing, stable' | |
| default: 'devel' | |
| required: true | |
| publish: | |
| description: 'Publish: on - publish' | |
| default: 'off' | |
| required: false | |
| deploy: | |
| description: 'Deploy: on - deploy' | |
| default: 'off' | |
| required: false | |
| workflow_call: | |
| inputs: | |
| build_mode: | |
| description: 'Build mode: devel, nightly, testing, stable' | |
| default: 'devel' | |
| type: string | |
| required: true | |
| publish: | |
| description: 'Publish: on - publish' | |
| default: 'off' | |
| type: string | |
| required: false | |
| deploy: | |
| description: 'Deploy: on - deploy' | |
| default: 'off' | |
| type: string | |
| required: false | |
| build_number: | |
| description: "Build number (if not provided, will be generated)" | |
| default: "" | |
| type: string | |
| required: false | |
| jobs: | |
| backend: | |
| runs-on: ubuntu-22.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 | |
| uses: actions/checkout@v6 | |
| - name: "Configure workflow" | |
| run: | | |
| bash ./buildscripts/ci/tools/make_build_mode_env.sh -e ${{ github.event_name }} -m ${{ inputs.build_mode }} | |
| BUILD_MODE=$(cat ./build.artifacts/env/build_mode.env) | |
| if [ -n "${{ inputs.build_number }}" ]; then | |
| BUILD_NUMBER="${{ inputs.build_number }}" | |
| bash ./buildscripts/ci/tools/make_build_number.sh "$BUILD_NUMBER" | |
| else | |
| bash ./buildscripts/ci/tools/make_build_number.sh | |
| fi | |
| BUILD_NUMBER=$(cat ./build.artifacts/env/build_number.env) | |
| DO_PUBLISH='false' | |
| if [ "${{ inputs.publish }}" = "on" ]; then | |
| DO_PUBLISH='true'; | |
| if [ -z "${{ secrets.S3_KEY_CONVERTER }}" ]; then | |
| echo "::warning::S3_KEY_CONVERTER is empty; publishing to S3 disabled" | |
| DO_PUBLISH='false' | |
| fi | |
| if [ -z "${{ secrets.S3_SECRET_CONVERTER }}" ]; then | |
| echo "::warning::S3_SECRET_CONVERTER is empty; publishing to S3 disabled" | |
| DO_PUBLISH='false' | |
| fi | |
| fi | |
| DO_DEPLOY='false' | |
| if [ "${{ inputs.deploy }}" = "on" ]; then | |
| DO_DEPLOY='true' | |
| fi | |
| bash ./buildscripts/ci/tools/make_version_env.sh $BUILD_NUMBER | |
| VERSION=$(cat ./build.artifacts/env/build_version.env) | |
| GITHUB_ARTIFACT_NAME="MuseScore-${VERSION}" | |
| VERSION_MAJOR_MINOR=$(echo "$VERSION" | cut -d '.' -f 1,2) | |
| echo "github.repository: ${{ github.repository }}" | |
| echo "BUILD_MODE=$BUILD_MODE" | tee -a $GITHUB_ENV | |
| echo "BUILD_NUMBER=$BUILD_NUMBER" | tee -a $GITHUB_ENV | |
| echo "DO_PUBLISH=$DO_PUBLISH" | tee -a $GITHUB_ENV | |
| echo "DO_DEPLOY=$DO_DEPLOY" | tee -a $GITHUB_ENV | |
| echo "VERSION=$VERSION" | tee -a $GITHUB_ENV | |
| echo "VERSION_MAJOR_MINOR=$VERSION_MAJOR_MINOR" | tee -a $GITHUB_ENV | |
| echo "GITHUB_ARTIFACT_NAME=$GITHUB_ARTIFACT_NAME" | tee -a $GITHUB_ENV | |
| - name: Install Qt | |
| uses: jurplel/install-qt-action@v4 | |
| with: | |
| version: 6.10.0 | |
| host: 'linux' | |
| target: 'desktop' | |
| arch: 'linux_gcc_64' | |
| modules: 'qt5compat qtnetworkauth qtscxml qtshadertools qtwebsockets' | |
| - name: Setup environment | |
| run: | | |
| bash ./buildscripts/ci/backend/setup.sh | |
| - name: Build | |
| run: | | |
| bash ./buildscripts/ci/backend/build.sh -n ${{ env.BUILD_NUMBER }} --build_videoexport | |
| - name: Package | |
| run: | | |
| bash ./buildscripts/ci/backend/package.sh | |
| - name: Send package to S3 | |
| if: env.DO_PUBLISH == 'true' | |
| run: | | |
| bash ./buildscripts/ci/backend/publish_to_s3.sh \ | |
| --s3_key ${{ secrets.S3_KEY_CONVERTER }} \ | |
| --s3_secret ${{ secrets.S3_SECRET_CONVERTER }} | |
| - name: Build Docker (used package from S3) | |
| if: env.DO_PUBLISH == 'true' | |
| run: | | |
| bash ./buildscripts/ci/backend/build_docker.sh | |
| - name: Publish to Registry | |
| if: env.DO_PUBLISH == 'true' | |
| run: | | |
| bash ./buildscripts/ci/backend/publish_to_registry.sh --token ${{ secrets.PACKAGES_PAT }} | |
| - name: Check and update config on S3 | |
| if: env.DO_DEPLOY == 'true' | |
| run: | | |
| bash ./buildscripts/ci/backend/check_update_config_on_s3.sh \ | |
| --token ${{ secrets.PACKAGES_PAT }} \ | |
| --s3_key ${{ secrets.S3_KEY_CONVERTER }} \ | |
| --s3_secret ${{ secrets.S3_SECRET_CONVERTER }} \ | |
| --stage ${{ inputs.build_mode }} \ | |
| --mu_version ${{ env.VERSION }} \ | |
| --mu_version_major_minor ${{ env.VERSION_MAJOR_MINOR }} | |
| - name: Upload artifacts on GitHub | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: ${{ env.GITHUB_ARTIFACT_NAME }} | |
| path: ./build.artifacts/ |