Working With Tags

Tags are the primary means of organizing builds. Common tags are ‘testing’, ‘development’, ‘stable’. MonkeyFarm provides a number of features based on tags that can be really useful. Here are a few:

requires_admin
The tag requires the user to be part of the projects admin_group
manage_repo
Manage a repository of files when builds are tagged
include_in_builds
Allows build_handlers to detect this setting, and configure builds to also include files from the managed repo (i.e. the mock build_handler dynamically adds the projects tag repo into the mock configs).
close_on_tag
Close builds (and potentially bugs) when the builds is tagged.
locked
Allows an admin to lock the tag before performing other operations (such as moving builds from one tag to another)
only_latest
Removes older builds from the tag, when a newer build with the same package is tagged.

Tags, along with the API interface allow organizations to automate certain operations. For example, a common use would be the following tags:

testing-candidate
All users are allowed to tag a build into this tag.
testing
An automation script can then automate moving all builds from testing-candidate into testing (which requires admin privileges). At the same time the automation script can pull down the files for the new builds in testing, and generate an external repository for official testing.
stable-candidate
After some time in testing, the user can then tag a build as stable-candidate signifying that it has passed testing and can be pushed to stable.
stable
An automation script then moves all tasks from stable-candidate, to stable... as well as untags the task from testing.

This is just a common scenario... the possibilities are only limited by the users imagination.

Creating a Tag

$ mf tag create -l testing-candidate

$ mf tag create -l testing --requires-admin=True

$ mf tag create -l stable-candidate

$ mf tag create -l stable --requires-admin=True --manage-repo=True

Updating a Tag

$ mf tag update stable --run-createrepo=True \
                       --close-on-tag=True \
                       --only-latest=True \
                       --include-in-builds=True

Deleting a Tag

$ mf tag delete testing-candidate

Listing Tags

List all tags for a project:

$ mf tag listall

# with a filter
$ mf tag listall -f stable

Move All Builds From One Tag To Another

$ mf tag move-builds stable-candidate --tag stable

Note: The move-builds operation also returns ‘untagged_builds’ in its JSON return data. These are all the builds that were untagged from the destination tag because of the ‘only_latest’ setting meaning they were older than a new build.

Project Versions

Table Of Contents

Previous topic

Working With Tasks

Next topic

Administration Guide

This Page