Browse Source

Merge branch 'main' into CURA-11288

Saumya Jain 1 year ago
parent
commit
581d1bf3b9

+ 0 - 156
.github/workflows/conan-package-create.yml

@@ -1,156 +0,0 @@
-name: Create and Upload Conan package
-
-on:
-  workflow_call:
-    inputs:
-      project_name:
-        required: true
-        type: string
-
-      recipe_id_full:
-        required: true
-        type: string
-
-      build_id:
-        required: true
-        type: number
-
-      build_info:
-        required: false
-        default: true
-        type: boolean
-
-      recipe_id_latest:
-        required: false
-        type: string
-
-      runs_on:
-        required: true
-        type: string
-
-      python_version:
-        required: true
-        type: string
-
-      conan_config_branch:
-        required: false
-        type: string
-
-      conan_logging_level:
-        required: false
-        type: string
-
-      conan_clean_local_cache:
-        required: false
-        type: boolean
-        default: false
-
-      conan_upload_community:
-        required: false
-        default: true
-        type: boolean
-
-env:
-  CONAN_LOGIN_USERNAME: ${{ secrets.CONAN_USER }}
-  CONAN_PASSWORD: ${{ secrets.CONAN_PASS }}
-  CONAN_LOG_RUN_TO_OUTPUT: 1
-  CONAN_LOGGING_LEVEL: ${{ inputs.conan_logging_level }}
-  CONAN_NON_INTERACTIVE: 1
-
-jobs:
-  conan-package-create:
-    runs-on: ${{ inputs.runs_on }}
-
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v3
-
-      - name: Setup Python and pip
-        uses: actions/setup-python@v4
-        with:
-          python-version: ${{ inputs.python_version }}
-          cache: 'pip'
-          cache-dependency-path: .github/workflows/requirements-conan-package.txt
-
-      - name: Install Python requirements for runner
-        run: pip install -r https://raw.githubusercontent.com/Ultimaker/Cura/main/.github/workflows/requirements-conan-package.txt
-        #  Note the runner requirements are always installed from the main branch in the Ultimaker/Cura repo
-
-      - name: Use Conan download cache (Bash)
-        if: ${{ runner.os != 'Windows' }}
-        run: conan config set storage.download_cache="$HOME/.conan/conan_download_cache"
-
-      - name: Use Conan download cache (Powershell)
-        if: ${{ runner.os == 'Windows' }}
-        run: conan config set storage.download_cache="C:\Users\runneradmin\.conan\conan_download_cache"
-
-      - name: Cache Conan local repository packages (Bash)
-        uses: actions/cache@v3
-        if: ${{ runner.os != 'Windows' }}
-        with:
-          path: |
-            $HOME/.conan/data
-            $HOME/.conan/conan_download_cache
-          key: conan-${{ inputs.runs_on }}-${{ runner.arch }}-create-cache
-
-      - name: Cache Conan local repository packages (Powershell)
-        uses: actions/cache@v3
-        if: ${{ runner.os == 'Windows' }}
-        with:
-          path: |
-            C:\Users\runneradmin\.conan\data
-            C:\.conan
-            C:\Users\runneradmin\.conan\conan_download_cache
-          key: conan-${{ inputs.runs_on }}-${{ runner.arch }}-create-cache
-
-      - name: Install MacOS system requirements
-        if: ${{ runner.os == 'Macos' }}
-        run: brew install autoconf automake ninja
-
-      # NOTE: Due to what are probably github issues, we have to remove the cache and reconfigure before the rest.
-      #       This is maybe because grub caches the disk it uses last time, which is recreated each time.
-      - name: Install Linux system requirements
-        if: ${{ runner.os == 'Linux' }}
-        run: |
-          sudo rm /var/cache/debconf/config.dat
-          sudo dpkg --configure -a
-          sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
-          sudo apt update
-          sudo apt upgrade
-          sudo apt install build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev pkg-config flex bison -y
-
-      - name: Install GCC-13 on ubuntu
-        if: ${{ startsWith(inputs.runs_on, 'ubuntu') }}
-        run: |
-          sudo apt install g++-13 gcc-13 -y
-          sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 13
-          sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 13
-
-      - name: Create the default Conan profile
-        run: conan profile new default --detect
-
-      - name: Get Conan configuration from branch
-        if: ${{ inputs.conan_config_branch != '' }}
-        run: conan config install https://github.com/Ultimaker/conan-config.git -a "-b ${{ inputs.conan_config_branch }}"
-
-      - 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: Add Cura private Artifactory remote
-        run: conan remote add cura-private-conan-dev https://cura.jfrog.io/artifactory/api/conan/cura-private-conan-dev True
-
-      - name: Set GH service account for remote cura-conan-dev
-        run: conan user -p ${{ secrets.CONAN_GH_RUNNER_PASS }} -r cura-private-conan-dev "${{ secrets.CONAN_GH_RUNNER_USER }}"
-
-      - name: Create the Packages
-        run: conan install ${{ inputs.recipe_id_full }} --build=missing --update -c tools.build:skip_test=True
-
-      - name: Upload the Package(s)
-        if: ${{ always() && inputs.conan_upload_community }}
-        run: conan upload ${{ inputs.recipe_id_full }} -r cura --all -c
-
-      - name: Upload the Package(s) to the private Artifactory
-        if: ${{ always() && ! inputs.conan_upload_community }}
-        run: conan upload ${{ inputs.recipe_id_full }} -r cura-private-conan-dev --all -c

