Removing tags from our small Hosted runners on Linux for GitLab.com
For guidance on the overall deprecations, removals and breaking changes workflow, please visit Breaking changes, deprecations, and removing features
Deprecation Summary
Due to historical reasons, small Linux SaaS Runners have a lot of tags attached as they were used as labels. We want to streamline the tag to just use saas-linux-small-amd64
and be consistent across all SaaS runners.
We are deprecating the tags: docker
, east-c
, gce
, git-annex
, linux
, mongo
, mysql
, postgres
, ruby
, shared
Breaking Change
If you are using the small SaaS runner on Linux with any tag other than saas-linux-small-amd64
you will be affected.
An example job configuration that will be stuck could look like this:
test-invalid-tag:
stage: test
tags:
- docker
- linux
script:
- echo "I'm affected and will be stuck after 16.6"
How to fix it?
To avoid jobs getting stuck after the 16.6 release, you should change the tag in your .gitlab-ci.yaml
file to saas-linux-small-amd64
.
An example Job configuration that will work:
test-correct-tag:
stage: test
tags:
- saas-linux-small-amd64
script:
- echo "I'm running as expected"
NOTE: The small SaaS runner on Linux is configured to run untagged jobs, this remains unchanged. So if you're using the small Linux runner but haven't specified a tag, the behavior of your job will not change.
test-untagged:
stage: test
script:
- echo "I'm running as expected"
Affected Topology
SaaS users on GitLab.com using the small runner on Linux.
Affected Tier
- Free
- Premium
- Ultimate
Checklists
Labels
-
This issue is labeled deprecation, and with the relevant ~devops::
,~group::
, and~Category:
labels. -
This issue is labeled breaking change if the removal of the deprecated item will be a breaking change.
Timeline
Please add links to the relevant merge requests.
-
As soon as possible, but no later than the third milestone preceding the major release (for example, given the following release schedule: 14.8, 14.9, 14.10, 15.0
–14.8
is the third milestone preceding the major release):-
A deprecation announcement entry has been created so the deprecation will appear in release posts and on the general deprecation page. -
Documentation has been updated to mark the feature as deprecated.
-
-
On or before the major milestone: A removal entry has been created so the removal will appear on the removals by milestones page and be announced in the release post. -
On the major milestone: -
The deprecated item has been removed. -
If the removal of the deprecated item is a breaking change, the merge request is labeled breaking change.
-
Mentions
-
Your stage's stable counterparts have been @mentioned
on this issue. @jfarmiloe @timtams @cfoster3 -
Your GPM has been @mentioned
so that they are aware of planned deprecations.
Deprecation Milestone
Planned Removal Milestone
Background Information
Some of these (like linux, gce, shared, east-c) were added mostly because we've treated tags as labels. Where in fact we should have that separated (labels - to describe the runner and allow it to be used in the API for any reporting; tags - to be used assigning runners to jobs).
The rest is taken directly from the runners that GitLab.com was offering before May 2016 when we've introduced our new autoscaling (we had then ~20 static VMs with GitLab Runner installed on them in a shell mode and with some of the tools available - the tools were then referenced in the tags to point users what is available there).
When we've introduced medium and large runners, we decided to not add all of that, as it doesn't make sense. But we didn't drop the tags from small shard as users may still depend on that. It would be good to finally plan removal of these. This would require a prior notice to the users and giving them some time to update their job definitions. But we should do that at some moment