0

I'm new to GitLab ci and I was curious if something could be done inside the .gitlab-ci.yml. For our project we want two different things to happen dependent on two actions. For instance, when a new file is added to the master branch we want Job1 to run. However, when a file is updated in the master branch we would like Job2 to run instead.

Based on reading through Gitlab's documentation on ci/cd it looks like you could do this by using variables and rules.

So, would this be possible inside the yml file or would you have to go about it another way?

Thank you for your replies.

2 Answers 2

1

As you might have already noticed there is a rule named changes which you could try out. If that's not sufficient you still could execute something like git diff-tree inside a container and then decide what to do.

0

I doubt that you can do it directly with a conditional over a file because the commit push (which is the action that triggers the pipeline containing the job, ultimately) could contain several files.

Having said that, you have a bunch of predefined variables with information about the commit itself, so maybe you can agree with the team on a commit description template for when they add a file and another one for the case of the update. Then you can easily use rules to determine which job has to run. For this particular case, you will be using the CI_COMMIT_DESCRIPTION variable.

You can also base your condition on a tag, but I think that it will make the repository too dirty.

I know that it is easy to forget the rule, but still, it is an easy workaround.

Not the answer you're looking for? Browse other questions tagged or ask your own question.