Check a conditional build statement during build


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

 - echo "Test if cron runs"
   if: type(TRAVIS_EVENT_TYPE) = cron

It’s in a public repo

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

but after a while, it says it ran 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:

  - if [[ $TRAVIS_EVENT_TYPE == "cron" ]]; then echo "This is a cron job"; fi
1 Like

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.

1 Like

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).