I am facing a problem where every push triggers a build and every pull request update also triggers a build. With this, whenever a new push is made to a pull request, two build processes start: one for updating the pull request, and one for making a push. Both executing duplicate stages: build and test.
I am trying to get around that by using the
commit_message conditional, but still can’t get it to work as I want.
What I want:
- if the commit message contains the word
#ci-test, run stages: build and test.
- if a pull request is updated or created, run stages: build, test and deploy to dev.
- if a push is made to the
masterbranch, run stages: build, test and deploy to prod.
.travis.yml file is:
group: vm services: - docker git: depth: false env: global: - MYVAR="VARVALUE" jobs: include: - stage: "build" if: type = pull_request OR commit_message =~ /#ci-test/ script: build_docker_image.sh - stage: "tests" if: type = pull_request OR commit_message =~ /#ci-test/ script: run_tests.sh - stage: "deploy to dev" if: type = pull_request script: do_the_deploy_to_dev_magic.sh - stage: "deploy to production" if: type = push AND branch = master script: do_the_deploy_to_prod_magic.sh
Before I added the
commit_message condition, it was running the jobs as expected, but only for pull request updates and for push to
master branch. Pushes to other branches didn’t trigger anything, as expected. After adding the
commit_message condition, it started triggering the jobs for every push, in any branch, again.
Another doubt I have is: Does
commit_message condition check run only for the latest commit message, or does it check every commit message of a branch/push ?
Can anyone help me to figure out what am I doing wrong?
Thanks in advance.