+ 8 - 107
.github/workflows/conan-package.yml

@@ -1,27 +1,6 @@
----
 name: conan-package
 
-# Exports the recipe, sources and binaries for Mac, Windows and Linux and upload these to the server such that these can
-# be used downstream.
-#
-# It should run on pushes against main or CURA-* branches, but it will only create the binaries for main and release branches
-
 on:
-  workflow_dispatch:
-    inputs:
-      create_binaries_windows:
-        required: true
-        default: false
-        description: 'create binaries Windows'
-      create_binaries_linux:
-        required: true
-        default: false
-        description: 'create binaries Linux'
-      create_binaries_macos:
-        required: true
-        default: false
-        description: 'create binaries Macos'
-
   push:
     paths:
       - 'plugins/**'
@@ -32,15 +11,15 @@ on:
       - 'packaging/**'
       - '.github/workflows/conan-*.yml'
       - '.github/workflows/notify.yml'
-      - '.github/workflows/requirements-conan-package.txt'
+      - '.github/workflows/requirements-runner.txt'
       - 'requirements*.txt'
       - 'conanfile.py'
       - 'conandata.yml'
-      - 'GitVersion.yml'
       - '*.jinja'
     branches:
-      - main
+      - 'main'
       - 'CURA-*'
+      - 'PP-*'
       - '[0-9].[0-9]'
       - '[0-9].[0-9][0-9]'
     tags:
@@ -51,95 +30,17 @@ on:
 env:
   CONAN_LOGIN_USERNAME_CURA: ${{ secrets.CONAN_USER }}
   CONAN_PASSWORD_CURA: ${{ secrets.CONAN_PASS }}
-  CONAN_LOGIN_USERNAME_CURA_CE: ${{ secrets.CONAN_USER }}
-  CONAN_PASSWORD_CURA_CE: ${{ secrets.CONAN_PASS }}
-  CONAN_LOG_RUN_TO_OUTPUT: 1
-  CONAN_LOGGING_LEVEL: ${{ inputs.conan_logging_level }}
-  CONAN_NON_INTERACTIVE: 1
 
-permissions: { }
 jobs:
   conan-recipe-version:
-    permissions:
-      contents: read
-
-    uses: ultimaker/cura/.github/workflows/conan-recipe-version.yml@main
+    uses: ultimaker/cura-workflows/.github/workflows/conan-recipe-version.yml@main
     with:
       project_name: cura
 
-  conan-package-create-linux:
+  conan-package-export:
     needs: [ conan-recipe-version ]
