Store embedded software workflows. Do not forget this is PUBLIC repository.
Implemented Reusable Workflows:
-
Prepare Environment (prepare_env.yml): By parsing the github context, it sets the variables
RELEASE_VERSIONandRELEASE_REPOfor the next workflows. TheRELEASE_VERSIONwill be999.999.999for a regular commit to a non-master branch. For a merge to a master branch, it will get the nightly build format<yyyy.mm.dd>-merge-<branch>. For a tag in a branch, it will take the tag version (if properly formatted). TheRELEASE_REPOwill have the Cloudsmith target repository to upload the package:night-buildsfor a merge to a master branch,packages-releasedfor a tag without the-devin a master branch suffix andpackages-devfor a tag with the-devsuffix in a non-master branch. If theBUILD_DOCKER_CACHEinput boolean is set totrue, it will also login in theGithub Container Registryand callbuild_for_ultimaker.sh -a build_docker_cachein order to cache the docker image. This technique is currently used by (and can be copied from)Opinicusto cache the docker image. -
Shellcheck (shellcheck.yml): Call
./build_for_ultimaker.sh -a shellcheckfor the repository. -
Build Package (build.yml): Uses the
RELEASE_VERSIONfrom Prepare Environment to make a package by calling./build_for_ultimaker.sh -a build. The resulting package is uploaded as an artifact. -
Unit Test (unit_test.uml): Might be used to run the unit tests for the repository if this can be encapsulated using
./build_for_ultimaker.sh -a unittest. -
Release Package (release_pkg.yml): Downloads the artifact generated in the Build Package workflow and uploads to Cloudsmith in the repository defined by
RELEASE_REPO. It will only run ifRELEASE_REPOis notnone. -
Release Docker Image (release_docker_img.yml): Build and Release to Github Packages a docker image. You need to specify two inputs to this workflow: The docker image name (like
um-kernelorultimoco) and the tag prefix used to trigger the docker image build, e.g.docker_img-. In this case, if we tag the repository withdocker_img-v1, the prefix will be stripped and the image will be released as versionv1. VERY IMPORTANT: After upload, the image will be INTERNAL and NOT connected to any repository. You need to select the package in organizarion (Ultimaker->Packages->package name->Connect Repository) and make it PUBLIC (Ultimaker->Packages->package name->Package Settings->Change Visibility) because our workflows do not authenticate before downloading images - we dont store any private information in the docker images. It is also optional to connect the package to a repository. According to the current Github documentation, connecting a package to a public repository will not count its downloads from the organization bandwitdh, so it is a good idea doing so. The current procedure is to connect the package to this repo (embedded-workflows) and make it Public.
This repository also stores the Dockerfiles to build the images used by CI Linting Tools. These images are pushed to the Gitlab Packages repository (https://github.com/orgs/Ultimaker/packages?tab=packages)
- Clang-Format: Dockerfiles/clang-format/
- Clang-Tidy: Dockerfiles/clang-tidy/
- CPPCheck: Dockerfiles/cppcheck/