|
@@ -1,5 +1,5 @@
|
|
|
-name: Macos Installer
|
|
|
-run-name: ${{ inputs.cura_conan_version }} for Macos-${{ inputs.architecture }} by @${{ github.actor }}
|
|
|
+name: MacOS Installer
|
|
|
+run-name: ${{ inputs.cura_conan_version }} by @${{ github.actor }}
|
|
|
|
|
|
on:
|
|
|
workflow_dispatch:
|
|
@@ -42,229 +42,20 @@ on:
|
|
|
- self-hosted-ARM64
|
|
|
- macos-11
|
|
|
- macos-12
|
|
|
- workflow_call:
|
|
|
- inputs:
|
|
|
- cura_conan_version:
|
|
|
- description: 'Cura Conan Version'
|
|
|
- default: 'cura/latest@ultimaker/testing'
|
|
|
- required: true
|
|
|
- type: string
|
|
|
- conan_args:
|
|
|
- description: 'Conan args: eq.: --require-override'
|
|
|
- default: ''
|
|
|
- required: false
|
|
|
- type: string
|
|
|
- enterprise:
|
|
|
- description: 'Build Cura as an Enterprise edition'
|
|
|
- default: false
|
|
|
- required: true
|
|
|
- type: boolean
|
|
|
- staging:
|
|
|
- description: 'Use staging API'
|
|
|
- default: false
|
|
|
- required: true
|
|
|
- type: boolean
|
|
|
- architecture:
|
|
|
- description: 'Architecture'
|
|
|
- required: true
|
|
|
- default: 'ARM64'
|
|
|
- type: string
|
|
|
- operating_system:
|
|
|
- description: 'OS'
|
|
|
- required: true
|
|
|
- default: 'self-hosted-ARM64'
|
|
|
- type: string
|
|
|
|
|
|
env:
|
|
|
- CONAN_LOGIN_USERNAME_CURA: ${{ secrets.CONAN_USER }}
|
|
|
- CONAN_PASSWORD_CURA: ${{ secrets.CONAN_PASS }}
|
|
|
- CODESIGN_IDENTITY: ${{ secrets.CODESIGN_IDENTITY }}
|
|
|
- MAC_NOTARIZE_USER: ${{ secrets.MAC_NOTARIZE_USER }}
|
|
|
- MAC_NOTARIZE_PASS: ${{ secrets.MAC_NOTARIZE_PASS }}
|
|
|
- MACOS_CERT_P12: ${{ secrets.MACOS_CERT_P12 }}
|
|
|
- MACOS_CERT_INSTALLER_P12: ${{ secrets.MACOS_CERT_INSTALLER_P12 }}
|
|
|
- MACOS_CERT_USER: ${{ secrets.MACOS_CERT_USER }}
|
|
|
- MACOS_CERT_PASSPHRASE: ${{ secrets.MACOS_CERT_PASSPHRASE }}
|
|
|
- CURA_CONAN_VERSION: ${{ inputs.cura_conan_version }}
|
|
|
- ENTERPRISE: ${{ inputs.enterprise }}
|
|
|
- STAGING: ${{ inputs.staging }}
|
|
|
+ CONAN_ARGS: ${{ inputs.conan_args || '' }}
|
|
|
+ ENTERPRISE: ${{ inputs.enterprise || false }}
|
|
|
+ STAGING: ${{ inputs.staging || false }}
|
|
|
|
|
|
jobs:
|
|
|
- cura-installer-create:
|
|
|
- runs-on: ${{ inputs.operating_system }}
|
|
|
-
|
|
|
- outputs:
|
|
|
- INSTALLER_FILENAME: ${{ steps.filename.outputs.INSTALLER_FILENAME }}
|
|
|
-
|
|
|
- steps:
|
|
|
- - name: Checkout
|
|
|
- uses: actions/checkout@v3
|
|
|
-
|
|
|
- - name: Setup Python and pip
|
|
|
- uses: actions/setup-python@v4
|
|
|
- with:
|
|
|
- python-version: '3.11.x'
|
|
|
- cache: 'pip'
|
|
|
- cache-dependency-path: .github/workflows/requirements-conan-package.txt
|
|
|
-
|
|
|
- - name: Install Python requirements for runner
|
|
|
- run: pip install -r .github/workflows/requirements-conan-package.txt
|
|
|
-
|
|
|
- - name: Cache Conan local repository packages (Bash)
|
|
|
- uses: actions/cache@v3
|
|
|
- with:
|
|
|
- path: |
|
|
|
- $HOME/.conan/data
|
|
|
- $HOME/.conan/conan_download_cache
|
|
|
- key: conan-${{ runner.os }}-${{ runner.arch }}-installer-cache
|
|
|
-
|
|
|
- - name: Install MacOS system requirements
|
|
|
- run: brew install cmake autoconf automake ninja create-dmg
|
|
|
-
|
|
|
- - name: Create the default Conan profile
|
|
|
- run: conan profile new default --detect --force
|
|
|
-
|
|
|
- - name: Remove Macos keychain (Bash)
|
|
|
- run: security delete-keychain signing_temp.keychain || true
|
|
|
-
|
|
|
- - name: Configure Macos keychain Developer Cert(Bash)
|
|
|
- id: macos-keychain-developer-cert
|
|
|
- uses: apple-actions/import-codesign-certs@v1
|
|
|
- with:
|
|
|
- keychain-password: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }}
|
|
|
- p12-file-base64: ${{ secrets.MACOS_CERT_P12 }}
|
|
|
- p12-password: ${{ secrets.MACOS_CERT_PASSPHRASE }}
|
|
|
-
|
|
|
- - name: Configure Macos keychain Installer Cert (Bash)
|
|
|
- id: macos-keychain-installer-cert
|
|
|
- uses: apple-actions/import-codesign-certs@v1
|
|
|
- with:
|
|
|
- keychain-password: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }}
|
|
|
- create-keychain: false # keychain is created in previous use of action.
|
|
|
- p12-file-base64: ${{ secrets.MACOS_CERT_INSTALLER_P12 }}
|
|
|
- p12-password: ${{ secrets.MACOS_CERT_PASSPHRASE }}
|
|
|
-
|
|
|
- - name: Remove private Artifactory
|
|
|
- run: conan remote remove cura-private-conan-dev || true
|
|
|
-
|
|
|
- - name: Get Conan configuration
|
|
|
- run: |
|
|
|
- conan config install https://github.com/Ultimaker/conan-config.git
|
|
|
- conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}"
|
|
|
-
|
|
|
- - name: Use Conan download cache (Bash)
|
|
|
- run: conan config set storage.download_cache="$HOME/.conan/conan_download_cache"
|
|
|
-
|
|
|
- - name: Create the Packages (Bash)
|
|
|
- run: conan install $CURA_CONAN_VERSION ${{ inputs.conan_args }} --build=missing --update -if cura_inst -g VirtualPythonEnv -o cura:enterprise=$ENTERPRISE -o cura:staging=$STAGING -c tools.build:skip_test=True
|
|
|
-
|
|
|
- - name: Remove internal packages before uploading
|
|
|
- run: |
|
|
|
- conan remove "*@internal/*" -f || true
|
|
|
- conan remove "cura_private_data*" -f || true
|
|
|
-
|
|
|
- - name: Upload the Package(s)
|
|
|
- run: |
|
|
|
- conan upload "*" -r cura --all -c
|
|
|
-
|
|
|
- - name: Set Environment variables for Cura (bash)
|
|
|
- run: |
|
|
|
- . ./cura_inst/bin/activate_github_actions_env.sh
|
|
|
- . ./cura_inst/bin/activate_github_actions_version_env.sh
|
|
|
-
|
|
|
- - name: Unlock Macos keychain (Bash)
|
|
|
- run: security unlock -p $TEMP_KEYCHAIN_PASSWORD signing_temp.keychain
|
|
|
- env:
|
|
|
- TEMP_KEYCHAIN_PASSWORD: ${{ steps.macos-keychain-developer-cert.outputs.keychain-password }}
|
|
|
-
|
|
|
- - name: Create the Cura dist
|
|
|
- run: pyinstaller ./cura_inst/UltiMaker-Cura.spec
|
|
|
-
|
|
|
- - name: Output the name file name and extension
|
|
|
- id: filename
|
|
|
- shell: python
|
|
|
- run: |
|
|
|
- import os
|
|
|
- enterprise = "-Enterprise" if "${{ inputs.enterprise }}" == "true" else ""
|
|
|
- installer_filename = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-macos-${{ inputs.architecture }}"
|
|
|
- output_env = os.environ["GITHUB_OUTPUT"]
|
|
|
- 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")
|
|
|
-
|
|
|
- - name: Summarize the used dependencies
|
|
|
- shell: python
|
|
|
- run: |
|
|
|
- import os
|
|
|
-
|
|
|
- from cura.CuraVersion import ConanInstalls, PythonInstalls
|
|
|
-
|
|
|
- summary_env = os.environ["GITHUB_STEP_SUMMARY"]
|
|
|
- content = ""
|
|
|
- if os.path.exists(summary_env):
|
|
|
- with open(summary_env, "r") as f:
|
|
|
- content = f.read()
|
|
|
-
|
|
|
- with open(summary_env, "w") as f:
|
|
|
- f.write(content)
|
|
|
- f.writelines("# ${{ steps.filename.outputs.INSTALLER_FILENAME }}\n")
|
|
|
- f.writelines("## Conan packages:\n")
|
|
|
- for dep_name, dep_info in ConanInstalls.items():
|
|
|
- f.writelines(f"`{dep_name} {dep_info['version']} {dep_info['revision']}`\n")
|
|
|
-
|
|
|
- f.writelines("## Python modules:\n")
|
|
|
- for dep_name, dep_info in PythonInstalls.items():
|
|
|
- f.writelines(f"`{dep_name} {dep_info['version']}`\n")
|
|
|
-
|
|
|
- - name: Create the Macos dmg (Bash)
|
|
|
- run: python ../cura_inst/packaging/MacOS/build_macos.py --source_path ../cura_inst --dist_path . --cura_conan_version $CURA_CONAN_VERSION --filename "${{ steps.filename.outputs.INSTALLER_FILENAME }}" --build_dmg --build_pkg --app_name "$CURA_APP_NAME"
|
|
|
- working-directory: dist
|
|
|
-
|
|
|
- - name: Upload the dmg
|
|
|
- uses: actions/upload-artifact@v3
|
|
|
- with:
|
|
|
- name: ${{ steps.filename.outputs.INSTALLER_FILENAME }}-dmg
|
|
|
- path: |
|
|
|
- dist/${{ steps.filename.outputs.INSTALLER_FILENAME }}.dmg
|
|
|
- retention-days: 5
|
|
|
-
|
|
|
- - name: Upload the pkg
|
|
|
- uses: actions/upload-artifact@v3
|
|
|
- with:
|
|
|
- name: ${{ steps.filename.outputs.INSTALLER_FILENAME }}-pkg
|
|
|
- path: |
|
|
|
- dist/${{ steps.filename.outputs.INSTALLER_FILENAME }}.pkg
|
|
|
- retention-days: 5
|
|
|
-
|
|
|
- - name: Write the run info
|
|
|
- shell: python
|
|
|
- run: |
|
|
|
- import os
|
|
|
- with open("run_info.sh", "w") as f:
|
|
|
- f.writelines(f'echo "CURA_VERSION_FULL={os.environ["CURA_VERSION_FULL"]}" >> $GITHUB_ENV\n')
|
|
|
-
|
|
|
- - name: Upload the run info
|
|
|
- uses: actions/upload-artifact@v3
|
|
|
- with:
|
|
|
- name: macos-run-info
|
|
|
- path: |
|
|
|
- run_info.sh
|
|
|
- retention-days: 5
|
|
|
-
|
|
|
-
|
|
|
- notify-export:
|
|
|
- if: ${{ always() }}
|
|
|
- needs: [ cura-installer-create ]
|
|
|
-
|
|
|
- uses: ultimaker/cura/.github/workflows/notify.yml@main
|
|
|
+ installer:
|
|
|
+ uses: ultimaker/cura-workflows/.github/workflows/cura-installer-macos.yml@main
|
|
|
with:
|
|
|
- success: ${{ contains(join(needs.*.result, ','), 'success') }}
|
|
|
- success_title: "Create the Cura distributions"
|
|
|
- success_body: "Installers for ${{ inputs.cura_conan_version }}"
|
|
|
- failure_title: "Failed to create the Cura distributions"
|
|
|
- failure_body: "Failed to create at least 1 installer for ${{ inputs.cura_conan_version }}"
|
|
|
- secrets: inherit
|
|
|
+ cura_conan_version: ${{ inputs.cura_conan_version }}
|
|
|
+ conan_args: ${{ inputs.conan_args }}
|
|
|
+ enterprise: ${{ inputs.enterprise == 'true' }}
|
|
|
+ staging: ${{ inputs.staging == 'true' }}
|
|
|
+ architecture: ${{ inputs.architecture }}
|
|
|
+ operating_system: ${{ inputs.operating_system }}
|
|
|
+ secrets: inherit
|