-    runs-on: 'ubuntu-latest'
-
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v3
-
-      - name: Cache Conan data
-        id: cache-conan
-        uses: actions/cache@v3
-        with:
-          path: ~/.conan
-          key: ${{ runner.os }}-conan
-
-      - 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
-
-      # NOTE: Due to what are probably github issues, we have to remove the cache and reconfigure before the rest.
-      #       This is maybe because grub caches the disk it uses last time, which is recreated each time.
-      - name: Install Linux system requirements
-        if: ${{ runner.os == 'Linux' }}
-        run: |
-          sudo rm /var/cache/debconf/config.dat
-          sudo dpkg --configure -a
-          sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
-          sudo apt update
-          sudo apt upgrade
-          sudo apt install efibootmgr build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev pkg-config flex bison libxcb-cursor-dev g++-12 gcc-12 -y
-
-      - name: Install GCC-13
-        run: |
-          sudo apt install g++-13 gcc-13 -y
-          sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 13
-          sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 13
-
-      - name: Create the default Conan profile
-        run: conan profile new default --detect --force
-
-      - 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: Create the Packages
-        run: conan create . ${{ needs.conan-recipe-version.outputs.recipe_id_full }} --build=missing --update -o ${{ needs.conan-recipe-version.outputs.project_name }}:devtools=True -o ${{ needs.conan-recipe-version.outputs.project_name }}:enable_i18n=True -c tools.build:skip_test=True
-
-      - name: Create the latest alias
-        if: always()
-        run: conan alias ${{ needs.conan-recipe-version.outputs.recipe_id_latest }} ${{ needs.conan-recipe-version.outputs.recipe_id_full }}
-
-      - name: Upload the Package(s)
-        if: always()
-        run: |
-          conan upload ${{ needs.conan-recipe-version.outputs.recipe_id_full }} -r cura --all -c
-          conan upload ${{ needs.conan-recipe-version.outputs.recipe_id_latest }} -r cura -c
-
-  notify-create:
-    if: ${{ always() && (github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'master' || needs.conan-recipe-version.outputs.is_release_branch == 'true')) }}
-    needs: [ conan-recipe-version, conan-package-create-linux ]
-
-    uses: ultimaker/cura/.github/workflows/notify.yml@main
+    uses: ultimaker/cura-workflows/.github/workflows/conan-recipe-export.yml@main
     with:
-      success: ${{ contains(join(needs.*.result, ','), 'success') }}
-      success_title: "New binaries created in ${{ github.repository }}"
-      success_body: "Created binaries for ${{ needs.conan-recipe-version.outputs.recipe_id_full }}"
-      failure_title: "Failed to create binaries in ${{ github.repository }}"
-      failure_body: "Failed to created binaries for ${{ needs.conan-recipe-version.outputs.recipe_id_full }}"
+      recipe_id_full: ${{ needs.conan-recipe-version.outputs.recipe_id_full }}
+      recipe_id_latest: ${{ needs.conan-recipe-version.outputs.recipe_id_latest }}
     secrets: inherit

+ 0 - 110
.github/workflows/conan-recipe-export.yml

@@ -1,110 +0,0 @@
-name: Export Conan Recipe to server
-
-on:
-  workflow_call:
-    inputs:
-      recipe_id_full:
-        required: true
-        type: string
-
-      recipe_id_latest:
-        required: false
-        type: string
-
-      runs_on:
-        required: true
-        type: string
-
-      python_version:
-        required: true
-        type: string
-
-      conan_config_branch:
-        required: false
-        type: string
-
-      conan_logging_level:
-        required: false
-        type: string
-
-      conan_export_binaries:
-        required: false
-        type: boolean
-
-      conan_upload_community:
-        required: false
-        default: true
-        type: boolean
-
-env:
-  CONAN_LOGIN_USERNAME: ${{ secrets.CONAN_USER }}
-  CONAN_PASSWORD: ${{ secrets.CONAN_PASS }}
-  CONAN_LOG_RUN_TO_OUTPUT: 1
-  CONAN_LOGGING_LEVEL: ${{ inputs.conan_logging_level }}
-  CONAN_NON_INTERACTIVE: 1
-
-jobs:
-  package-export:
-    runs-on: ${{ inputs.runs_on }}
-
-    steps:
-      - name: Checkout project
-        uses: actions/checkout@v3
-
-      - name: Setup Python and pip
-        uses: actions/setup-python@v4
-        with:
-          python-version: ${{ inputs.python_version }}
-          cache: 'pip'
-          cache-dependency-path: .github/workflows/requirements-conan-package.txt
-
-      - name: Install Python requirements and Create default Conan profile
-        run: |
-          pip install -r https://raw.githubusercontent.com/Ultimaker/Cura/main/.github/workflows/requirements-conan-package.txt
-          conan profile new default --detect
-        #  Note the runner requirements are always installed from the main branch in the Ultimaker/Cura repo
-
-      - name: Cache Conan local repository packages
-        uses: actions/cache@v3
-        with:
-          path: $HOME/.conan/data
-          key: ${{ runner.os }}-conan-export-cache
-
-      - name: Get Conan configuration from branch
-        if: ${{ inputs.conan_config_branch != '' }}
-        run: conan config install https://github.com/Ultimaker/conan-config.git -a "-b ${{ inputs.conan_config_branch }}"
-
-      - 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: Add Cura private Artifactory remote
-        run: conan remote add cura-private-conan-dev https://cura.jfrog.io/artifactory/api/conan/cura-private-conan-dev True
-
-      - name: Set GH service account for remote cura-conan-dev
-        run: conan user -p ${{ secrets.CONAN_GH_RUNNER_PASS }} -r cura-private-conan-dev "${{ secrets.CONAN_GH_RUNNER_USER }}"
-
-      - name: Export the Package (binaries)
-        if: ${{ inputs.conan_export_binaries }}
-        run: conan create . ${{ inputs.recipe_id_full }} --build=missing --update -c tools.build:skip_test=True
-
-      - name: Export the Package
-        if: ${{ !inputs.conan_export_binaries }}
-        run: conan export . ${{ inputs.recipe_id_full }}
-
-      - name: Create the latest alias
-        if: always()
-        run: conan alias ${{ inputs.recipe_id_latest }} ${{ inputs.recipe_id_full }}
-
-      - name: Upload the Package(s)
-        if: ${{ always() && inputs.conan_upload_community }}
-        run: |
-          conan upload ${{ inputs.recipe_id_full }} -r cura --all -c
-          conan upload ${{ inputs.recipe_id_latest }} -r cura -c
-
-      - name: Upload the Package(s) to the private Artifactory
-        if: ${{ always() && ! inputs.conan_upload_community }}
-        run: |
-          conan upload ${{ inputs.recipe_id_full }} -r cura-private-conan-dev --all -c
-          conan upload ${{ inputs.recipe_id_latest }} -r cura-private-conan-dev -c

