Skip to content
Snippets Groups Projects

Proton (sniper) SDK

This project builds Docker images based on https://gitlab.steamos.cloud/steamrt/sniper/sdk, with the addition of Proton build-dependencies.

This is mostly just a CI script, which clones https://github.com/ValveSoftware/Proton and builds the same docker images as what make protonsdk does there. It does a bit of magic to create a set of commands usable by kaniko instead of docker, as this CI runs on Google Compute instances.

Using this image

Choose a suitable version number, for example 0.20230102.3-0, according to the PROTONSDK_VERSION in Proton's docker/Makefile. Then:

docker pull registry.gitlab.steamos.cloud/proton/sniper/sdk:0.20230102.3-0

and use that image for your builds.

At the moment the registry.gitlab.steamos.cloud/proton/sniper/sdk:latest tag will change frequently and will not always point to a usable SDK image, so please don't use that for anything.

Other Docker images whose names start with registry.gitlab.steamos.cloud/proton/sniper/sdk/ are built as a side-effect of building this image, but those should not be relied on.

Corresponding source code

Source code for all the packages that go into the Steam Runtime base image can be found in the appropriate subdirectory of https://repo.steampowered.com/steamrt-images-sniper/snapshots/ (look in the sources/ directory).

Source code for the packages added for the Proton SDK can be found in https://repo.steampowered.com/proton-sdk/.

Information for maintainers

Doing a test-build

To trigger a new build and publish a new test image, update the PROTON_COMMIT variable in .gitlab-ci.yml, commit, push to proton/sniper/sdk as a branch with a name other than master, and wait. Using a branch named wip/yourtopic or wip/yourname/yourtopic is suggested, replacing yourtopic and yourname as appropriate.

The image version tag that will be created is the SteamRT SDK image version that is used as a base, as defined using the STEAMRT_VERSION variable in docker/Makefile in the Proton source, plus the hard-coded suffix -dev. If an image with the same tag already exists, it will be overwritten.

The PROTONSDK_VERSION variable in docker/Makefile is overridden by this project, and therefore is ignored.

Doing a release build

When you are happy with your test-build, merge it to master, tag the resulting commit and push the tag, for example:

git tag -m "Proton SDK image v0.20230102.3-0" -a v0.20230102.3-0
git push origin v0.20230102.3-0

A new CI pipeline will run for the git tag. This time, the Docker image version tag that will be created is the git tag, with the "v" prefix (if any) removed.

The tag is conventionally the same as the PROTONSDK_VERSION variable in Proton's docker/Makefile, which is the STEAMRT_VERSION plus a dash and a numeric suffix.