CI_Windows MU4 #360
This file contains 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: CI_Windows MU4 | |
on: | |
pull_request: | |
branches: | |
- master | |
schedule: | |
- cron: '0 4 */1 */1 *' # At 04:00 on every day-of-month | |
workflow_dispatch: | |
inputs: | |
build_mode: | |
description: 'Build mode: devel_build, nightly_build, testing_build, stable_build' | |
required: true | |
default: 'devel_build' | |
publish: | |
description: 'Publish to FTP: on - publish' | |
required: false | |
default: 'off' | |
sentry_project: | |
description: 'Upload symbols and dumps to Sentry (choose a project): editor, sandbox' | |
required: false | |
default: '' | |
jobs: | |
build_mu4_x64: | |
runs-on: windows-2019 | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@0.9.1 | |
with: | |
access_token: ${{ github.token }} | |
- name: Clone repository | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 3 | |
- name: Fetch submodules | |
run: | | |
git submodule update --init --recursive | |
- name: "Configure workflow" | |
shell: bash | |
env: | |
pull_request_title: ${{ github.event.pull_request.title }} | |
run: | | |
bash ./build/ci/tools/make_build_mode_env.sh -e ${{ github.event_name }} -m ${{ github.event.inputs.build_mode }} | |
BUILD_MODE=$(cat ./build.artifacts/env/build_mode.env) | |
DO_PUBLISH='false' | |
if [[ "${{ github.event.inputs.publish }}" == "on" || "$BUILD_MODE" == "nightly_build" ]]; 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_BUILD='true' | |
if [ "$BUILD_MODE" == "nightly_build" ]; then | |
if [ "${{ github.repository }}" != "musescore/MuseScore" ]; then | |
DO_BUILD='false' | |
fi | |
fi | |
DO_UPDATE_TS='false' | |
if [[ "$BUILD_MODE" == "testing_build" || "$BUILD_MODE" == "stable_build" ]]; then | |
DO_UPDATE_TS='true' | |
if [ -z "${{ secrets.TRANSIFEX_API_TOKEN }}" ]; then | |
echo "warning: not set TRANSIFEX_API_TOKEN, update .ts disabled" | |
DO_UPDATE_TS='false' | |
fi | |
fi | |
DO_PLACEHOLDER_TRANSLATIONS='false' | |
if [[ "$DO_BUILD" == "true" ]]; then | |
if [[ "$BUILD_MODE" == "nightly_build" || "$BUILD_MODE" == "devel_build" ]]; then | |
DO_PLACEHOLDER_TRANSLATIONS='true' | |
fi | |
fi | |
DO_UPLOAD_SYMBOLS='false' | |
SENTRY_PROJECT=${{ github.event.inputs.sentry_project }} | |
SENTRY_URL="" | |
if [ "$SENTRY_PROJECT" == "editor" ] && [ ${{ secrets.SENTRY_SERVER_MU3_KEY }} != 0 ]; then | |
DO_UPLOAD_SYMBOLS='true' | |
SENTRY_URL=https://sentry.musescore.org/api/2/minidump/?sentry_key=${{ secrets.SENTRY_SERVER_MU3_KEY }} | |
fi | |
if [ "$SENTRY_PROJECT" == "sandbox" ] && [ ${{ secrets.SENTRY_SERVER_SANDBOX_KEY }} != 0 ]; then | |
DO_UPLOAD_SYMBOLS='true' | |
SENTRY_URL=https://sentry.musescore.org/api/3/minidump/?sentry_key=${{ secrets.SENTRY_SERVER_SANDBOX_KEY }} | |
fi | |
if [ $DO_BUILD == 'false' ]; then | |
DO_UPLOAD_SYMBOLS='false' | |
DO_PUBLISH='false' | |
fi | |
if [ "${{ github.event_name }}" == "pull_request" ]; then PR_INFO="_${{ github.event.pull_request.number }}_${pull_request_title}"; fi | |
UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\' '_' <<<"MU4_${{ github.run_id }}_Win${PR_INFO}")" | |
echo "github.repository: ${{ github.repository }}" | |
echo "BUILD_MODE=$BUILD_MODE" >> $GITHUB_ENV | |
echo "BUILD_MODE: $BUILD_MODE" | |
echo "DO_BUILD=$DO_BUILD" >> $GITHUB_ENV | |
echo "DO_BUILD: $DO_BUILD" | |
echo "DO_UPDATE_TS=$DO_UPDATE_TS" >> $GITHUB_ENV | |
echo "DO_UPDATE_TS: $DO_UPDATE_TS" | |
echo "DO_PLACEHOLDER_TRANSLATIONS=$DO_PLACEHOLDER_TRANSLATIONS" >> $GITHUB_ENV | |
echo "DO_PLACEHOLDER_TRANSLATIONS: $DO_PLACEHOLDER_TRANSLATIONS" | |
echo "DO_PUBLISH=$DO_PUBLISH" >> $GITHUB_ENV | |
echo "DO_PUBLISH: $DO_PUBLISH" | |
echo "DO_UPLOAD_SYMBOLS=$DO_UPLOAD_SYMBOLS" >> $GITHUB_ENV | |
echo "DO_UPLOAD_SYMBOLS: $DO_UPLOAD_SYMBOLS" | |
echo "SENTRY_PROJECT=$SENTRY_PROJECT" >> $GITHUB_ENV | |
echo "SENTRY_PROJECT: $SENTRY_PROJECT" | |
echo "SENTRY_URL=$SENTRY_URL" >> $GITHUB_ENV | |
echo "SENTRY_URL: $SENTRY_URL" | |
echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" >> $GITHUB_ENV | |
echo "UPLOAD_ARTIFACT_NAME: $UPLOAD_ARTIFACT_NAME" | |
- name: Setup environment | |
if: env.DO_BUILD == 'true' | |
run: | | |
build\ci\windows\setup.bat | |
- name: Make environment file | |
if: env.DO_BUILD == 'true' | |
shell: bash | |
run: | | |
bash ./build/ci/windows/make_environment.sh | |
- name: Generate _en.ts files | |
if: env.DO_BUILD == 'true' | |
shell: bash | |
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: Generate placeholder.ts files | |
if: env.DO_PLACEHOLDER_TRANSLATIONS == 'true' | |
shell: bash | |
run: | | |
python3 -X utf8 ./tools/translations/placeholder_translations.py | |
- name: Generate .qm files | |
if: env.DO_BUILD == 'true' | |
shell: bash | |
run: | | |
bash ./build/ci/translation/run_lrelease.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="" ) | |
IF ${{ secrets.YOUTUBE_API_KEY != 0 }} == true ( SET YT_API_KEY=${{ secrets.YOUTUBE_API_KEY }} ) ELSE ( SET YT_API_KEY="" ) | |
build\ci\windows\build.bat -n ${{ github.run_id }} --youtube_api_key %YT_API_KEY% --crash_log_url %C_URL% | |
- name: Generate dump symbols | |
if: env.DO_BUILD == 'true' | |
shell: bash | |
run: | | |
bash ./build/ci/windows/dumpsyms.sh | |
- 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_build ( SET GUID=${{ secrets.WIN_MSI_STABLE_MU4_GUID }} ) ELSE ( SET GUID=${{ secrets.WIN_MSI_TESTING_MU4_GUID }} ) | |
build\ci\windows\package.bat --signsecret %S_S% --signpass %S_P% --guid %GUID% | |
- name: Checksum | |
if: env.DO_BUILD == 'true' | |
run: | | |
bash ./build/ci/tools/checksum.sh | |
- name: Upload dump symbols | |
if: env.DO_UPLOAD_SYMBOLS == 'true' | |
shell: bash | |
run: | | |
bash ./build/ci/tools/sentry_syms_upload.sh -t ${{ secrets.SENTRY_AUTH_TOKEN }} -p ${SENTRY_PROJECT} | |
- name: Publish package | |
if: env.DO_PUBLISH == 'true' | |
shell: bash | |
run: | | |
bash ./build/ci/tools/osuosl/publish.sh -s ${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }} --os windows -v 4 | |
- 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: ${{ always() }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{ env.UPLOAD_ARTIFACT_NAME }} | |
path: build.artifacts\ | |
# Builds x32 and portable currently disabled | |
# They need to be enabled when we switch to mu4 by default and decide to make a release. | |
# build_x32: | |
# runs-on: windows-2019 | |
# steps: | |
# - name: Cancel Previous Runs | |
# uses: styfle/cancel-workflow-action@0.9.1 | |
# with: | |
# access_token: ${{ github.token }} | |
# - name: Clone repository | |
# uses: actions/checkout@v2 | |
# with: | |
# fetch-depth: 3 | |
# - name: Fetch submodules | |
# run: | | |
# git submodule update --init --recursive | |
# - name: "Configure workflow" | |
# shell: bash | |
# env: | |
# pull_request_title: ${{ github.event.pull_request.title }} | |
# run: | | |
# bash ./build/ci/tools/make_build_mode_env.sh -e ${{ github.event_name }} -m ${{ github.event.inputs.build_mode }} | |
# BUILD_MODE=$(cat ./build.artifacts/env/build_mode.env) | |
# DO_BUILD='false' | |
# if [[ "$BUILD_MODE" == "testing_build" || "$BUILD_MODE" == "stable_build" ]]; then | |
# DO_BUILD='true' | |
# fi | |
# echo "DO_BUILD=$DO_BUILD" >> $GITHUB_ENV | |
# echo "DO_BUILD: $DO_BUILD" | |
# # Publish disabled for build x32 | |
# DO_PUBLISH='false' | |
# echo "DO_PUBLISH=$DO_PUBLISH" >> $GITHUB_ENV | |
# echo "DO_PUBLISH: $DO_PUBLISH" | |
# if [ "${{ github.event_name }}" == "pull_request" ]; then PR_INFO="_${{ github.event.pull_request.number }}_${pull_request_title}"; fi | |
# UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\' '_' <<<"MU4_${{ github.run_id }}_Win_x86${PR_INFO}")" | |
# echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" >> $GITHUB_ENV | |
# echo "UPLOAD_ARTIFACT_NAME: $UPLOAD_ARTIFACT_NAME" | |
# - name: Setup environment | |
# if: env.DO_BUILD == 'true' | |
# run: | | |
# build\ci\windows\setup.bat -b 32 | |
# - name: Build | |
# if: env.DO_BUILD == 'true' | |
# shell: cmd | |
# run: | | |
# IF ${{ secrets.SENTRY_SERVER_SANDBOX_KEY != 0 }} == true ( SET C_KEY=${{ secrets.SENTRY_SERVER_SANDBOX_KEY }} ) ELSE ( SET C_KEY="''" ) | |
# IF ${{ secrets.YOUTUBE_API_KEY != 0 }} == true ( SET YT_API_KEY=${{ secrets.YOUTUBE_API_KEY }} ) ELSE ( SET YT_API_KEY="''" ) | |
# build\ci\windows\build.bat -b 32 -n ${{ github.run_id }} --youtube_api_key %YT_API_KEY% --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 --signsecret %S_S% --signpass %S_P% | |
# - name: Checksum | |
# if: env.DO_BUILD == 'true' | |
# run: | | |
# bash ./build/ci/tools/checksum.sh | |
# - name: Publish package | |
# if: env.DO_PUBLISH == 'true' | |
# shell: cmd | |
# run: | | |
# build\ci\windows\publish.bat --secret ${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }} | |
# - name: AppCast | |
# shell: bash | |
# run: | | |
# bash ./build/ci/tools/sparkle_appcast_gen.sh -p windows | |
# - name: Upload artifacts on GitHub | |
# if: env.DO_BUILD == 'true' | |
# uses: actions/upload-artifact@v2 | |
# with: | |
# name: ${{ env.UPLOAD_ARTIFACT_NAME }} | |
# path: build.artifacts\ | |
# build_portable: | |
# runs-on: windows-2019 | |
# steps: | |
# - name: Cancel Previous Runs | |
# uses: styfle/cancel-workflow-action@0.9.1 | |
# with: | |
# access_token: ${{ github.token }} | |
# - name: Clone repository | |
# uses: actions/checkout@v2 | |
# with: | |
# fetch-depth: 3 | |
# - name: Fetch submodules | |
# run: | | |
# git submodule update --init --recursive | |
# - name: "Configure workflow" | |
# shell: bash | |
# env: | |
# pull_request_title: ${{ github.event.pull_request.title }} | |
# run: | | |
# bash ./build/ci/tools/make_build_mode_env.sh -e ${{ github.event_name }} -m ${{ github.event.inputs.build_mode }} | |
# BUILD_MODE=$(cat ./build.artifacts/env/build_mode.env) | |
# echo "BUILD_MODE=$BUILD_MODE" >> $GITHUB_ENV | |
# DO_BUILD='true' | |
# # if [[ "$BUILD_MODE" == "testing_build" || "$BUILD_MODE" == "stable_build" ]]; then | |
# # DO_BUILD='true' | |
# # fi | |
# echo "DO_BUILD=$DO_BUILD" >> $GITHUB_ENV | |
# echo "DO_BUILD: $DO_BUILD" | |
# # Publish disabled for build x32 | |
# DO_PUBLISH='false' | |
# echo "DO_PUBLISH=$DO_PUBLISH" >> $GITHUB_ENV | |
# echo "DO_PUBLISH: $DO_PUBLISH" | |
# if [ "${{ github.event_name }}" == "pull_request" ]; then PR_INFO="_${{ github.event.pull_request.number }}_${pull_request_title}"; fi | |
# UPLOAD_ARTIFACT_NAME="$(tr '":<>|*?/\\' '_' <<<"MU4_${{ github.run_id }}_Win_Portable${PR_INFO}")" | |
# echo "UPLOAD_ARTIFACT_NAME=$UPLOAD_ARTIFACT_NAME" >> $GITHUB_ENV | |
# echo "UPLOAD_ARTIFACT_NAME: $UPLOAD_ARTIFACT_NAME" | |
# - name: Setup environment | |
# if: env.DO_BUILD == 'true' | |
# run: | | |
# build\ci\windows\setup.bat --portable ON | |
# - name: Build | |
# if: env.DO_BUILD == 'true' | |
# shell: cmd | |
# run: | | |
# IF ${{ secrets.SENTRY_SERVER_SANDBOX_KEY != 0 }} == true ( SET C_KEY=${{ secrets.SENTRY_SERVER_SANDBOX_KEY }} ) ELSE ( SET C_KEY="''" ) | |
# IF ${{ secrets.YOUTUBE_API_KEY != 0 }} == true ( SET YT_API_KEY=${{ secrets.YOUTUBE_API_KEY }} ) ELSE ( SET YT_API_KEY="''" ) | |
# build\ci\windows\build.bat --portable ON -n ${{ github.run_id }} --youtube_api_key %YT_API_KEY% --sentrykey %C_KEY% | |
# - name: Package | |
# if: env.DO_BUILD == 'true' | |
# shell: cmd | |
# run: | | |
# build\ci\windows\package.bat --portable ON | |
# - name: Checksum | |
# if: env.DO_BUILD == 'true' | |
# run: | | |
# bash ./build/ci/tools/checksum.sh | |
# - name: Publish package | |
# if: env.DO_PUBLISH == 'true' | |
# run: | | |
# build\ci\windows\publish.bat --secret ${{ secrets.OSUOSL_SSH_ENCRYPT_SECRET }} | |
# shell: cmd | |
# - name: AppCast | |
# shell: bash | |
# run: | | |
# bash ./build/ci/tools/sparkle_appcast_gen.sh -p windows | |
# - name: Upload artifacts on GitHub | |
# if: env.DO_BUILD == 'true' | |
# uses: actions/upload-artifact@v2 | |
# with: | |
# name: ${{ env.UPLOAD_ARTIFACT_NAME }} | |
# path: build.artifacts\ |