Releasing new Ansible major versions and frozen releases requires some special handling. For information about the general release process, see Ansible Release Process.
After the release of X.0.0
, it is necessary to create the directory
structure for Ansible X+1
.
-
Determine the current major version and next major version:
CURRENT_MAJOR_VERSION=11 NEXT_MAJOR_VERSION=12
-
Create the major version directory:
mkdir "${NEXT_MAJOR_VERSION}/"
-
Copy over the
ansible.in
andcollection-meta.yaml
files:cp "${CURRENT_MAJOR_VERSION}/ansible.in" "${CURRENT_MAJOR_VERSION}/collection-meta.yaml" \ "${NEXT_MAJOR_VERSION}/"
-
Symlink
${CURRENT_MAJOR_VERSION}.0.0
's deps file to${NEXT_MAJOR_VERSION}/ancestor.deps
:ln -sr "${CURRENT_MAJOR_VERSION}/ansible-${CURRENT_MAJOR_VERSION}.0.0.deps" \ "${NEXT_MAJOR_VERSION}/ancestor.deps"
-
Create a stub
changelog.yaml
file:cat <<EOF >${NEXT_MAJOR_VERSION}/changelog.yaml --- ancestor: ${CURRENT_MAJOR_VERSION}.0.0 releases: {} EOF
-
Create a blank
validate-tags-ignores
file:touch "${NEXT_MAJOR_VERSION}/validate-tags-ignores"
-
Create a blank
ansible-${NEXT_MAJOR_VERSION}.constraints
file:touch "${NEXT_MAJOR_VERSION}/ansible-${NEXT_MAJOR_VERSION}.constraints"
You might need to fill this with some initial data.
-
Add the next major version to ansible-build-data's CI:
Open
.github/workflows/antsibull-build.yml
and add the following block to the matrix:- name: Ansible ${NEXT_MAJOR_VERSION} ansible_version: ${NEXT_MAJOR_VERSION}.99.0 ansible_major_version: ${NEXT_MAJOR_VERSION}
-
Update
collection-meta.yaml
andansible.in
:-
Find all collection entries from
collections
incollections-meta.yaml
that have aremoval
entry withmajor_version
equal to${NEXT_MAJOR_VERSION}
.-
If the
removal
entry has anupdates
and the last entry is about keeping them (readded_version
orcancelled_version
), remove theremoval
entry completely. -
Otherwise, cut out the collection's entry and paste it into a temporary buffer / file.
-
-
For every cut out metadata entry, remove the corresponding entry in
ansible.in
. -
For every cut out metadata entry, find the correct place in
removed_collections
incollections-meta.yaml
to insert the removed part fromcollections-meta.yaml
and paste the entry there. Modify the entry as follows:-
Replace
major_version: ${NEXT_MAJOR_VERSION}
byversion: ${NEXT_MAJOR_VERSION}.0.0a1
. -
Remove
announce_version
if present. -
Remove
updates
if present.
-
-
-
Validate build data:
antsibull-build lint-build-data --data-dir "${NEXT_MAJOR_VERSION}" "${NEXT_MAJOR_VERSION}"
-
Commit the changes:
git add "${NEXT_MAJOR_VERSION}" .github/workflows/antsibull-build.yml
-
Submit a PR against the ansible-build-data repository.