+ 0 - 217
.github/workflows/conan-recipe-version.yml

@@ -1,217 +0,0 @@
-name: Get Conan Recipe Version
-
-on:
-    workflow_call:
-        inputs:
-            project_name:
-                required: true
-                type: string
-
-            user:
-                required: false
-                default: ultimaker
-                type: string
-
-            additional_buildmetadata:
-                required: false
-                default: ""
-                type: string
-
-        outputs:
-            recipe_id_full:
-                description: "The full Conan recipe id: <name>/<version>@<user>/<channel>"
-                value: ${{ jobs.get-semver.outputs.recipe_id_full }}
-
-            recipe_id_latest:
-                description: "The full Conan recipe aliased (latest) id: <name>/(latest)@<user>/<channel>"
-                value: ${{ jobs.get-semver.outputs.recipe_id_latest }}
-
-            recipe_semver_full:
-                description: "The full semver <Major>.<Minor>.<Patch>-<PreReleaseTag>+<BuildMetaData>"
-                value: ${{ jobs.get-semver.outputs.semver_full }}
-
-            is_release_branch:
-                description: "is current branch a release branch?"
-                value: ${{ jobs.get-semver.outputs.release_branch }}
-
-            user:
-                description: "The conan user"
-                value: ${{ jobs.get-semver.outputs.user }}
-
-            channel:
-                description: "The conan channel"
-                value: ${{ jobs.get-semver.outputs.channel }}
-
-            project_name:
-                description: "The conan projectname"
-                value: ${{ inputs.project_name }}
-
-jobs:
-    get-semver:
-
-        runs-on: ubuntu-latest
-
-        outputs:
-            recipe_id_full: ${{ steps.get-conan-broadcast-data.outputs.recipe_id_full }}
-            recipe_id_latest: ${{ steps.get-conan-broadcast-data.outputs.recipe_id_latest }}
-            semver_full: ${{ steps.get-conan-broadcast-data.outputs.semver_full }}
-            is_release_branch: ${{ steps.get-conan-broadcast-data.outputs.is_release_branch }}
-            user: ${{ steps.get-conan-broadcast-data.outputs.user }}
-            channel: ${{ steps.get-conan-broadcast-data.outputs.channel }}
-
-        steps:
-            -   name: Checkout repo
-                uses: actions/checkout@v3
-                if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
-                with:
-                    fetch-depth: 0
-                    ref: ${{ github.head_ref }}
-
-            -   name: Checkout repo PR
-                uses: actions/checkout@v3
-                if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
-                with:
-                    fetch-depth: 0
-                    ref: ${{ github.base_ref }}
-
-            -   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 and Create default Conan profile
-                run: |
-                    pip install -r .github/workflows/requirements-conan-package.txt
-                    pip install gitpython
-
-            -   id: get-conan-broadcast-data
-                name: Get Conan broadcast data
-                run: |
-                    import subprocess
-                    import os
-                    from conan.tools.scm import Version
-                    from conan.errors import ConanException
-                    from git import Repo
-                    
-                    repo = Repo('.')
-                    user = "${{ inputs.user }}".lower()
-                    project_name = "${{ inputs.project_name }}"
-                    event_name = "${{ github.event_name }}"
-                    issue_number = "${{ github.ref }}".split('/')[2]
-                    is_tag = "${{ github.ref_type }}" == "tag"
-                    is_release_branch = False
-                    ref_name = "${{ github.base_ref }}" if event_name == "pull_request" else "${{ github.ref_name }}"
-                    buildmetadata = "" if "${{ inputs.additional_buildmetadata }}" == "" else "${{ inputs.additional_buildmetadata }}_"
-                    
-                    # FIXME: for when we push a tag (such as an release)
-                    channel = "testing"
-                    if is_tag:
-                        branch_version = Version(ref_name)
-                        is_release_branch = True
-                        channel = "_"
-                        user = "_"
-                        actual_version = f"{branch_version}"
-                    else:
-                        try:
-                            branch_version = Version(repo.active_branch.name)
-                        except ConanException:
-                            branch_version = Version('0.0.0')
-                        if ref_name == f"{branch_version.major}.{branch_version.minor}":
-                            channel = 'stable'
-                            is_release_branch = True
-                        elif ref_name in ("main", "master"):
-                            channel = 'testing'
-                        else:
-                            channel = "_".join(repo.active_branch.name.replace("-", "_").split("_")[:2]).lower()
-                    
-                        if "pull_request" in event_name:
-                            channel = f"pr_{issue_number}"
-                    
-                        # %% Get the actual version
-                        latest_branch_version = Version("0.0.0")
-                        latest_branch_tag = None
-                        for tag in repo.active_branch.repo.tags:
-                            if str(tag).startswith("firmware") or str(tag).startswith("master"):
-                                continue  # Quick-fix for the versioning scheme name of the embedded team in fdm_materials(_private) repo
-                            try:
-                                version = Version(tag)
-                            except ConanException:
-                                continue
-                            if version > latest_branch_version and version < Version("6.0.0"):
-                                # FIXME: stupid old Cura tags 13.04 etc. keep popping up, als  the fdm_material tag for firmware are messing with this
-                                latest_branch_version = version
-                                latest_branch_tag = repo.tag(tag)
-                        
-                        if latest_branch_tag:
-                            # %% Get the actual version
-                            sha_commit = repo.commit().hexsha[:6]
-                            latest_branch_version_prerelease = latest_branch_version.pre
-                            if latest_branch_version.pre and not "." in str(latest_branch_version.pre):
-                                # The prerealese did not contain a version number, default it to 1
-                                latest_branch_version_prerelease = f"{latest_branch_version.pre}.1"
-                            if event_name == "pull_request":
-                                actual_version = f"{latest_branch_version.major}.{latest_branch_version.minor}.{latest_branch_version.patch}-{str(latest_branch_version_prerelease).lower()}+{buildmetadata}pr_{issue_number}_{sha_commit}"
-                                channel_metadata = f"{channel}_{sha_commit}"
-                            else:
-                                if channel in ("stable", "_", ""):
-                                    channel_metadata = f"{sha_commit}"
-                                else:
-                                    channel_metadata = f"{channel}_{sha_commit}"
-                            if is_release_branch:
-                                if (latest_branch_version.pre == "" or latest_branch_version.pre is None) and branch_version > latest_branch_version:
-                                    actual_version = f"{branch_version.major}.{branch_version.minor}.0-beta.1+{buildmetadata}{channel_metadata}"
-                                elif latest_branch_version.pre == "":
-                                    # An actual full release has been created, we are working on patch
-                                    bump_up_patch = int(str(latest_branch_version.patch)) + 1
-                                    actual_version = f"{latest_branch_version.major}.{latest_branch_version.minor}.{bump_up_patch}-beta.1+{buildmetadata}{channel_metadata}"
-                                elif latest_branch_version.pre is None:
-                                    actual_version = f"{latest_branch_version.major}.{latest_branch_version.minor}.{int(latest_branch_version.patch.value) + 1}-beta.1+{buildmetadata}{channel_metadata}"
-                                else:
-                                    # An beta release has been created we are working toward a next beta or full release
-                                    bump_up_release_tag = int(str(latest_branch_version.pre).split('.')[1]) + 1
-                                    actual_version = f"{latest_branch_version.major}.{latest_branch_version.minor}.{latest_branch_version.patch}-{str(latest_branch_version.pre).split('.')[0]}.{bump_up_release_tag}+{buildmetadata}{channel_metadata}"
-                            else:
-                                max_branches_version = Version("0.0.0")
-                                for branch in repo.references:
-                                    try:
-                                        if "remotes/origin" in branch.abspath:
-                                            b_version = Version(branch.name.split("/")[-1])
-                                            if b_version <  Version("6.0.0") and b_version > max_branches_version:
-                                                max_branches_version = b_version
-                                    except:
-                                        pass
-                                if max_branches_version > latest_branch_version:
-                                    actual_version = f"{max_branches_version.major}.{int(str(max_branches_version.minor)) + 1}.0-alpha+{buildmetadata}{channel}_{sha_commit}"
-                                else:
-                                    actual_version = f"{latest_branch_version.major}.{int(str(latest_branch_version.minor)) + 1}.0-alpha+{buildmetadata}{channel_metadata}"
-
-                    # %% Set the environment output
-                    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"name={project_name}\n")
-                        f.writelines(f"version={actual_version}\n")
-                        f.writelines(f"channel={channel}\n")
-                        f.writelines(f"recipe_id_full={project_name}/{actual_version}@{user}/{channel}\n")
-                        f.writelines(f"recipe_id_latest={project_name}/latest@{user}/{channel}\n")
-                        f.writelines(f"semver_full={actual_version}\n")
-                        f.writelines(f"is_release_branch={str(is_release_branch).lower()}\n")
-                    
-                    summary_env = os.environ["GITHUB_STEP_SUMMARY"]
-                    with open(summary_env, "w") as f:
-                        f.writelines(f"# {project_name}\n")
-                        f.writelines(f"name={project_name}\n")
-                        f.writelines(f"version={actual_version}\n")
-                        f.writelines(f"channel={channel}\n")
-                        f.writelines(f"recipe_id_full={project_name}/{actual_version}@{user}/{channel}\n")
-                        f.writelines(f"recipe_id_latest={project_name}/latest@{user}/{channel}\n")
-                        f.writelines(f"semver_full={actual_version}\n")
-                        f.writelines(f"is_release_branch={str(is_release_branch).lower()}\n")
-                shell: python

