Bitrise Machine - manage bitrise CLI runner hosts
Requirements
Cleanup modes
IMPORTANT: if you want to change a config's Cleanup Mode, first make sure that
the machine/VM is not running, e.g. by running bitrise-machine destroy
. Only after that
you should change the Cleanup Mode in the config!
rollback
: runs vagrant snapshot pop
to clean up
- requires at least
vagrant
v1.8.0
- SESSION: NOT SUPPORTED
recreate
: runs vagrant destroy -f
and then vagrant up
to clean up
bitrise-machine cleanup
is the same as bitrise-machine destroy && bitrise-machine setup
- SESSION: full session handling support, init session when VM created
destroy
: runs vagrant destroy -f
to cleanup, and allows/requires bitrise-machine setup
(to create the Virtual Machine with vagrant up
)
- useful for on-demand conigurations, where you might want to have periods when the virtual machine/host is not created
bitrise-machine cleanup
only cleans up / destroys the virtual machine, it does not recreate it.
You have to run bitrise-machine setup
to create a new one after a cleanup.
- SESSION: full session handling support, init session when VM created
custom-command
: runs vagrant CUSTOM-COMMAND
to clean up, or vagrant up
in case the Virtual Machine is not yet created
- useful for provider plugins which add custom
vagrant
actions, which can be used for cleanup.
For example the vagrant-digitalocean plugin adds
a rebuild
command to vagrant
and makes a cleanup / re-build faster than
re-creating the Virtual Machine with vagrant destroy
and vagrant up
.
- SESSION: NOT SUPPORTED
Session
Bitrise Machine exposes a "session time id" as an environment variable,
which can be used in the Vagrantfile.
Where session is supported, this "session time id" persists between
a setup and a destroy, so the session time id will be the same
during bitrise-machine setup
and the following bitrise-machine destroy/cleanup
,
and will be re-generated at the next "vagrant up".
This session time id can be used to e.g. include it in the Virtual Machine ID,
to help with unique ID generation, as the ID will be kept from "vagrant up"
to "vagrant destroy", and the next "vagrant up" will generate a new session (time id).
Do not depend on session handling in recreate modes which do not support session!
See the cleanup mode list above for which modes support support it!
The environment variable is: BITRISE_MACHINE_SESSION_TIME_ID
Format: YYYYMMDDHHMMSS
Example: 20170215093215
TODO
- complete restructure: make everything session based
- e.g. session.Start should create the SSH keys too
- and session.End should delete them
- use Interface for "lifecycle handlers", one for each cleanup mode,
so the common code just determines which handler to use (based on the cleanup mode),
and then calls the handler's Setup, Destroy, Cleanup, ... methods,
instead of doing this logic inline in every function (e.g.
doCleanup
)