Finish Plugins
The finish step plugins implement actions to be performed after the test execution has been completed. These can be useful for finishing tasks such as an additional guest cleanup or uploading specific logs to an external server.
Common Keys
The following keys are accepted by all plugins of the finish step.
- name
The name of the step phase.
Environment variable:
TMT_PLUGIN_FINISH_ANSIBLE_NAMEIn plan metadata:
name:
On command-line:
--name ... export TMT_PLUGIN_FINISH_ANSIBLE_NAME=...
- order
Order in which the phase should be handled.
Default:
50Environment variable:
TMT_PLUGIN_FINISH_ANSIBLE_ORDERIn plan metadata:
order:
On command-line:
--order ... export TMT_PLUGIN_FINISH_ANSIBLE_ORDER=...
- summary
Concise summary describing purpose of the phase.
Default: not set
Environment variable:
TMT_PLUGIN_FINISH_ANSIBLE_SUMMARYIn plan metadata:
summary:
On command-line:
--summary ... export TMT_PLUGIN_FINISH_ANSIBLE_SUMMARY=...
- when
If specified, phase is run only if any rule matches plan context.
Default: not set
Environment variable:
TMT_PLUGIN_FINISH_ANSIBLE_WHENIn plan metadata:
when: RULE
On command-line:
--when RULE export TMT_PLUGIN_FINISH_ANSIBLE_WHEN=RULE
- where
Run this phase on given guest or guests with the given role only.
Default: not set
Environment variable:
TMT_PLUGIN_FINISH_ANSIBLE_WHEREIn plan metadata:
where: GUEST|ROLE
On command-line:
--where 'GUEST|ROLE' export TMT_PLUGIN_FINISH_ANSIBLE_WHERE='GUEST|ROLE'
ansible
Warning
Please, be aware that the documentation below is a work in progress. We are working on fixing it, adding missing bits and generally making it better. Also, it was originally used for command line help only, therefore the formatting is often suboptimal.
Perform finishing tasks using ansible.
One or more playbooks can be provided as a list under the playbook
attribute. Each of them will be applied using ansible-playbook in
the given order. The path must be relative to the metadata tree root.
Remote playbooks can be referenced as well as the local ones, and both kinds can be used at the same time.
Warning
The plugin may be a subject of various limitations, imposed by Ansible itself:
Ansible 2.17+ no longer supports Python 3.6 and older. Guests where Python 3.7+ is not available cannot be prepared with the
ansibleplugin. This has been observed when Fedora Rawhide runner is used with CentOS 7 or CentOS Stream 8 guests. Possible workarounds: downgrade Ansible tmt uses, or install Python 3.7+ before usingansibleplugin from an alternative repository or local build.
Single playbook config:
finish:
how: ansible
playbook: ansible/packages.yml
Multiple playbooks config:
finish:
how: ansible
playbook:
- playbooks/common.yml
- playbooks/os/rhel9.yml
- https://foo.bar/rhel9-final-touches.yml
The playbook path should be relative to the metadata tree root. Use
the order attribute to select in which order
finishing tasks should happen if there are multiple configs. Default
order is 50.
Configuration
See also Common Keys accepted by the plugin.
- extra-args
Additional CLI options for
ansible-playbook.Default: not set
Environment variable:
TMT_PLUGIN_FINISH_ANSIBLE_EXTRA_ARGSIn plan metadata:
extra-args: ANSIBLE-PLAYBOOK-OPTIONS extra-args: -vvv
On command-line:
--extra-args ANSIBLE-PLAYBOOK-OPTIONS export TMT_PLUGIN_FINISH_ANSIBLE_EXTRA_ARGS=ANSIBLE-PLAYBOOK-OPTIONS --extra-args -vvv export TMT_PLUGIN_FINISH_ANSIBLE_EXTRA_ARGS=-vvv
- playbook
Path or URL of an Ansible playbook, or a playbook bundled within a collection, to run on a guest. Playbook
PATHmust be relative to the metadata tree root, if the metadata tree exists, or to the current working directory.Default: not set
Environment variable:
TMT_PLUGIN_FINISH_ANSIBLE_PLAYBOOKIn plan metadata:
playbook: PATH|URL|NAMESPACE.COLLECTION.PLAYBOOK
On command-line:
--playbook 'PATH|URL|NAMESPACE.COLLECTION.PLAYBOOK' export TMT_PLUGIN_FINISH_ANSIBLE_PLAYBOOK='PATH|URL|NAMESPACE.COLLECTION.PLAYBOOK'
shell
Warning
Please, be aware that the documentation below is a work in progress. We are working on fixing it, adding missing bits and generally making it better. Also, it was originally used for command line help only, therefore the formatting is often suboptimal.
Perform finishing tasks using shell (bash) scripts.
Execute arbitrary shell commands to finish the testing. Default shell options are applied to the script, see the test key specification for more details.
Example config:
finish:
how: shell
script:
- upload-logs.sh || true
- rm -rf /tmp/temporary-files
Scripts can also be fetched from a remote git repository.
Specify the url for the repository and optionally ref
to checkout a specific branch, tag or commit.
TMT_FINISH_SHELL_URL_REPOSITORY will hold the value of the
repository path.
finish:
how: shell
url: https://github.com/teemtee/tmt.git
ref: main
script: cd $TMT_FINISH_SHELL_URL_REPOSITORY && make docs
Use the order attribute to select in which order
finishing tasks should happen if there are multiple configs. Default
order is 50.
Configuration
See also Common Keys accepted by the plugin.
- ref
Branch, tag or commit to checkout in the git repository cloned when
urlis specified.Default: not set
Environment variable:
TMT_PLUGIN_FINISH_SHELL_REFIn plan metadata:
ref: REVISION
On command-line:
--ref REVISION export TMT_PLUGIN_FINISH_SHELL_REF=REVISION
- script
Shell script to be executed. Can be used multiple times.
Default: not set
Environment variable:
TMT_PLUGIN_FINISH_SHELL_SCRIPTIn plan metadata:
script: SCRIPT
On command-line:
--script SCRIPT export TMT_PLUGIN_FINISH_SHELL_SCRIPT=SCRIPT
- url
URL of a repository to clone. It will be pushed to guests before running any scripts, the path on the guest will be stored in a step variable.
Default: not set
Environment variable:
TMT_PLUGIN_FINISH_SHELL_URLIn plan metadata:
url: REPOSITORY
On command-line:
--url REPOSITORY export TMT_PLUGIN_FINISH_SHELL_URL=REPOSITORY