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