Parameterized builds
We believe everyone can invent or already faced the need to occasionally perform some actions. For instance, run composer update
when the vendor
directory is not under VCS. It’s easy to get this done locally, but how to achieve this on CI server?
Meet the actions - list of Ansible tasks which will be executed on a build if commit message contains constructions with text between square brackets (like [test action1][test action2] Regular message
).
Usage
Needed documentation is written directly inside of the playbook, so let’s take a look on a case with Composer.
-
Create
scripts/tasks/composer-update.yml
:--- - name: Update Composer packages shell: composer update args: chdir: "{{ project_workspace }}"
-
Modify
scripts/tasks/reinstall/pre-actions.yml
orscripts/tasks/reinstall/post-actions.yml
:--- - include: ../tasks/composer-update.yml when: "'composer update' in actions"
That’s it. To run the action (parameterize the build), just create a commit with [composer update]
in it’s message, like:
git add composer.lock composer.json
git commit -m '[composer update] Update Composer dependencies'
git push origin feature/XXX
You can handle as much as needed actions per commit, just write the handlers and don’t forget to specify their names in commit message.
Comments