From 6b1722b6938016a9360d84f65262f43421d7065e Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Mon, 9 Jan 2023 13:26:37 +0100 Subject: [PATCH 1/3] Create separate archives per extension Contribute to CURA-9157 and CURA-6867 --- .github/workflows/cura-all-installers.yml | 2 +- .github/workflows/cura-installer.yml | 40 ++++++++++++++++++----- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/.github/workflows/cura-all-installers.yml b/.github/workflows/cura-all-installers.yml index ddad7bd9d9..34ccffe54b 100644 --- a/.github/workflows/cura-all-installers.yml +++ b/.github/workflows/cura-all-installers.yml @@ -1,5 +1,5 @@ name: Cura All Installers -run-name: ${{ inputs.cura_conan_version }} for exe ${{ inputs.build_windows_exe }}, msi ${{ inputs.build_windows_msi }}, dmg ${{ inputs.build_macos }}, appimage ${{ inputs.build_linux }} +run-name: ${{ inputs.cura_conan_version }} for exe ${{ inputs.build_windows_exe }}, msi ${{ inputs.build_windows_msi }}, dmg ${{ inputs.build_macos }}, appimage ${{ inputs.build_linux }} - enterprise ${{ inputs.enterprise }} on: workflow_dispatch: diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml index cef65061e2..ace9ef6f99 100644 --- a/.github/workflows/cura-installer.yml +++ b/.github/workflows/cura-installer.yml @@ -229,26 +229,48 @@ jobs: - name: Create the Cura dist run: pyinstaller ./cura_inst/UltiMaker-Cura.spec + - name: Output the name file name and extension + shell: python + run: | + import os + enterprise = "-Enterprise" if "${{ inputs.enterprise }}" == "true" else "" + installer_filename = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-${{ inputs.os_name }}" + if "${{ runner.os }}" == "Windows": + installer_ext = "msi" if "${{ inputs.msi_installer }}" == "true" else "exe" + elif "${{ runner.os }}" == "Macos": + installer_ext = "dmg" + else: + installer_ext = "AppImage" + output_env = os.environ["GITHUB_ENV"] + content = "" + if os.path.exists(output_env): + with open(output_env, "r") as f: + content = f.read() + with open(output_env, "w") as f: + f.write(content) + f.writelines(f"INSTALLER_FILENAME={installer_filename}\n") + f.writelines(f"INSTALLER_EXT={installer_ext}\n") + - name: Archive the artifacts (bash) if: ${{ !inputs.installer && runner.os != 'Windows' }} - run: tar -zcf "./UltiMaker-Cura-$CURA_VERSION_FULL-${{ inputs.os_name }}.tar.gz" "./UltiMaker-Cura/" + run: tar -zcf "./$INSTALLER_FILENAME.tar.gz" "./UltiMaker-Cura/" working-directory: dist - name: Archive the artifacts (Powershell) if: ${{ !inputs.installer && runner.os == 'Windows' }} - run: Compress-Archive -Path ".\UltiMaker-Cura" -DestinationPath ".\UltiMaker-Cura-$Env:CURA_VERSION_FULL-${{ inputs.os_name }}.zip" + run: Compress-Archive -Path ".\UltiMaker-Cura" -DestinationPath ".\$Env:INSTALLER_FILENAME.zip" working-directory: dist - name: Create the Windows exe installer (Powershell) if: ${{ inputs.installer && runner.os == 'Windows' && !inputs.msi_installer }} run: | - python ..\cura_inst\packaging\NSIS\create_windows_installer.py ../cura_inst . "UltiMaker-Cura-$Env:CURA_VERSION_FULL-${{ inputs.os_name }}.exe" + python ..\cura_inst\packaging\NSIS\create_windows_installer.py ../cura_inst . "$Env:INSTALLER_FILENAME.$Env:INSTALLER_EXT" working-directory: dist - name: Create the Windows msi installer (Powershell) if: ${{ inputs.installer && runner.os == 'Windows' && inputs.msi_installer }} run: | - python ..\cura_inst\packaging\msi\create_windows_msi.py ..\cura_inst .\UltiMaker-Cura "UltiMaker-Cura-$Env:CURA_VERSION_FULL-${{ inputs.os_name }}.msi" "$Env:CURA_APP_NAME" + python ..\cura_inst\packaging\msi\create_windows_msi.py ..\cura_inst .\UltiMaker-Cura "$Env:INSTALLER_FILENAME.$Env:INSTALLER_EXT" "$Env:CURA_APP_NAME" working-directory: dist - name: Sign the Windows exe installer (Powershell) @@ -256,7 +278,7 @@ jobs: env: PFX_PATH: ${{ steps.create-pfx.outputs.PFX_PATH }} run: | - & "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/signtool.exe" sign /f $Env:PFX_PATH /p "$Env:WIN_CERT_INSTALLER_CER_PASS" /fd SHA256 /t http://timestamp.digicert.com "UltiMaker-Cura-$Env:CURA_VERSION_FULL-${{ inputs.os_name }}.exe" + & "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/signtool.exe" sign /f $Env:PFX_PATH /p "$Env:WIN_CERT_INSTALLER_CER_PASS" /fd SHA256 /t http://timestamp.digicert.com "$Env:INSTALLER_FILENAME.$Env:INSTALLER_EXT" working-directory: dist - name: Sign the Windows msi installer (Powershell) @@ -264,23 +286,23 @@ jobs: env: PFX_PATH: ${{ steps.create-pfx.outputs.PFX_PATH }} run: | - & "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/signtool.exe" sign /f $Env:PFX_PATH /p "$Env:WIN_CERT_INSTALLER_CER_PASS" /fd SHA256 /t http://timestamp.digicert.com "UltiMaker-Cura-$Env:CURA_VERSION_FULL-${{ inputs.os_name }}.msi" + & "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/signtool.exe" sign /f $Env:PFX_PATH /p "$Env:WIN_CERT_INSTALLER_CER_PASS" /fd SHA256 /t http://timestamp.digicert.com "$Env:INSTALLER_FILENAME.$Env:INSTALLER_EXT" working-directory: dist - name: Create the Linux AppImage (Bash) if: ${{ inputs.installer && runner.os == 'Linux' }} - run: python ../cura_inst/packaging/AppImage/create_appimage.py ./UltiMaker-Cura $CURA_VERSION_FULL "UltiMaker-Cura-$CURA_VERSION_FULL-${{ inputs.os_name }}.AppImage" + run: python ../cura_inst/packaging/AppImage/create_appimage.py ./UltiMaker-Cura $CURA_VERSION_FULL "$Env:INSTALLER_FILENAME.$Env:INSTALLER_EXT" working-directory: dist - name: Create the MacOS dmg (Bash) if: ${{ inputs.installer && runner.os == 'Macos' }} - run: python ../cura_inst/packaging/dmg/dmg_sign_noterize.py ../cura_inst . "UltiMaker-Cura-$CURA_VERSION_FULL-${{ inputs.os_name }}.dmg" + run: python ../cura_inst/packaging/dmg/dmg_sign_noterize.py ../cura_inst . "$Env:INSTALLER_FILENAME.$Env:INSTALLER_EXT" working-directory: dist - name: Upload the artifacts uses: actions/upload-artifact@v3 with: - name: UltiMaker-Cura-${{ env.CURA_VERSION_FULL }}-${{ inputs.os_name }} + name: "$Env:INSTALLER_FILENAME-$Env:INSTALLER_EXT" path: | dist/*.tar.gz dist/*.zip From 79b898b9f66a24d18e8b5161dbed4adde96423c6 Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Mon, 9 Jan 2023 14:05:05 +0100 Subject: [PATCH 2/3] Use step output instead of environment vars Contribute to CURA-9157 and CURA-6867 --- .github/workflows/cura-installer.yml | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml index ace9ef6f99..cbae6dc805 100644 --- a/.github/workflows/cura-installer.yml +++ b/.github/workflows/cura-installer.yml @@ -230,6 +230,7 @@ jobs: run: pyinstaller ./cura_inst/UltiMaker-Cura.spec - name: Output the name file name and extension + id: filename shell: python run: | import os @@ -241,7 +242,7 @@ jobs: installer_ext = "dmg" else: installer_ext = "AppImage" - output_env = os.environ["GITHUB_ENV"] + output_env = os.environ["GITHUB_OUTPUT"] content = "" if os.path.exists(output_env): with open(output_env, "r") as f: @@ -250,27 +251,28 @@ jobs: f.write(content) f.writelines(f"INSTALLER_FILENAME={installer_filename}\n") f.writelines(f"INSTALLER_EXT={installer_ext}\n") + f.writelines(f"FULL_INSTALLER_FILENAME={installer_filename}.{installer_ext}\n") - name: Archive the artifacts (bash) if: ${{ !inputs.installer && runner.os != 'Windows' }} - run: tar -zcf "./$INSTALLER_FILENAME.tar.gz" "./UltiMaker-Cura/" + run: tar -zcf "./${{ steps.filename.outputs.INSTALLER_FILENAME }}.tar.gz" "./UltiMaker-Cura/" working-directory: dist - name: Archive the artifacts (Powershell) if: ${{ !inputs.installer && runner.os == 'Windows' }} - run: Compress-Archive -Path ".\UltiMaker-Cura" -DestinationPath ".\$Env:INSTALLER_FILENAME.zip" + run: Compress-Archive -Path ".\UltiMaker-Cura" -DestinationPath ".\${{ steps.filename.outputs.INSTALLER_FILENAME }}.zip" working-directory: dist - name: Create the Windows exe installer (Powershell) if: ${{ inputs.installer && runner.os == 'Windows' && !inputs.msi_installer }} run: | - python ..\cura_inst\packaging\NSIS\create_windows_installer.py ../cura_inst . "$Env:INSTALLER_FILENAME.$Env:INSTALLER_EXT" + python ..\cura_inst\packaging\NSIS\create_windows_installer.py ../cura_inst . "${{ steps.filename.outputs.FULL_INSTALLER_FILENAME }}" working-directory: dist - name: Create the Windows msi installer (Powershell) if: ${{ inputs.installer && runner.os == 'Windows' && inputs.msi_installer }} run: | - python ..\cura_inst\packaging\msi\create_windows_msi.py ..\cura_inst .\UltiMaker-Cura "$Env:INSTALLER_FILENAME.$Env:INSTALLER_EXT" "$Env:CURA_APP_NAME" + python ..\cura_inst\packaging\msi\create_windows_msi.py ..\cura_inst .\UltiMaker-Cura "${{ steps.filename.outputs.FULL_INSTALLER_FILENAME }}" "$Env:CURA_APP_NAME" working-directory: dist - name: Sign the Windows exe installer (Powershell) @@ -278,7 +280,7 @@ jobs: env: PFX_PATH: ${{ steps.create-pfx.outputs.PFX_PATH }} run: | - & "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/signtool.exe" sign /f $Env:PFX_PATH /p "$Env:WIN_CERT_INSTALLER_CER_PASS" /fd SHA256 /t http://timestamp.digicert.com "$Env:INSTALLER_FILENAME.$Env:INSTALLER_EXT" + & "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/signtool.exe" sign /f $Env:PFX_PATH /p "$Env:WIN_CERT_INSTALLER_CER_PASS" /fd SHA256 /t http://timestamp.digicert.com "${{ steps.filename.outputs.FULL_INSTALLER_FILENAME }}" working-directory: dist - name: Sign the Windows msi installer (Powershell) @@ -286,29 +288,30 @@ jobs: env: PFX_PATH: ${{ steps.create-pfx.outputs.PFX_PATH }} run: | - & "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/signtool.exe" sign /f $Env:PFX_PATH /p "$Env:WIN_CERT_INSTALLER_CER_PASS" /fd SHA256 /t http://timestamp.digicert.com "$Env:INSTALLER_FILENAME.$Env:INSTALLER_EXT" + & "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/signtool.exe" sign /f $Env:PFX_PATH /p "$Env:WIN_CERT_INSTALLER_CER_PASS" /fd SHA256 /t http://timestamp.digicert.com "${{ steps.filename.outputs.FULL_INSTALLER_FILENAME }}" working-directory: dist - name: Create the Linux AppImage (Bash) if: ${{ inputs.installer && runner.os == 'Linux' }} - run: python ../cura_inst/packaging/AppImage/create_appimage.py ./UltiMaker-Cura $CURA_VERSION_FULL "$Env:INSTALLER_FILENAME.$Env:INSTALLER_EXT" + run: python ../cura_inst/packaging/AppImage/create_appimage.py ./UltiMaker-Cura $CURA_VERSION_FULL "${{ steps.filename.outputs.FULL_INSTALLER_FILENAME }}" working-directory: dist - name: Create the MacOS dmg (Bash) if: ${{ inputs.installer && runner.os == 'Macos' }} - run: python ../cura_inst/packaging/dmg/dmg_sign_noterize.py ../cura_inst . "$Env:INSTALLER_FILENAME.$Env:INSTALLER_EXT" + run: python ../cura_inst/packaging/dmg/dmg_sign_noterize.py ../cura_inst . "${{ steps.filename.outputs.FULL_INSTALLER_FILENAME }}" working-directory: dist - name: Upload the artifacts uses: actions/upload-artifact@v3 with: - name: "$Env:INSTALLER_FILENAME-$Env:INSTALLER_EXT" + name: ${{ steps.filename.outputs.INSTALLER_FILENAME }}-${{ steps.filename.outputs.INSTALLER_EXT }}" path: | dist/*.tar.gz dist/*.zip dist/*.exe dist/*.msi dist/*.dmg + dist/*.pkg dist/*.AppImage dist/*.asc retention-days: 5 From 3e4453f48bf1289fa5ba09771042c69f20af8fe5 Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Mon, 9 Jan 2023 14:19:58 +0100 Subject: [PATCH 3/3] Package the specific file Contribute to CURA-9157 and CURA-6867 --- .github/workflows/cura-installer.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml index cbae6dc805..fd1922b898 100644 --- a/.github/workflows/cura-installer.yml +++ b/.github/workflows/cura-installer.yml @@ -304,15 +304,11 @@ jobs: - name: Upload the artifacts uses: actions/upload-artifact@v3 with: - name: ${{ steps.filename.outputs.INSTALLER_FILENAME }}-${{ steps.filename.outputs.INSTALLER_EXT }}" + name: ${{ steps.filename.outputs.INSTALLER_FILENAME }}-${{ steps.filename.outputs.INSTALLER_EXT }} path: | dist/*.tar.gz dist/*.zip - dist/*.exe - dist/*.msi - dist/*.dmg - dist/*.pkg - dist/*.AppImage + dist/${{ steps.filename.outputs.FULL_INSTALLER_FILENAME }} dist/*.asc retention-days: 5