The Lab provides Gitlab-CI compute cycles for both the research and instructional realms via dedicated machines loaded with the Gitlab Runner software and the Docker Engine.

Access to these machines is by request only, so please contact support with your use case so we can get you setup in the right place.

General Overview:

  • You can run test / build / deploy jobs, by registering one or more runner to your project, and controlling what they do with a .gitlab-ci.yml file in your project. The Gitlab server acts as a job coordinator, but ALL compute happens on the system where the project specific Gitlab Runners are hosted.
  • Here is a link to the GitLab Documentation on Gitlab-CI, which you should read before you get started: https://gitlab.cs.washington.edu/help/ci/index.md
  • Lab Staff are also available to assist with getting you started on this road (after you read the docs!)

 

Tips:

Docker Executor: As this is a shared system, and it’s impossible for us to manage all the system packages/libraries/versions on the host directly, please use the docker executor for most jobs. Please limit the use of the shell executor to jobs doing very simple unix type things, like sed, awk, etc

Shared, Managed System: So that *all* the runners can be audited and system loads managed & tweaked by Support Staff, interaction with the runner software will be via the command 'sudo gitlab-runner'. This allows the system service to manage all the runners that you, the user configure.

System Load: We have the ability to set both the number of global concurrent jobs on a machine as well as the number of parallel jobs each runner can take. These are usually set somewhat low by default so that one runners's memory intensive job doesn't spawn off 5 separate processes and take the server down (yes, it's happened). If you have a runner that needs to handle multiple jobs concurrently, don't simple register a second runner for the same purpose. Rather, let us know and we'll work with you to set limits so that your jobs can run in a timely manner, while still leaving come cycles for other users.