+ 14 - 52
.github/workflows/installers.yml

@@ -39,56 +39,18 @@ env:
   CONAN_ARGS: ${{ inputs.conan_args || '' }}
   ENTERPRISE: ${{ inputs.enterprise || false }}
   STAGING: ${{ inputs.staging || false }}
-  LATEST_RELEASE: '5.6'
-  LATEST_RELEASE_SCHEDULE_HOUR: 4
 
 jobs:
   default_values:
-    runs-on: ubuntu-latest
-    outputs:
-      cura_conan_version: ${{ steps.default.outputs.cura_conan_version  }}
-      release_tag: ${{ steps.default.outputs.release_tag  }}
-
-    steps:
-    - name: Output default values
-      id: default
-      shell: python
-      run: |
-        import os
-        import datetime
-        
-        if "${{ github.event_name }}" != "schedule":
-            cura_conan_version = "${{ github.event.inputs.cura_conan_version }}"
-        else:
-            now = datetime.datetime.now()
-            cura_conan_version = "cura/latest@ultimaker/stable" if now.hour == int(os.environ['LATEST_RELEASE_SCHEDULE_HOUR']) else "cura/latest@ultimaker/testing"
-        
-        release_tag = f"nightly-{os.environ['LATEST_RELEASE']}" if "/stable" in cura_conan_version else "nightly"
-
-        # Set cura_conan_version environment variable
-        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"cura_conan_version={cura_conan_version}\n")
-            f.writelines(f"release_tag={release_tag}\n")
-
-        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(f"# cura_conan_version = {cura_conan_version}\n")
-            f.writelines(f"# release_tag = {release_tag}\n")
+    uses: ultimaker/cura-workflows/.github/workflows/cura-installer-default-value.yml@main
+    with:
+      cura_conan_version: ${{ inputs.cura_conan_version }}
+      latest_release: '5.6'
+      latest_release_schedule_hour: 4
+      latest_release_tag: 'nightly'
 
   windows-installer:
