622ea7ca62
Since releases on 2.2 and prior are few and far between, it makes more sense to set the default to "no" for 2.3+ now.
210 lines
6.7 KiB
YAML
210 lines
6.7 KiB
YAML
- hosts: localhost
|
|
gather_facts: no
|
|
vars_files:
|
|
- vars/versions.yml
|
|
vars:
|
|
release_dir: "./ansible_release"
|
|
release_date: "{{lookup('pipe', 'date +\"%m-%d-%Y\"')}}"
|
|
rpm_spec_line: |
|
|
|
|
* {{lookup('pipe', 'date +"%a %b %d %Y"')}} Ansible, Inc. <info@ansible.com> - {{ansible_release_version}}-{{ansible_release_string}}
|
|
- Release {{ansible_release_version}}-{{ansible_release_string}}
|
|
deb_changelog_line: |
|
|
|
|
ansible ({{ansible_release_version}}) unstable; urgency=low
|
|
|
|
* {{ansible_release_version}}
|
|
|
|
-- Ansible, Inc. <info@ansible.com> {{lookup('pipe', 'date -R')}}
|
|
|
|
vars_prompt:
|
|
- name: ansible_release_branch
|
|
prompt: "Enter the release branch"
|
|
private: no
|
|
- name: ansible_release_version
|
|
prompt: "Enter the release version"
|
|
private: no
|
|
- name: ansible_release_string
|
|
prompt: "Enter the release string (ie. 0.1.beta1, or just 1 for final releases)"
|
|
private: no
|
|
#- name: ansible_release_codename
|
|
# prompt: "Enter the release code name (only used if doing a final release)"
|
|
# default: ""
|
|
# private: no
|
|
- name: has_submodules
|
|
prompt: "Does this branch have git submodules?"
|
|
default: "no"
|
|
private: no
|
|
- name: is_final
|
|
prompt: "Is this a final release (not a beta/rc)?"
|
|
default: "no"
|
|
private: no
|
|
- name: do_push
|
|
prompt: "Push repositories upstream when done?"
|
|
default: "no"
|
|
private: no
|
|
tasks:
|
|
- pause:
|
|
prompt: "Has the CHANGELOG and any other files been updated and are ready to go?"
|
|
when: is_final|bool
|
|
|
|
- name: create a combined version string from the specified values
|
|
set_fact:
|
|
new_version: "v{{ansible_release_version}}-{{ansible_release_string}}"
|
|
|
|
- name: assert certain variables are defined
|
|
assert:
|
|
that:
|
|
- ansible_release_branch is defined
|
|
- ansible_release_version is defined
|
|
- ansible_release_string is defined
|
|
|
|
- name: Remove ansible_release (if it exists)
|
|
file:
|
|
path: "{{release_dir}}/"
|
|
state: absent
|
|
|
|
- name: Clone the official repo
|
|
git:
|
|
#repo: "git@github.com:ansible/ansible.git"
|
|
repo: "https://github.com/ansible/ansible.git"
|
|
dest: "{{release_dir}}"
|
|
version: "{{ansible_release_branch}}"
|
|
recursive: yes
|
|
|
|
- name: get the latest version
|
|
shell:
|
|
_raw_params: git tag | tail -1
|
|
chdir: "{{release_dir}}"
|
|
register: latest_version
|
|
|
|
- name: "assert the specified version ({{new_version}}) is greater than the latest version ({{latest_version.stdout}})"
|
|
assert:
|
|
that:
|
|
- new_version|version_compare(latest_version.stdout, "gt")
|
|
ignore_errors: yes
|
|
|
|
- name: Update the VERSION file for the main repo
|
|
copy:
|
|
dest: "{{release_dir}}/VERSION"
|
|
content: "{{ansible_release_version}} {{ansible_release_string}}\n"
|
|
|
|
- name: Update the library version
|
|
lineinfile:
|
|
dest: "{{release_dir}}/lib/ansible/release.py"
|
|
regexp: "^__version__ ="
|
|
line: "__version__ = '{{ansible_release_version}}'"
|
|
|
|
- block:
|
|
- name: Update the spec file release list
|
|
lineinfile:
|
|
dest: "{{release_dir}}/packaging/rpm/ansible.spec"
|
|
regexp: "^- Release {{ansible_release_version}}-{{ansible_release_string}}"
|
|
line: "{{rpm_spec_line.rstrip()}}"
|
|
insertafter: "^%changelog"
|
|
- name: Update the deb changelog file
|
|
lineinfile:
|
|
dest: "{{release_dir}}/packaging/debian/changelog"
|
|
regexp: "^ansible ({{ansible_release_version}})"
|
|
line: "{{deb_changelog_line}}"
|
|
insertafter: "-- Ansible, Inc. <info@ansible.com> %DATE%"
|
|
- name: Update RELEASES.txt
|
|
template:
|
|
dest: "{{release_dir}}/RELEASES.txt"
|
|
src: "templates/RELEASES.tmpl"
|
|
when: is_final|bool
|
|
|
|
- name: "Make sure modules are checked out to {{ansible_release_branch}}"
|
|
shell:
|
|
_raw_params: "git checkout {{ansible_release_branch}}"
|
|
chdir: "{{release_dir}}/lib/ansible/modules/{{item}}/"
|
|
with_items:
|
|
- core
|
|
- extras
|
|
when: has_submodules|bool
|
|
|
|
- name: Update the VERSION file for the modules
|
|
copy:
|
|
dest: "{{release_dir}}/lib/ansible/modules/{{item}}/VERSION"
|
|
content: "{{ansible_release_version}} {{ansible_release_string}}\n"
|
|
with_items:
|
|
- core
|
|
- extras
|
|
when: has_submodules|bool
|
|
|
|
- name: Add and commit the updated files for the core modules
|
|
shell:
|
|
_raw_params: "git add ./ && git commit -m 'New release {{new_version}}'"
|
|
chdir: "{{release_dir}}/lib/ansible/modules/{{item}}/"
|
|
with_items:
|
|
- core
|
|
- extras
|
|
when: has_submodules|bool
|
|
|
|
- name: Add and commit the updated files for the main repo
|
|
shell:
|
|
_raw_params: "git add ./ && git commit -m 'New release {{new_version}}'"
|
|
chdir: "{{release_dir}}/"
|
|
|
|
- name: Tag the release
|
|
shell:
|
|
_raw_params: "git tag -fa {{new_version}} -m 'New release {{new_version}}'"
|
|
chdir: "{{release_dir}}/"
|
|
|
|
- name: update git config for the main repo
|
|
lineinfile:
|
|
dest: "{{release_dir}}/.git/config"
|
|
regexp: "upstream"
|
|
line: |
|
|
[remote "upstream"]
|
|
url = git@github.com:ansible/ansible.git
|
|
fetch = +refs/heads/*:refs/remotes/origin/*
|
|
|
|
- name: update git config for submodules
|
|
lineinfile:
|
|
dest: "{{release_dir}}/.git/modules/lib/ansible/modules/{{item}}/config"
|
|
regexp: "submodule_upstream"
|
|
line: |
|
|
[remote "submodule_upstream"]
|
|
url = git@github.com:ansible/ansible-modules-{{item}}.git
|
|
fetch = +refs/heads/*:refs/remotes/origin/*
|
|
with_items:
|
|
- core
|
|
- extras
|
|
when: has_submodules|bool
|
|
|
|
- name: create the dist tar.gz
|
|
command:
|
|
_raw_params: make sdist
|
|
chdir: "{{release_dir}}/"
|
|
environment:
|
|
OFFICIAL: yes
|
|
|
|
- name: rename the dist tar.gz to include the full release
|
|
command:
|
|
_raw_params: "mv dist/ansible-{{ansible_release_version}}.tar.gz dist/ansible-{{ansible_release_version}}-{{ansible_release_string}}.tar.gz"
|
|
chdir: "{{release_dir}}/"
|
|
|
|
- name: generate the SHA file for the tar.gz
|
|
shell:
|
|
_raw_params: "sha256sum dist/ansible-{{ansible_release_version}}-{{ansible_release_string}}.tar.gz > dist/ansible-{{ansible_release_version}}-{{ansible_release_string}}.tar.gz.sha"
|
|
chdir: "{{release_dir}}/"
|
|
|
|
- block:
|
|
- pause:
|
|
prompt: "Ready to push, this is the last chance to abort..."
|
|
|
|
- name: Push the submodule repos
|
|
shell:
|
|
_raw_params: "git push submodule_upstream {{ansible_release_branch}}"
|
|
chdir: "{{release_dir}}/lib/ansible/modules/{{item}}/"
|
|
with_items:
|
|
- core
|
|
- extras
|
|
when: has_submodules|bool
|
|
|
|
- name: Push the updates and/or tag
|
|
shell:
|
|
_raw_params: "git push --tags upstream {{ansible_release_branch}}"
|
|
chdir: "{{release_dir}}/lib/ansible/modules/{{item}}/"
|
|
when: do_push|bool
|