Create branch while commiting #1
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Linux Installer | |
run-name: ${{ inputs.cura_conan_version }} for Linux-${{ inputs.architecture }} by @${{ github.actor }} | |
on: | |
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 | |
conan_internal: | |
required: false | |
default: false | |
type: boolean | |
permissions: | |
contents: read | |
env: | |
CONAN_LOGIN_USERNAME: ${{ secrets.CONAN_USER }} | |
CONAN_PASSWORD: ${{ secrets.CONAN_PASS }} | |
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} | |
CURA_CONAN_VERSION: ${{ inputs.cura_conan_version }} | |
ENTERPRISE: ${{ inputs.enterprise }} | |
STAGING: ${{ inputs.staging }} | |
SENTRY_TOKEN: ${{ secrets.CURAENGINE_SENTRY_TOKEN }} | |
jobs: | |
cura-installer-create: | |
runs-on: ${{ inputs.operating_system }} | |
steps: | |
- name: Checkout Cura repo | |
uses: actions/checkout@v4 | |
with: | |
repository: Ultimaker/Cura | |
ref: CURA-10769_automate_release_action | |
- name: Checkout Cura-workflows repo | |
uses: actions/checkout@v4 | |
with: | |
repository: Ultimaker/Cura-workflows | |
path: Cura-workflows | |
ref: CURA-10769_automate_release_action | |
- name: Setup Python and pip | |
uses: actions/[email protected] | |
with: | |
python-version: 3.11.x | |
cache: pip | |
cache-dependency-path: Cura-workflows/.github/workflows/requirements-runner.txt | |
- name: Install Python requirements and Create default Conan profile | |
run: pip install -r Cura-workflows/.github/workflows/requirements-runner.txt | |
- name: Install Linux system requirements for building | |
working-directory: Cura-workflows/runner_scripts | |
run: | | |
chmod +x ubuntu_setup.sh | |
sudo ./ubuntu_setup.sh | |
- name: Install AppImage builder | |
chmod +x ./Cura-workflows/runner_scripts/appimage_setup.sh | |
./Cura-workflows/runner_scripts/appimage_setup.sh | |
- name: Setup pipeline caches | |
run: mkdir -p /home/runner/.conan/downloads | |
- name: Create 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: Add runner credentials to cura remote | |
run: conan user -p ${{ secrets.CONAN_PASS }} -r cura ${{ secrets.CONAN_USER }} | |
- name: Add Cura private Artifactory remote | |
if: ${{ inputs.conan_internal }} | |
run: | | |
conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/internal" | |
conan user -p ${{ secrets.CONAN_PASS }} -r cura-private ${{ secrets.CONAN_USER }} | |
- name: Cache Conan downloads | |
uses: actions/cache@v3 | |
with: | |
path: /home/runner/.conan/downloads | |
key: ${{ runner.os }}-conan-downloads-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-conan-downloads- | |
- name: Configure GPG Key Linux (Bash) | |
run: echo -n "$GPG_PRIVATE_KEY" | base64 --decode | gpg --import | |
- 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 -o cura:internal=${{ inputs.conan_internal }} -c tools.build:skip_test=True -s curaengine:build_type=RelWithDebInfo -s arcus:build_type=RelWithDebInfo -s clipper:build_type=RelWithDebInfo | |
- 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 | |
run: python Cura-workflows/runner_scripts/cura_installer_filename.py --os ${{ runner.os }} --arch ${{ inputs.architecture }} --enterprise ${{ inputs.enterprise }} --internal ${{ inputs.conan_internal }} | |
- name: Summarize the used dependencies | |
run: python Cura-workflows/runner_scripts/summarize_used_dependencies.py --installer_filename ${{ steps.filename.outputs.INSTALLER_FILENAME }} | |
- 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 lib(std)c(++) debug symbols | |
run: | | |
find AppDir/ -name 'libc.*' -exec sentry-cli --auth-token $SENTRY_TOKEN debug-files upload {} \; | |
find AppDir/ -name 'libstdc++.*' -exec sentry-cli --auth-token $SENTRY_TOKEN debug-files upload {} \; | |
working-directory: dist | |
- 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() && ! inputs.conan_internal }} | |
run: conan upload "*" -r cura --all -c | |
- 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 | |