-    uses: ./.github/workflows/windows.yml
+    uses: ultimaker/cura-workflows/.github/workflows/cura-installer-windows.yml@main
     needs: [ default_values ]
     with:
       cura_conan_version: ${{ needs.default_values.outputs.cura_conan_version }}
@@ -100,7 +62,7 @@ jobs:
     secrets: inherit
 
   linux-installer:
-    uses: ./.github/workflows/linux.yml
+    uses: ultimaker/cura-workflows/.github/workflows/cura-installer-linux.yml@main
     needs: [ default_values ]
     with:
       cura_conan_version: ${{ needs.default_values.outputs.cura_conan_version }}
@@ -112,7 +74,7 @@ jobs:
     secrets: inherit
 
   macos-installer:
-    uses: ./.github/workflows/macos.yml
+    uses: ultimaker/cura-workflows/.github/workflows/cura-installer-macos.yml@main
     needs: [ default_values ]
     with:
       cura_conan_version: ${{ needs.default_values.outputs.cura_conan_version }}
@@ -124,7 +86,7 @@ jobs:
     secrets: inherit
 
   macos-arm-installer:
-    uses: ./.github/workflows/macos.yml
+    uses: ultimaker/cura-workflows/.github/workflows/cura-installer-macos.yml@main
     needs: [ default_values ]
     with:
       cura_conan_version: ${{ needs.default_values.outputs.cura_conan_version }}
