Ansible Release Process¶
Preamble¶
This document describes the ansible community package release process.
Note
Throughout this page, placeholder values in code blocks are formatted as
${PLACEHOLDER_VALUE}
where PLACEHOLDER_VALUE
describes the value to fill in.
Set up container¶
Release managers may choose to preform the following steps inside a podman or
docker container created from the docker.io/library/python:3.10
image.
Make sure to mount your working directory as a volume so you don't have to set
up new repository clones every time.
podman run --name ansible-release -v ${PERSISTENT_DIRECTORY}:/pwd:z -w /pwd -ti docker.io/library/python:3.10 bash
Set up repository clones¶
First, you need to set up ansible-build-data and antsibull repository clones. This only needs to be done once.
-
Fork the ansible-build-data repository.
-
Checkout the antsibull and ansible-documentation repositories and change into antsibull.
-
Checkout ansible-build-data and configure your fork.
To checkout the repository run
mkdir build cd build git clone https://github.com/ansible-community/ansible-build-data cd ansible-build-data
Then, configure your fork. This guide uses your Github username as the fork remote name.
Perform release process¶
-
Change into the antsibull checkout. Make sure you have the
main
branch checked out and rungit pull
to update to the latest commit. -
Create a clean virtual environment for the release process.
rm -rf release-venv python3 -m venv release-venv . ./release-venv/bin/activate python3 -m pip install -U pip
Install the
antsibull
,ansible-core
, andtwine
python packages, as well as the community.general collection. -
Run the ansible release playbook with the appropriate options. You can see the argument spec for a full breakdown, but this describes the basic usage.
export ANSIBLE_CALLBACK_RESULT_FORMAT=yaml ansible-playbook playbooks/build-single-release.yaml -e antsibull_ansible_version=${VERSION}
Note
When building ansible versions greater than 9.0.0a1,
Validate tags file
task failures will fail the release playbook instead of warning and moving on. See policies.md for how to proceed if this step fails. -
Commit the changes and push them to your fork.
You can run the following commands to do so
cd build/ansible-build-data git switch -c release-${VERSION} git add ${MAJOR_VERSION}/ git commit -m "Ansible ${VERSION}: Dependencies, changelog and porting guide" git push -u ${USERNAME} release-${VERSION}
Then, submit a pull request against ansible-build-data upstream.
-
Submit a PR to ansible/ansible-documentation to add the new porting guide to the docsite. Copy the porting guide to the ansible docsite directory in your ansible checkout with the following command
cp ${MAJOR_VERSION}/porting_guide_${MAJOR_VERSION}.rst ../ansible-documentation/docs/docsite/rst/porting_guides/
switch to the ansible checkout, commit and push the changes, and then submit a PR as you normally would. You can use
Add Ansible community ${VERSION} porting guide
as the commit message. -
Once the ansible-build-data PR has been merged, publish the build artifacts to PyPI. From the antsibull repository root, run
-
Tag the release commit in the ansible-build-data repository.
-
Announce the release on Matrix and the mailing list. TODO: Move announcement templates into this repository. Release managers can copy and paste the previous release's announcement for now. Make sure to change the version numbers and sha256sum in the announcement text.