Skip to content

CI pipelines

Fridolin Wild edited this page Apr 9, 2024 · 10 revisions

Pipelines for Continuous Integration

The pipelines for continuous integration (CI) are stored in two places: the ci yaml script in the root and additional scripts in the ci folder with additional batch and shell scripts.

For the migration: There are GitHub native actions available for many of the below scripts, which should allow doing this already.

YAML root script for CI pipelines

Four stages are defined in the YAML script:

  • activation: fetch licenses for docker and unity
  • test: run testing suite for EditMode and PlayMode tests, and generate reports about results
  • build: build for the different platforms (HL1, HL2, Android in prep, iOs in prep)
  • deploy: send notifications to slack about development builds and releases

There are several key variables in the script used across the stages in various places. These include:

  • version number
  • app name
  • license keys
  • docker image
  • build path

before_script

Write out IBM Watson keys (from CI secret environment variable) and the Unity license key for the build process. All the other API keys used have already been moved, we should probably clean up the IBM Watson keys in a similar way.

determine-version

Fetches the last tag from git and then appends the commit number as minor release version: e.g., last tag is "1.2" and there are 12 commits = "1.2.12".

activation

Warning

Activation is now handled in a different way by Unity and the games-ci actions. Essentially, you fetch the .ulf file from your desktop UnityHub and place them into the github secrets.

Fetches a new activation file from Unity servers. This activation must be manually executed by going to Actions > Select one of the two activation workflows > run (on the develop branch). This will produce a license activation file (a zip file containing a .alf file). The unzipped .alf file must be uploaded here: https://license.unity3d.com/manual, which then allows to download a .ulf file. The content of the .ulf file then must be stored into the Action secrets (Settings > Secrets > Actions).

tests

  • how to call unity in docker image and how to parse results
  • script for translating unity specific NUnit.xml to JUnit.xml (may not be required anymore on github)
  • read coverage
  • this basis test is then executed for playmode and editmode
  • unused pipeline code for Dorny Reports

build scripts

  • determine version and save job ID (for slack build/release notice)
  • HL1:
  • set platform to UWP and amd64
  • then build with msbuild.exe
  • HL2:
  • same just HL2
  • Android:
  • still some probs with Gradle version being pulled in
  • build check: used for testing if app can be compiled
  • expire the files can be set to 1sec (currently 1 day) and gitlab is configured to keep the last job's files

deploy

prerelease-notification:

  • notify slack about preview development version build

release-notification:

  • same just different slack channel

pages:

  • build documentation with docfx (retire this - we have moved to wiki)
  • docfx: write out in-code documentation
  • but: we should keep in code documentation generation, which currently is not here

further CI scripts

In the folder. They are called from the pipeline.