@@ -142,9 +104,9 @@ jobs:
     needs: [ default_values, windows-installer, linux-installer, macos-installer, macos-arm-installer ]
     steps:
       - name: Checkout
-        uses: actions/checkout@v3
-
-      # It's not necessary to download all three, but it does make sure we have at least one if an OS is skipped.
+        uses: actions/checkout@v4
+        with:
+          fetch-depth: 1
 
       - name: Download the run info
         uses: actions/download-artifact@v2
@@ -193,7 +155,7 @@ jobs:
         with:
           name: ${{ steps.filename.outputs.LINUX }}-AppImage
           path: installers
-          
+
       - name: Download linux installer jobs asc artifacts
         uses: actions/download-artifact@v2
         with:

+ 13 - 213
.github/workflows/linux.yml

@@ -1,5 +1,5 @@
 name: Linux Installer
-run-name: ${{ inputs.cura_conan_version }} for Linux-${{ inputs.architecture }} by @${{ github.actor }}
+run-name: ${{ inputs.cura_conan_version }} by @${{ github.actor }}
 
 on:
   workflow_dispatch:
@@ -39,219 +39,19 @@ on:
         options:
           - ubuntu-22.04
 
-  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: 'X64'
-        type: string
-      operating_system:
-        description: 'OS'
-        required: true
-        default: 'ubuntu-22.04'
-        type: string
-
 env:
