Reputation: 5920
We have an app (let’s call it the main
repo) on GitLab CE, that has a production build & deploy pipeline, which is only triggered when a tag is deployed. This is achieved in .gitlab-ci.yml
via:
only:
- /^v.*$/
except:
- branches
We also have two other (let’s call them side
) repositories (e.g. translations and utils). What I’d like to achieve is to rerun the latest (semver) tag’s pipeline of main
, when either of those other side
repositories’ master branches receives a push. A small detail is that one of the repositories is on GitHub, but I’d be happy to get them working on GitLab first and then work from there.
I presume I’d need to use the GitLab API to trigger the pipeline. What I’ve currently set up for the side
repo on GitLab is a webhook integration for push events:
https://gitlab.com/api/v4/projects/{{ID}}/ref/master/trigger/pipeline?token={{TOKEN}}
, where ID
is the ID of the main
project and TOKEN
a deploy token for it.
However, this will only trigger a master pipeline for our main
repo. How could I get this to (also) rerun the latest tag’s pipeline (or the latest tagged pipeline)?
Secondly, how would I go about triggering this on GitHub?
Upvotes: 0
Views: 2554
Reputation: 1548
Either you can create new pipeline specifying ref
which can be branches or tags, so in this case you need to know the exact tag value https://docs.gitlab.com/ee/api/pipelines.html#create-a-new-pipeline
Or you can retry already the executed pipeline by providing its id
which you can get from https://docs.gitlab.com/ee/api/pipelines.html#list-project-pipelines by sorting by id
and filtering by ref
but it'll give you the last pipeline with a tag /^v.*$/
which may not match with the specific version you need.
Upvotes: 2