From 6d810ccb9d18c3346ee2562cfa5386649c3440c6 Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Thu, 17 Nov 2022 17:52:48 +0100 Subject: [PATCH] Split up installer workflow per OS. This requires a separate action to be run per OS, as there is no real way to have conditional lists within YML. The idea is that the installer can be build per OS (and also, another intent of this change is to make it so that people don't have to wait for all artifacts to be ready to download a single one). part of CURA-9880 --- .github/workflows/cura-all-installers.yml | 105 ++++++++++++++++++++++ .github/workflows/cura-installer.yml | 40 ++++----- 2 files changed, 122 insertions(+), 23 deletions(-) create mode 100644 .github/workflows/cura-all-installers.yml diff --git a/.github/workflows/cura-all-installers.yml b/.github/workflows/cura-all-installers.yml new file mode 100644 index 0000000000..a0c716d123 --- /dev/null +++ b/.github/workflows/cura-all-installers.yml @@ -0,0 +1,105 @@ +name: Cura All Installers +run-name: ${{ inputs.cura_conan_version }} by @${{ github.actor }} + +on: + workflow_dispatch: + inputs: + cura_conan_version: + description: 'Cura Conan Version' + default: 'cura/latest@ultimaker/testing' + required: true + conan_args: + description: 'Conan args: eq.: --require-override' + default: '' + required: false + conan_config: + description: 'Conan config branch to use' + default: '' + required: false + enterprise: + description: 'Build Cura as an Enterprise edition' + required: true + default: false + type: boolean + staging: + description: 'Use staging API' + required: true + default: false + type: boolean + installer: + description: 'Create the installer' + required: true + default: true + type: boolean + build_windows: + description: 'Build for Windows' + required: true + default: true + type: boolean + build_linux: + description: 'Build for Linux' + required: true + default: true + type: boolean + build_macos: + description: 'Build for MacOs' + required: true + default: true + type: boolean + + # Run the nightly at 3:25 UTC on working days + schedule: + - cron: '25 3 * * 1-5' + +jobs: + windows-installer-create: + if: ${{ inputs.build_windows }} + uses: ./.github/workflows/cura-installer.yml + with: + platform: 'windows-2022' + os_name: 'win64' + cura_conan_version: ${{ inputs.cura_conan_version }} + conan_args: ${{ inputs.conan_args }} + conan_config: ${{ inputs.conan_config }} + enterprise: ${{ inputs.enterprise }} + staging: ${{ inputs.staging }} + installer: ${{ inputs.installer }} + + linux-installer-create: + if: ${{ inputs.build_linux }} + uses: ./.github/workflows/cura-installer.yml + with: + platform: 'ubuntu-20.04' + os_name: 'linux' + cura_conan_version: ${{ inputs.cura_conan_version }} + conan_args: ${{ inputs.conan_args }} + conan_config: ${{ inputs.conan_config }} + enterprise: ${{ inputs.enterprise }} + staging: ${{ inputs.staging }} + installer: ${{ inputs.installer }} + + linux-modern-installer-create: + if: ${{ inputs.build_linux }} + uses: ./.github/workflows/cura-installer.yml + with: + platform: 'ubuntu-22.04' + os_name: 'linux-modern' + cura_conan_version: ${{ inputs.cura_conan_version }} + conan_args: ${{ inputs.conan_args }} + conan_config: ${{ inputs.conan_config }} + enterprise: ${{ inputs.enterprise }} + staging: ${{ inputs.staging }} + installer: ${{ inputs.installer }} + + macos-installer-create: + if: ${{ inputs.build_macos }} + uses: ./.github/workflows/cura-installer.yml + with: + platform: 'macos-11' + os_name: 'mac' + cura_conan_version: ${{ inputs.cura_conan_version }} + conan_args: ${{ inputs.conan_args }} + conan_config: ${{ inputs.conan_config }} + enterprise: ${{ inputs.enterprise }} + staging: ${{ inputs.staging }} + installer: ${{ inputs.installer }} diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml index d0f9fb895e..9ad4a6d971 100644 --- a/.github/workflows/cura-installer.yml +++ b/.github/workflows/cura-installer.yml @@ -1,9 +1,17 @@ name: Cura Installer -run-name: ${{ inputs.cura_conan_version }} by @${{ github.actor }} +run-name: ${{ inputs.cura_conan_version }} for ${{ inputs.platform }} by @${{ github.actor }} on: - workflow_dispatch: + workflow_call: inputs: + platform: + description: 'Selected Installer OS' + default: 'ubuntu-20.04' + required: true + os_name: + description: 'OS Friendly Name' + default: 'linux' + required: true cura_conan_version: description: 'Cura Conan Version' default: 'cura/latest@ultimaker/testing' @@ -32,11 +40,6 @@ on: default: true type: boolean - # Run the nightly at 3:25 UTC on working days - #FIXME: Provide the same default values as the workflow dispatch - schedule: - - cron: '25 3 * * 1-5' - env: CONAN_LOGIN_USERNAME_CURA: ${{ secrets.CONAN_USER }} CONAN_PASSWORD_CURA: ${{ secrets.CONAN_PASS }} @@ -59,16 +62,7 @@ env: jobs: cura-installer-create: - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - include: - - { os: macos-11, os_id: 'mac' } - - { os: windows-2022, os_id: 'win64' } - - { os: ubuntu-20.04, os_id: 'linux' } - - { os: ubuntu-22.04, os_id: 'linux-modern' } + runs-on: ${{ inputs.platform }} steps: - name: Checkout @@ -217,34 +211,34 @@ jobs: - name: Archive the artifacts (bash) if: ${{ github.event.inputs.installer == 'false' && runner.os != 'Windows' }} - run: tar -zcf "./Ultimaker-Cura-$CURA_VERSION_FULL-${{ matrix.os_id }}.tar.gz" "./Ultimaker-Cura/" + run: tar -zcf "./Ultimaker-Cura-$CURA_VERSION_FULL-${{ inputs.os_name }}.tar.gz" "./Ultimaker-Cura/" working-directory: dist - name: Archive the artifacts (Powershell) if: ${{ github.event.inputs.installer == 'false' && runner.os == 'Windows' }} - run: Compress-Archive -Path ".\Ultimaker-Cura" -DestinationPath ".\Ultimaker-Cura-$Env:CURA_VERSION_FULL-${{ matrix.os_id }}.zip" + run: Compress-Archive -Path ".\Ultimaker-Cura" -DestinationPath ".\Ultimaker-Cura-$Env:CURA_VERSION_FULL-${{ inputs.os_name }}.zip" working-directory: dist - name: Create the Windows exe installer (Powershell) if: ${{ github.event.inputs.installer == 'true' && runner.os == 'Windows' }} run: | - python ..\cura_inst\packaging\NSIS\create_windows_installer.py ../cura_inst . "Ultimaker-Cura-$Env:CURA_VERSION_FULL-${{ matrix.os_id }}.exe" + python ..\cura_inst\packaging\NSIS\create_windows_installer.py ../cura_inst . "Ultimaker-Cura-$Env:CURA_VERSION_FULL-${{ inputs.os_name }}.exe" working-directory: dist - name: Create the Linux AppImage (Bash) if: ${{ github.event.inputs.installer == 'true' && runner.os == 'Linux' }} - run: python ../cura_inst/packaging/AppImage/create_appimage.py ./Ultimaker-Cura $CURA_VERSION_FULL "Ultimaker-Cura-$CURA_VERSION_FULL-${{ matrix.os_id }}.AppImage" + run: python ../cura_inst/packaging/AppImage/create_appimage.py ./Ultimaker-Cura $CURA_VERSION_FULL "Ultimaker-Cura-$CURA_VERSION_FULL-${{ inputs.os_name }}.AppImage" working-directory: dist - name: Create the MacOS dmg (Bash) if: ${{ github.event.inputs.installer == 'true' && runner.os == 'Macos' }} - run: python ../cura_inst/packaging/dmg/dmg_sign_noterize.py ../cura_inst . "Ultimaker-Cura-$CURA_VERSION_FULL-${{ matrix.os_id }}.dmg" + run: python ../cura_inst/packaging/dmg/dmg_sign_noterize.py ../cura_inst . "Ultimaker-Cura-$CURA_VERSION_FULL-${{ inputs.os_name }}.dmg" working-directory: dist - name: Upload the artifacts uses: actions/upload-artifact@v3 with: - name: Ultimaker-Cura-${{ env.CURA_VERSION_FULL }}-${{ matrix.os_id }} + name: Ultimaker-Cura-${{ env.CURA_VERSION_FULL }}-${{ inputs.os_name }} path: | dist/*.tar.gz dist/*.zip