-  CONAN_LOGIN_USERNAME_CURA: ${{ secrets.CONAN_USER }}
-  CONAN_PASSWORD_CURA: ${{ secrets.CONAN_PASS }}
-  GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
-  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 }}
-
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v3
-
-      - name: Setup Python and pip
-        uses: actions/setup-python@v4
-        with:
-          python-version: '3.10.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 Linux system requirements
-        run: |
-          sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
-          sudo apt update
-          sudo apt upgrade
-          sudo apt install build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev pkg-config binutils coreutils desktop-file-utils fakeroot fuse libgdk-pixbuf2.0-dev patchelf squashfs-tools strace util-linux zsync libxcb-cursor-dev -y
-          
-          # Get the AppImage tool
-          wget --no-check-certificate --quiet https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O $GITHUB_WORKSPACE/appimagetool
-          chmod +x $GITHUB_WORKSPACE/appimagetool
-          echo "APPIMAGETOOL_LOCATION=$GITHUB_WORKSPACE/appimagetool" >> $GITHUB_ENV
-          
-          # Get the AppImage builder
-          wget --no-check-certificate --quiet -O $GITHUB_WORKSPACE/appimage-builder-x86_64.AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage
-          chmod +x appimage-builder-x86_64.AppImage
-          echo "APPIMAGEBUILDER_LOCATION=$GITHUB_WORKSPACE/appimage-builder-x86_64.AppImage" >> $GITHUB_ENV
-          
-          # Make sure these tools can be found on the path
-          echo "$GITHUB_WORKSPACE" >> $GITHUB_PATH          
-
-      - name: Install GCC-13
-        run: |
-          sudo apt install g++-13 gcc-13 -y
-          sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 13
-          sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 13
-
-      - name: Create the default Conan profile
-        run: conan profile new default --detect --force
-
-      - name: Configure GPG Key Linux (Bash)
-        run: echo -n "$GPG_PRIVATE_KEY" | base64 --decode | gpg --import
-
-      - 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)
-        if: always()
-        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: 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}-linux-${{ 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 Linux AppImage (Bash)
-        run: |
-          python ../cura_inst/packaging/AppImage-builder/create_appimage.py ./UltiMaker-Cura $CURA_VERSION_FULL "${{ steps.filename.outputs.INSTALLER_FILENAME }}.AppImage"
-          chmod +x "${{ steps.filename.outputs.INSTALLER_FILENAME }}.AppImage"
-        working-directory: dist
-
-      - name: Upload the AppImage
-        uses: actions/upload-artifact@v3
-        with:
-          name: ${{ steps.filename.outputs.INSTALLER_FILENAME }}-AppImage
-          path: |
-            dist/${{ steps.filename.outputs.INSTALLER_FILENAME }}.AppImage
-          retention-days: 5
-
-      - name: Upload the asc
-        uses: actions/upload-artifact@v3
-        with:
-          name: ${{ steps.filename.outputs.INSTALLER_FILENAME }}-asc
-          path: |
-            dist/${{ steps.filename.outputs.INSTALLER_FILENAME }}.AppImage.asc
-          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: linux-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-linux.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

+ 14 - 223
.github/workflows/macos.yml

@@ -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

+ 0 - 54
.github/workflows/notify.yml

@@ -1,54 +0,0 @@
-name: Get Conan Recipe Version
-
-on:
-    workflow_call:
-        inputs:
-            success:
-                required: true
-                type: boolean
-
-            success_title:
-                required: true
-                type: string
-
-            success_body:
-                required: true
-                type: string
-
-            failure_title:
-                required: true
-                type: string
-
-            failure_body:
-                required: true
-                type: string
-
-
-jobs:
-    slackNotification:
-        name: Slack Notification
-
-        runs-on: ubuntu-latest
-
-        steps:
-            -   name: Slack notify on-success
-                if: ${{ inputs.success }}
-                uses: rtCamp/action-slack-notify@v2
-                env:
-                    SLACK_USERNAME: ${{ github.repository }}
-                    SLACK_COLOR: green
-                    SLACK_ICON: https://github.com/Ultimaker/Cura/blob/main/icons/cura-128.png?raw=true
-                    SLACK_TITLE: ${{ inputs.success_title }}
-                    SLACK_MESSAGE: ${{ inputs.success_body }}
-                    SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
-
-            -   name: Slack notify on-failure
-                if: ${{ !inputs.success }}
-                uses: rtCamp/action-slack-notify@v2
-                env:
-                    SLACK_USERNAME: ${{ github.repository }}
-                    SLACK_COLOR: red
-                    SLACK_ICON: https://github.com/Ultimaker/Cura/blob/main/icons/cura-128.png?raw=true
-                    SLACK_TITLE: ${{ inputs.failure_title }}
-                    SLACK_MESSAGE: ${{ inputs.failure_body }}
-                    SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}

+ 5 - 10
.github/workflows/process-pull-request.yml

@@ -1,15 +1,10 @@
 name: process-pull-request
 
 on:
-    pull_request_target:
-        types: [opened, reopened, edited, synchronize, review_requested, ready_for_review, assigned]
+  pull_request_target:
+    types: [ opened, reopened, edited, review_requested, ready_for_review, assigned ]
 
 jobs:
-    add_label:
-        runs-on: ubuntu-latest
-        steps:
-            -   uses: actions/checkout@v2
-            -   uses: actions-ecosystem/action-add-labels@v1
-                if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
-                with:
-                    labels: 'PR: Community Contribution :crown:'
+  add_label:
+    uses: ultimaker/cura-workflows/.github/workflows/process-pull-request.yml@main
+    secrets: inherit

+ 0 - 0
.github/workflows/requirements-runner.txt


Some files were not shown because too many files changed in this diff