Hello,
I’m wondering what I’m doing wrong in this .travis.yml file and I can’t make it run from daily cron.
dist: bionic
language: minimal
script:
- echo "Test if cron runs"
if: type(TRAVIS_EVENT_TYPE) = cron
It’s in a public repo https://github.com/icasimpan/travis_test2/blob/cron_only2/.travis.yml
and I followed that from a pattern outlined in Conditional import not working
Initial schedule says it will be run in a short while, see screenshot https://snipboard.io/3CeEnz.jpg
but after a while, it says it ran https://snipboard.io/b4Vjyu.jpg but nothing was built.
Any hints (or PR) is appreciated.
Thanks in advance.
The if: clause for conditional builds/stages/jobs should be specified at build, stage or job level as specified in the documentation rather than inside a script.
And it’s only evaluated by Travis scheduling infrastructure before the build when forming its structure – to decide which jobs should be run.
To evaluate a condition at runtime instead, use one of the predefined environment variables in Bash (or other) code in your scripts. E.g. to check if it’s a cron job:
script:
- if [[ $TRAVIS_EVENT_TYPE == "cron" ]]; then echo "This is a cron job"; fi
First and foremost, the problem is that your configuration is not valid YAML (briefly, you are starting a definition of a new map with if: in the middle of an array) , and therefore will not trigger a build
shows it.
On the other had, when the cron record indicates it did, it just means that the process was initiated, and should be worded accordingly.
Thank you for pointing out @native-api.
The solution I was trying to find is actually an alternative to a shell script written just like in your illustration. It perfectly worked but after a while it suddenly stopped working.
I added debugging echo lines in my shell script and “$TRAVIS_EVENT_TYPE” becomes an empty string despite it being run via Travis cron.
But anyway, this is outside the scope of my original question.
Thank you as well to @BanzaiMan (in another answer).