This tutorial provides documentation and resources on how to configure Gitlab CI to compile and build your Unreal Engine 4 project.
This tutorial, repository and files are based on the great Jenkins tutorial with a few changes to the build scripts, check it out if you would like to use Jenkins instead!
Created by Cairan Steverink.
Before you begin: Set up your Gitlab repository as normal and clone it to your desktop. You can go ahead and add your Unreal Engine 4 project to the repository.
Note: This documentation is solely meant to configure a Gitlab runner on Windows servers and desktops. We will configure our pipeline so that it will only archive our builds during scheduled builds and manual builds started through the Gitlab interface. This way we prevent flooding our disk space with archived builds.
Gitlab uses runners to run the jobs defined in the .gitlab-ci.yml file (which we will create at the end of this tutorial). We will set up a Windows desktop as our runner.
Download the runner executable from Gitlab and follow the installation process described in the documentation.
Now we need to register our runner. Inside your Gitlab project go to Settings -> CI/CD -> General pipelines settings and obtain the runner token.
Follow the registration progress described in the documentation but do not enter any tags when prompted. Finaly pick Shell as your executor after which we should have our runner set up.
Download the build scripts and move them to another folder. For example: C:/BuildScripts/. Make sure you replace PROJECT_NAME inside the scripts with the name of your project.
Once we have our runner set up we can configure our pipeline. Start by creating a .gitlab-ci.yml file inside your repository. This file tells the Gitlab runner what to do when a pipeline is triggered.
Add the following to the .gitlab-ci.yml file.
variables:
GIT_STRATEGY: none # we disable fetch, clone or checkout for every job
GIT_CHECKOUT: "false" # as we only want to checkout and fetch in the preperation stage
stages:
- preperations
- compile
- build
- cook
- package
preperations:
stage: preperations
variables:
GIT_STRATEGY: fetch
GIT_CHECKOUT: "true"
script:
- call "C:\PATH_TO_FILES\StartBuild.bat"
compile:
stage: compile
script:
- call "C:\PATH_TO_FILES\CompileScripts.bat"
build:
stage: build
script:
- call "C:\PATH_TO_FILES\BuildFiles.bat"
cook:
stage: cook
script:
- call "C:\PATH_TO_FILES\CookProject.bat"
package:
stage: package
only:
- web # only archive when started through the web interface
- schedules # only archive when started at a specific schedule
script:
- echo "Adding build to the artifacts"
- call C:\PATH_TO_FILES\Archive.bat
artifacts:
paths:
- PROJECT_NAME.zip
expire_in: 5 days
Commit the file and your pipeline should be triggered! Gitlab will now build and compile your project everytime files are pushed to your repository. It will archive the build only when triggered through the web interface or on a scheduled time.
Finaly you might want to add Slack Notifications.
If you have any questions, suggestions or feedback feel free to contact me.