summaryrefslogtreecommitdiff
path: root/packaging
diff options
context:
space:
mode:
authorMatt Davis <nitzmahone@users.noreply.github.com>2018-05-21 16:14:53 -0700
committerMatt Clay <matt@mystile.com>2018-05-21 16:14:53 -0700
commite4edb2842a8816a3eed596aea1c28aa769a31e9d (patch)
tree6e1407782d7a1360345e078a4cee7808d365002a /packaging
parenteb818df1ecbc45458fa1aa446e2cc236e425056e (diff)
downloadansible-e4edb2842a8816a3eed596aea1c28aa769a31e9d.tar.gz
2.6 changelog gen/version/root dir cleanup (#40421)
* patched in changelog gen stuff from stable-2.5 * Makefile updates * release.py as single-source-of-truth * Remove obsolete ansible-core-sitemap.xml file. * Move ROADMAP.rst into README.rst. * dynamic rpm changelog, zap old deb/rpm changelogs * fix changelog in MANIFEST.in * Remove obsolete hacking/update.sh script. * Remove ref to deleted authors script. * Remove ref to removed module-formatter script. * Update headings to match script names. * MANIFEST.in cleanup * removed RELEASES.txt and versions.yml * removed obsolete release generation playbook/bits (not used since 2.5) * misc Makefile cleanup * speculative changes to DEB versioning * allow override of DEB_VERSION/DEB_RELEASE
Diffstat (limited to 'packaging')
-rw-r--r--packaging/debian/changelog327
-rw-r--r--packaging/release/release.yml210
-rw-r--r--packaging/release/templates/RELEASES.tmpl16
-rw-r--r--packaging/release/tests/__init__.py0
-rw-r--r--packaging/release/tests/version_helper_test.py42
-rw-r--r--packaging/release/vars/versions.yml167
-rw-r--r--packaging/release/versionhelper/__init__.py0
-rw-r--r--packaging/release/versionhelper/version_helper.py182
-rw-r--r--packaging/rpm/ansible.spec181
9 files changed, 232 insertions, 893 deletions
diff --git a/packaging/debian/changelog b/packaging/debian/changelog
index e3421f744d..de194369a7 100644
--- a/packaging/debian/changelog
+++ b/packaging/debian/changelog
@@ -3,330 +3,3 @@ ansible (%VERSION%-%RELEASE%~%DIST%) %DIST%; urgency=low
* %VERSION% release
-- Ansible, Inc. <info@ansible.com> %DATE%
-
-ansible (2.0.1.0) unstable; urgency=low
-
- * 2.0.1.0
-
- -- Ansible, Inc. <info@ansible.com> Wed, 24 Feb 2016 18:28:59 -0500
-
-
-ansible (2.0.0.2) unstable; urgency=low
-
- * 2.0.0.2
-
- -- Ansible, Inc. <info@ansible.com> Thu, 14 Jan 2016 17:17:41 -0500
-
-
-ansible (2.0.0.1) unstable; urgency=low
-
- * 2.0.0.1
-
- -- Ansible, Inc. <info@ansible.com> Tue, 12 Jan 2016 17:53:29 -0500
-
-
-ansible (2.0.0.0) unstable; urgency=low
-
- * 2.0.0.0
-
- -- Ansible, Inc. <info@ansible.com> Tue, 12 Jan 2016 08:33:59 -0500
-
-ansible (1.9.4) unstable; urgency=low
-
- * 1.9.4
-
- -- Ansible, Inc. <info@ansible.com> Fri, 09 Oct 2015 15:00:00 -0500
-
-ansible (1.9.3) unstable; urgency=low
-
- * 1.9.3
-
- -- Ansible, Inc. <info@ansible.com> Thu, 03 Sep 2015 18:30:00 -0500
-
-ansible (1.9.2) unstable; urgency=low
-
- * 1.9.2
-
- -- Ansible, Inc. <info@ansible.com> Wed, 24 Jun 2015 14:00:00 -0500
-
-ansible (1.9.1) unstable; urgency=low
-
- * 1.9.1
-
- -- Ansible, Inc. <info@ansible.com> Mon, 27 Apr 2015 17:00:00 -0500
-
-ansible (1.9.0.1) unstable; urgency=low
-
- * 1.9.0.1
-
- -- Ansible, Inc. <info@ansible.com> Wed, 25 Mar 2015 15:00:00 -0500
-
-ansible (1.8.4) unstable; urgency=low
-
- * 1.8.4
-
- -- Ansible, Inc. <info@ansible.com> Thu, 19 Feb 2015 12:00:00 -0500
-
-ansible (1.8.3) unstable; urgency=low
-
- * 1.8.3
-
- -- Ansible, Inc. <info@ansible.com> Tue, 17 Feb 2015 16:00:00 -0500
-
-ansible (1.8.2) unstable; urgency=low
-
- * 1.8.2
-
- -- Michael DeHaan <michael@ansible.com> Thu, 04 Dec 2014 17:00:00 -0500
-
-ansible (1.8.1) unstable; urgency=low
-
- * 1.8.1
-
- -- Michael DeHaan <michael@ansible.com> Wed, 26 Nov 2014 23:00:00 -0500
-
-ansible (1.8.0) unstable; urgency=low
-
- * 1.8.0
-
- -- Michael DeHaan <michael@ansible.com> Tue, 25 Nov 2014 17:00:00 -0500
-
-ansible (1.7.2) unstable; urgency=low
-
- * 1.7.2 release
-
- -- Michael DeHaan <michael@ansible.com> Wed, 24 Sep 2014 15:00:00 -0500
-
-ansible (1.7.1) unstable; urgency=low
-
- * 1.7.1 release
-
- -- Michael DeHaan <michael@ansible.com> Thu, 14 Oct 2014 17:00:00 -0500
-
-ansible (1.7) unstable; urgency=low
-
- * 1.7.0 release
-
- -- Michael DeHaan <michael@ansible.com> Wed, 06 Aug 2014 15:00:00 -0500
-
-ansible (1.6.10) unstable; urgency=low
-
- * 1.6.10 release
-
- -- Michael DeHaan <michael@ansible.com> Fri, 25 Jul 2014 13:00:00 -0500
-
-ansible (1.6.9) unstable; urgency=low
-
- * 1.6.9 release
-
- -- Michael DeHaan <michael@ansible.com> Thu, 24 Jul 2014 23:30:00 -0500
-
-ansible (1.6.8) unstable; urgency=low
-
- * 1.6.8 release
-
- -- Michael DeHaan <michael@ansible.com> Tue, 22 Jul 2014 17:30:00 -0500
-
-ansible (1.6.7) unstable; urgency=low
-
- * 1.6.7 release
-
- -- Michael DeHaan <michael@ansible.com> Mon, 21 Jul 2014 12:30:00 -0500
-
-ansible (1.6.6) unstable; urgency=low
-
- * 1.6.6 release
-
- -- Michael DeHaan <michael@ansible.com> Tue, 01 Jul 2014 15:30:00 -0500
-
-ansible (1.6.5) unstable; urgency=low
-
- * 1.6.5 release
-
- -- Michael DeHaan <michael@ansible.com> Wed, 25 Jun 2014 22:30:00 -0500
-
-ansible (1.6.4) unstable; urgency=low
-
- * 1.6.4 release
-
- -- Michael DeHaan <michael@ansible.com> Wed, 25 Jun 2014 17:30:00 -0500
-
-ansible (1.6.3) unstable; urgency=low
-
- * 1.6.3 release
-
- -- Michael DeHaan <michael@ansible.com> Mon, 09 Jun 2014 16:30:00 -0500
-
-ansible (1.6.2) unstable; urgency=low
-
- * 1.6.2 release
-
- -- Michael DeHaan <michael@ansible.com> Fri, 23 May 2014 17:30:00 -0500
-
-ansible (1.6.1) unstable; urgency=low
-
- * 1.6.1 release
-
- -- Michael DeHaan <michael@ansible.com> Wed, 07 May 2014 13:30:00 -0500
-
-ansible (1.6) unstable; urgency=low
-
- * 1.6.0 release
-
- -- Michael DeHaan <michael@ansible.com> Mon, 05 May 2014 17:30:03 -0500
-
-ansible (1.5.5) unstable; urgency=low
-
- * 1.5.5 release
-
- -- Michael DeHaan <michael@ansible.com> Fri, 18 April 2014 15:00:00 -0500
-
-ansible (1.5.4) unstable; urgency=low
-
- * 1.5.4 release
-
- -- Michael DeHaan <michael@ansible.com> Tue, 01 April 2014 08:46:00 -0500
-
-ansible (1.5.3) unstable; urgency=low
-
- * 1.5.3 release
-
- -- Michael DeHaan <michael@ansible.com> Thu, 13 March 2014 08:46:00 -0500
-
-ansible (1.5.2) unstable; urgency=low
-
- * 1.5.2 release
-
- -- Michael DeHaan <michael@ansible.com> Tue, 11 March 2014 08:46:00 -0500
-
-ansible (1.5.1) unstable; urgency=low
-
- * 1.5.1 release
-
- -- Michael DeHaan <michael@ansible.com> Mon, 10 March 2014 17:33:44 -0500
-
-ansible (1.5) unstable; urgency=low
-
- * 1.5 release
-
- -- Michael DeHaan <michael@ansible.com> Fri, 28 February 2014 00:00:00 -0500
-
-ansible (1.4.5) unstable; urgency=low
-
- * 1.4.5 release
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Wed, 12 February 2014 15:23:11 -0500
-
-ansible (1.4.4) unstable; urgency=low
-
- * 1.4.4 release
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Mon, 06 January 2014 10:30:34 -0500
-
-ansible (1.4.3) unstable; urgency=low
-
- * 1.4.3 release
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Fri, 20 December 2013 13:19:01 -0500
-
-ansible (1.4.2) unstable; urgency=low
-
- * 1.4.2 release
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Wed, 18 December 2013 19:00:00 -0500
-
-ansible (1.4.1) unstable; urgency=low
-
- * 1.4.1 release
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Wed, 27 November 2013 15:00:01 -0500
-
-ansible (1.4) unstable; urgency=low
-
- * 1.4 release
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Thu, 21 November 2013 15:00:01 -0500
-
-ansible (1.3) unstable; urgency=low
-
- * 1.3 release
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Fri, 13 September 2013 18:00:00 -0500
-
-ansible (1.2.2) unstable; urgency=low
-
- * 1.2.2 release
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Thu, 04 July 2013 21:45:01 -0500
-
-ansible (1.2.1) unstable; urgency=low
-
- * 1.2.1 release
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Thu, 04 July 2013 21:45:00 -0500
-
-ansible (1.2) unstable; urgency=low
-
- * 1.2 release
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Mon, 10 June 2013 15:00:00 -0500
-
-ansible (1.1) unstable; urgency=low
-
- * 1.1 release
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Tue, 02 Mar 2013 20:38:00 -0500
-
-ansible (1.0) unstable; urgency=low
-
- * 1.0 release
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Fri, 01 Feb 2013 21:34:34 -0500
-
-ansible (0.9) unstable; urgency=low
-
- * 0.9 release
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Fri, 30 Nov 2012 22:00:00 -0400
-
-ansible (0.8) unstable; urgency=low
-
- * 0.8 update
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Fri, 19 Oct 2012 20:50:00 -0400
-
-ansible (0.7) unstable; urgency=low
-
- * 0.7 update
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Thu, 06 Aug 2012 18:50:00 -0400
-
-ansible (0.6) unstable; urgency=low
-
- * 0.6 update
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Mon, 06 Aug 2012 19:50:00 -0400
-
-ansible (0.5) unstable; urgency=low
-
- * 0.5 update
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Wed, 04 Jul 2012 13:40:00 -0400
-
-ansible (0.4) unstable; urgency=low
-
- * 0.4 update
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Wed, 23 May 2012 19:40:00 -0400
-
-ansible (0.3) unstable; urgency=low
-
- * 0.3 update
-
- -- Michael DeHaan <michael.dehaan@gmail.com> Mon, 23 Apr 2012 11:08:00 -0400
-
-ansible (0.0.2) unstable; urgency=low
-
- * Initial Release
-
- -- Henry Graham (hzgraham) <Henry.Graham@mail.wvu.edu> Tue, 17 Apr 2012 17:17:01 -0400
diff --git a/packaging/release/release.yml b/packaging/release/release.yml
deleted file mode 100644
index 2f00f03d68..0000000000
--- a/packaging/release/release.yml
+++ /dev/null
@@ -1,210 +0,0 @@
-- 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.md, versions.yml, release_and_maintenance.rst, 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 is version(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
diff --git a/packaging/release/templates/RELEASES.tmpl b/packaging/release/templates/RELEASES.tmpl
deleted file mode 100644
index dbe76c6896..0000000000
--- a/packaging/release/templates/RELEASES.tmpl
+++ /dev/null
@@ -1,16 +0,0 @@
-Ansible Releases at a Glance
-============================
-
-VERSION RELEASE CODE NAME
-++++++++++++++++++++++++++++++
-
-{% for version in versions %}
-{% for vkey, vdata in version.items() %}
-{% for release in vdata.releases %}
-{% for rkey, rdata in release.items() %}
-{% set major_minor = vkey + "." + rkey %}
-{{"%-8s"|format(major_minor)}} {{"%-10s"|format(rdata)}} "{{vdata.code_name}}"
-{% endfor %}
-{% endfor %}
-{% endfor %}
-{% endfor %}
diff --git a/packaging/release/tests/__init__.py b/packaging/release/tests/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packaging/release/tests/__init__.py
diff --git a/packaging/release/tests/version_helper_test.py b/packaging/release/tests/version_helper_test.py
new file mode 100644
index 0000000000..72271e4d66
--- /dev/null
+++ b/packaging/release/tests/version_helper_test.py
@@ -0,0 +1,42 @@
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+import pytest
+
+from packaging.version import InvalidVersion
+from versionhelper.version_helper import AnsibleVersionMunger
+
+
+@pytest.mark.parametrize('version,revision,codename,output_propname,expected', [
+ ('2.5.0dev1', None, None, 'raw', '2.5.0dev1'),
+ ('2.5.0', None, None, 'raw', '2.5.0'),
+ ('2.5.0dev1', None, None, 'major_version', '2.5'),
+ ('2.5.0', None, None, 'major_version', '2.5'),
+ ('2.5.0dev1', None, None, 'base_version', '2.5.0'),
+ ('2.5.0', None, None, 'base_version', '2.5.0'),
+ ('2.5.0dev1', None, None, 'deb_version', '2.5.0~dev1'),
+ ('2.5.0b1', None, None, 'deb_version', '2.5.0~b1'),
+ ('2.5.0', None, None, 'deb_version', '2.5.0'),
+ ('2.5.0dev1', None, None, 'deb_release', '1'),
+ ('2.5.0b1', 2, None, 'deb_release', '2'),
+ ('2.5.0dev1', None, None, 'rpm_release', '0.1.dev1'),
+ ('2.5.0a1', None, None, 'rpm_release', '0.101.a1'),
+ ('2.5.0b1', None, None, 'rpm_release', '0.201.b1'),
+ ('2.5.0rc1', None, None, 'rpm_release', '0.1001.rc1'),
+ ('2.5.0rc1', '0.99', None, 'rpm_release', '0.99.rc1'),
+ ('2.5.0.rc.1', None, None, 'rpm_release', '0.1001.rc.1'),
+ ('2.5.0', None, None, 'rpm_release', '1'),
+ ('2.5.0', 2, None, 'rpm_release', '2'),
+ ('2.5.0', None, None, 'codename', 'UNKNOWN'),
+ ('2.5.0', None, 'LedZeppelinSongHere', 'codename', 'LedZeppelinSongHere'),
+ ('2.5.0x1', None, None, None, InvalidVersion)
+])
+def test_output_values(version, revision, codename, output_propname, expected):
+ try:
+ v = AnsibleVersionMunger(version, revision, codename)
+ assert getattr(v, output_propname) == expected
+ except Exception as ex:
+ if isinstance(expected, type):
+ assert isinstance(ex, expected)
+ else:
+ raise
diff --git a/packaging/release/vars/versions.yml b/packaging/release/vars/versions.yml
deleted file mode 100644
index ab4bf49dea..0000000000
--- a/packaging/release/vars/versions.yml
+++ /dev/null
@@ -1,167 +0,0 @@
-versions:
-- "2.6":
- code_name: "Heartbreaker"
- releases:
- - "0": TBD
-- "2.5":
- code_name: "Kashmir"
- releases:
- - "0": TBD
-- "2.4":
- code_name: "Dancing Days"
- releases:
- - "4": "04-04-2018"
- - "3": "01-31.2018"
- - "2": "11-29-2017"
- - "1": "10-25-2017"
- - "0": "09-19-2017"
-- "2.3":
- code_name: "Ramble On"
- releases:
- - "3": "12-20-2017"
- - "2": "08-04-2017"
- - "1": "06-01-2017"
- - "0": "04-12-2017"
-- "2.2":
- code_name: "The Battle of Evermore"
- releases:
- - "3": "05-09-2017"
- - "2": "03-27-2017"
- - "1": "01-16-2017"
- - "0": "11-01-2016"
-- "2.1":
- code_name: "The Song Remains the Same"
- releases:
- - "6": "06-01-2017"
- - "5": "03-27-2017"
- - "4": "01-16-2017"
- - "3": "11-04-2016"
- - "2": "09-29-2016"
- - "1": "07-28-2016"
- - "0": "05-25-2016"
-- "2.0":
- code_name: "Over the Hills and Far Away"
- releases:
- - '2': "04-19-2016"
- - '1': "02-24-2016"
- - '0': "01-12-2016"
-- "1.9":
- code_name: "Dancing In the Streets"
- releases:
- - '6': "04-15-2016"
- - '5': "03-21-2016"
- - '4': "10-09-2015"
- - '3': "09-03-2015"
- - '2': "06-24-2015"
- - '1': "04-27-2015"
- - '0': "03-25-2015"
-- "1.8":
- code_name: "You Really Got Me"
- releases:
- - '4': "02-19-2015"
- - '3': "02-17-2015"
- - '2': "12-04-2014"
- - '1': "11-26-2014"
- - '0': "11-25-2014"
-- "1.7":
- code_name: "Summer Nights"
- releases:
- - '2': "09-24-2014"
- - '1': "08-14-2014"
- - '0': "08-06-2014"
-- "1.6":
- code_name: "The Cradle Will Rock"
- releases:
- - '10': "07-25-2014"
- - '9': "07-24-2014"
- - '8': "07-22-2014"
- - '7': "07-21-2014"
- - '6': "07-01-2014"
- - '5': "06-25-2014"
- - '4': "06-25-2014"
- - '3': "06-09-2014"
- - '2': "05-23-2014"
- - '1': "05-07-2014"
- - '0': "05-05-2014"
-- "1.5":
- code_name: "Love Walks In"
- releases:
- - '5': "04-18-2014"
- - '4': "04-01-2014"
- - '3': "03-13-2014"
- - '2': "03-11-2014"
- - '1': "03-10-2014"
- - '0': "02-28-2014"
-- "1.4":
- code_name: "Could This Be Magic?"
- releases:
- - '5': "02-12-2014"
- - '4': "01-06-2014"
- - '3': "12-20-2013"
- - '2': "12-18-2013"
- - '1': "11-27-2013"
- - '0': "11-21-2013"
-- "1.3":
- code_name: "Top of the World"
- releases:
- - '4': "10-29-2013"
- - '3': "10-09-2013"
- - '2': "09-19-2013"
- - '1': "09-16-2013"
- - '0': "09-13-2013"
-- "1.2":
- code_name: "Right Now"
- releases:
- - '3': "08-21-2013"
- - '2': "07-05-2013"
- - '1': "07-04-2013"
- - '0': "06-10-2013"
-- "1.1":
- code_name: "Mean Street"
- releases:
- - '0': "04-02-2013"
-- "1.0":
- code_name: "Eruption"
- releases:
- - '0': "02-01-2013"
-- "0.9":
- code_name: "Dreams"
- releases:
- - '0': "11-30-2012"
-- "0.8":
- code_name: "Cathedral"
- releases:
- - '0': "10-19-2012"
-- "0.7":
- code_name: "Panama"
- releases:
- - '0': "09-06-2012"
-- "0.6":
- code_name: "Cabo"
- releases:
- - '0': "08-06-2012"
-- "0.5":
- code_name: "Amsterdam"
- releases:
- - '0': "07-04-2012"
-- "0.4":
- code_name: "Unchained"
- releases:
- - '0': "05-23-2012"
-- "0.3":
- code_name: "Baluchitherium"
- releases:
- - '0': "04-23-2012"
-- "0.2":
- code_name: "Untitled"
- releases:
- - '0': "?"
-- "0.1":
- code_name: "Untitled"
- releases:
- - '0': "?"
-- "0.0":
- code_name: "Untitled"
- releases:
- - '2': "?"
- - '1': "?"
diff --git a/packaging/release/versionhelper/__init__.py b/packaging/release/versionhelper/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packaging/release/versionhelper/__init__.py
diff --git a/packaging/release/versionhelper/version_helper.py b/packaging/release/versionhelper/version_helper.py
new file mode 100644
index 0000000000..051e7998fe
--- /dev/null
+++ b/packaging/release/versionhelper/version_helper.py
@@ -0,0 +1,182 @@
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+import argparse
+import os
+import re
+import sys
+
+from packaging.version import Version, VERSION_PATTERN
+
+
+class AnsibleVersionMunger(object):
+ tag_offsets = dict(
+ dev=0,
+ a=100,
+ b=200,
+ rc=1000
+ )
+
+ # TODO: allow overrides here for packaging bump etc
+ def __init__(self, raw_version, revision=None, codename=None):
+ self._raw_version = raw_version
+ self._revision = revision
+ self._parsed_version = Version(raw_version)
+ self._codename = codename
+ self._parsed_regex_match = re.match(VERSION_PATTERN, raw_version, re.VERBOSE | re.IGNORECASE)
+
+ @property
+ def deb_version(self):
+ v = self._parsed_version
+
+ match = self._parsed_regex_match
+
+ if v.is_prerelease:
+ if match.group('pre'):
+ tag_value = match.group('pre')
+ tag_type = match.group('pre_l')
+ tag_ver = match.group('pre_n')
+ elif match.group('dev'):
+ tag_type = "dev"
+ tag_value = match.group('dev')
+ tag_ver = match.group('dev_n')
+ else:
+ raise Exception("unknown prerelease type for version {0}".format(self._raw_version))
+
+ elif v.is_postrelease:
+ raise Exception("post-release identifiers are not supported")
+ else:
+ tag_type = None
+ tag_value = ''
+ tag_ver = 0
+
+ # not a pre/post/dev release, just return base version
+ if not tag_type:
+ return '{base_version}'.format(base_version=self.base_version)
+
+ # it is a pre/dev release, include the tag value with a ~
+ return '{base_version}~{tag_value}'.format(base_version=self.base_version, tag_value=tag_value)
+
+ @property
+ def deb_release(self):
+ return '1' if self._revision is None else str(self._revision)
+
+ @property
+ def rpm_release(self):
+ v = self._parsed_version
+ match = self._parsed_regex_match
+
+ if v.is_prerelease:
+ if match.group('pre'):
+ tag_value = match.group('pre')
+ tag_type = match.group('pre_l')
+ tag_ver = match.group('pre_n')
+ elif match.group('dev'):
+ tag_type = "dev"
+ tag_value = match.group('dev')
+ tag_ver = match.group('dev_n')
+ else:
+ raise Exception("unknown prerelease type for version {0}".format(self._raw_version))
+
+ elif v.is_postrelease:
+ raise Exception("post-release identifiers are not supported")
+ else:
+ tag_type = None
+ tag_value = ''
+ tag_ver = 0
+
+ # not a pre/post/dev release, just append revision (default 1)
+ if not tag_type:
+ if self._revision is None:
+ self._revision = 1
+ return '{revision}'.format(revision=self._revision)
+
+ # cleanse tag value in case it starts with .
+ tag_value = tag_value.strip('.')
+
+ # coerce to int and None == 0
+ tag_ver = int(tag_ver if tag_ver else 0)
+
+ if self._revision is None:
+ tag_offset = self.tag_offsets.get(tag_type)
+ if tag_offset is None:
+ raise Exception('no tag offset defined for tag {0}'.format(tag_type))
+ pkgrel = '0.{0}'.format(tag_offset + tag_ver)
+ else:
+ pkgrel = self._revision
+
+ return '{pkgrel}.{tag_value}'.format(pkgrel=pkgrel, tag_value=tag_value)
+
+ @property
+ def raw(self):
+ return self._raw_version
+
+ # return the x.y.z version without any other modifiers present
+ @property
+ def base_version(self):
+ return self._parsed_version.base_version
+
+ # return the x.y version without any other modifiers present
+ @property
+ def major_version(self):
+ return re.match(r'^(\d+.\d+)', self._raw_version).group(1)
+
+ @property
+ def codename(self):
+ return self._codename if self._codename else "UNKNOWN"
+
+
+def main():
+ parser = argparse.ArgumentParser(description='Extract/transform Ansible versions to various packaging formats')
+
+ group = parser.add_mutually_exclusive_group(required=True)
+ group.add_argument('--raw', action='store_true')
+ group.add_argument('--majorversion', action='store_true')
+ group.add_argument('--baseversion', action='store_true')
+ group.add_argument('--debversion', action='store_true')
+ group.add_argument('--debrelease', action='store_true')
+ group.add_argument('--rpmrelease', action='store_true')
+ group.add_argument('--codename', action='store_true')
+ group.add_argument('--all', action='store_true')
+
+ parser.add_argument('--revision', action='store', default='auto')
+
+ args = parser.parse_args()
+
+ mydir = os.path.dirname(__file__)
+ release_loc = os.path.normpath(mydir + '/../../../lib')
+
+ sys.path.insert(0, release_loc)
+
+ from ansible import release
+
+ rev = None
+ if args.revision != 'auto':
+ rev = args.revision
+
+ v_raw = release.__version__
+ codename = release.__codename__
+ v = AnsibleVersionMunger(v_raw, revision=rev, codename=codename)
+
+ if args.raw:
+ print(v.raw)
+ elif args.baseversion:
+ print(v.base_version)
+ elif args.majorversion:
+ print(v.major_version)
+ elif args.debversion:
+ print(v.deb_version)
+ elif args.debrelease:
+ print(v.deb_release)
+ elif args.rpmrelease:
+ print(v.rpm_release)
+ elif args.codename:
+ print(v.codename)
+ elif args.all:
+ props = [name for (name, impl) in vars(AnsibleVersionMunger).items() if isinstance(impl, property)]
+
+ for propname in props:
+ print('{0}: {1}'.format(propname, getattr(v, propname)))
+
+if __name__ == '__main__':
+ main()
diff --git a/packaging/rpm/ansible.spec b/packaging/rpm/ansible.spec
index f74e07c62b..c7b72ce708 100644
--- a/packaging/rpm/ansible.spec
+++ b/packaging/rpm/ansible.spec
@@ -1,18 +1,18 @@
%define name ansible
-%define ansible_version $VERSION
+%define release_date %(date "+%a %b %e %Y")
%if 0%{?rhel} == 5
%define __python2 /usr/bin/python26
%endif
Name: %{name}
-Version: %{ansible_version}
-Release: 1%{?dist}
+Version: %{rpmversion}
+Release: %{rpmrelease}%{?dist}%{?repotag}
Url: https://www.ansible.com
Summary: SSH-based application deployment, configuration management, and IT orchestration platform
License: GPLv3+
Group: Development/Libraries
-Source: https://releases.ansible.com/ansible/%{name}-%{version}.tar.gz
+Source: https://releases.ansible.com/ansible/%{name}-%{upstream_version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
%{!?__python2: %global __python2 /usr/bin/python2.6}
%{!?python_sitelib: %global python_sitelib %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
@@ -87,7 +87,7 @@ on remote nodes. Extension modules can be written in any language and
are transferred to managed machines automatically.
%prep
-%setup -q
+%setup -q -n %{name}-%{upstream_version}
%build
%{__python2} setup.py build
@@ -128,175 +128,10 @@ rm -rf %{buildroot}
%{_bindir}/ansible*
%dir %{_datadir}/ansible
%config(noreplace) %{_sysconfdir}/ansible
-%doc README.rst PKG-INFO COPYING CHANGELOG.md
+%doc README.rst PKG-INFO COPYING changelogs/CHANGELOG-*.rst
%doc %{_mandir}/man1/ansible*
%changelog
-* Wed Feb 24 2016 Ansible, Inc. <info@ansible.com> - 2.0.1.0-1
-- Release 2.0.1.0-1
-
-* Thu Jan 14 2016 Ansible, Inc. <info@ansible.com> - 2.0.0.2-1
-- Release 2.0.0.2-1
-
-* Tue Jan 12 2016 Ansible, Inc. <info@ansible.com> - 2.0.0.1-1
-- Release 2.0.0.1-1
-
-* Tue Jan 12 2016 Ansible, Inc. <info@ansible.com> - 2.0.0.0-1
-- Release 2.0.0.0-1
-
-* Fri Oct 09 2015 Ansible, Inc. <info@ansible.com> - 1.9.4
-- Release 1.9.4
-
-* Thu Sep 03 2015 Ansible, Inc. <info@ansible.com> - 1.9.3
-- Release 1.9.3
-
-* Wed Jun 24 2015 Ansible, Inc. <info@ansible.com> - 1.9.2
-- Release 1.9.2
-
-* Mon Apr 27 2015 Ansible, Inc. <info@ansible.com> - 1.9.1
-- Release 1.9.1
-
-* Wed Mar 25 2015 Ansible, Inc. <info@ansible.com> - 1.9.0
-- Release 1.9.0
-
-* Thu Feb 19 2015 Ansible, Inc. <info@ansible.com> - 1.8.4
-- Release 1.8.4
-
-* Tue Feb 17 2015 Ansible, Inc. <info@ansible.com> - 1.8.3
-- Release 1.8.3
-
-* Thu Dec 04 2014 Michael DeHaan <michael@ansible.com> - 1.8.2
-- Release 1.8.2
-
-* Wed Nov 26 2014 Michael DeHaan <michael@ansible.com> - 1.8.1
-- Release 1.8.1
-
-* Tue Nov 25 2014 Michael DeHaan <michael@ansible.com> - 1.8.0
-- Release 1.8.0
-
-* Wed Sep 24 2014 Michael DeHaan <michael@ansible.com> - 1.7.2
-- Release 1.7.2
-
-* Thu Aug 14 2014 Michael DeHaan <michael@ansible.com> - 1.7.1
-- Release 1.7.1
-
-* Wed Aug 06 2014 Michael DeHaan <michael@ansible.com> - 1.7.0
-- Release 1.7.0
-
-* Fri Jul 25 2014 Michael DeHaan <michael@ansible.com> - 1.6.10
-- Release 1.6.10
-
-* Thu Jul 24 2014 Michael DeHaan <michael@ansible.com> - 1.6.9
-- Release 1.6.9
-
-* Tue Jul 22 2014 Michael DeHaan <michael@ansible.com> - 1.6.8
-- Release 1.6.8
-
-* Mon Jul 21 2014 Michael DeHaan <michael@ansible.com> - 1.6.7
-- Release 1.6.7
-
-* Tue Jul 01 2014 Michael DeHaan <michael@ansible.com> - 1.6.6
-- Release 1.6.6
-
-* Wed Jun 25 2014 Michael DeHaan <michael@ansible.com> - 1.6.5
-- Release 1.6.5
-
-* Wed Jun 25 2014 Michael DeHaan <michael@ansible.com> - 1.6.4
-- Release 1.6.4
-
-* Mon Jun 09 2014 Michael DeHaan <michael@ansible.com> - 1.6.3
-- Release 1.6.3
-
-* Fri May 23 2014 Michael DeHaan <michael@ansible.com> - 1.6.2
-- Release 1.6.2
-
-* Wed May 07 2014 Michael DeHaan <michael@ansible.com> - 1.6.1
-- Release 1.6.1
-
-* Mon May 05 2014 Michael DeHaan <michael@ansible.com> - 1.6.0
-- Release 1.6.0
-
-* Fri Apr 18 2014 Michael DeHaan <michael@ansible.com> - 1.5.5
-- Release 1.5.5
-
-* Tue Apr 01 2014 Michael DeHaan <michael@ansible.com> - 1.5.4
-- Release 1.5.4
-
-* Thu Mar 13 2014 Michael DeHaan <michael@ansible.com> - 1.5.3
-- Release 1.5.3
-
-* Tue Mar 11 2014 Michael DeHaan <michael@ansible.com> - 1.5.2
-- Release 1.5.2
-
-* Mon Mar 10 2014 Michael DeHaan <michael@ansible.com> - 1.5.1
-- Release 1.5.1
-
-* Fri Feb 28 2014 Michael DeHaan <michael@ansible.com> - 1.5.0
-- Release 1.5.0
-
-* Fri Feb 28 2014 Michael DeHaan <michael.dehaan@gmail.com> - 1.5-0
-* Release 1.5
-
-* Wed Feb 12 2014 Michael DeHaan <michael.dehaan@gmail.com> - 1.4.5
-* Release 1.4.5
-
-* Mon Jan 06 2014 Michael DeHaan <michael.dehaan@gmail.com> - 1.4.4
-* Release 1.4.4
-
-* Fri Dec 20 2013 Michael DeHaan <michael.dehaan@gmail.com> - 1.4.3
-* Release 1.4.3
-
-* Wed Dec 18 2013 Michael DeHaan <michael.dehaan@gmail.com> - 1.4.2
-* Release 1.4.2
-
-* Wed Nov 27 2013 Michael DeHaan <michael.dehaan@gmail.com> - 1.4-1
-* Release 1.4.1
-
-* Thu Nov 21 2013 Michael DeHaan <michael.dehaan@gmail.com> - 1.4-0
-* Release 1.4.0
-
-* Fri Sep 13 2013 Michael DeHaan <michael.dehaan@gmail.com> - 1.3-0
-* Release 1.3.0
-
-* Fri Jul 05 2013 Michael DeHaan <michael.dehaan@gmail.com> - 1.2-2
-* Release 1.2.2
-
-* Thu Jul 04 2013 Michael DeHaan <michael.dehaan@gmail.com> - 1.2-1
-* Release 1.2.1
-
-* Mon Jun 10 2013 Michael DeHaan <michael.dehaan@gmail.com> - 1.2-0
-* Release 1.2
-
-* Tue Apr 2 2013 Michael DeHaan <michael.dehaan@gmail.com> - 1.1-0
-* Release 1.1
-
-* Fri Feb 1 2013 Michael DeHaan <michael.dehaan@gmail.com> - 1.0-0
-- Release 1.0
-
-* Fri Nov 30 2012 Michael DeHaan <michael.dehaan@gmail.com> - 0.9-0
-- Release 0.9
-
-* Fri Oct 19 2012 Michael DeHaan <michael.dehaan@gmail.com> - 0.8-0
-- Release of 0.8
-
-* Mon Aug 6 2012 Michael DeHaan <michael.dehaan@gmail.com> - 0.7-0
-- Release of 0.7
-
-* Mon Aug 6 2012 Michael DeHaan <michael.dehaan@gmail.com> - 0.6-0
-- Release of 0.6
-
-* Wed Jul 4 2012 Michael DeHaan <michael.dehaan@gmail.com> - 0.5-0
-- Release of 0.5
-
-* Wed May 23 2012 Michael DeHaan <michael.dehaan@gmail.com> - 0.4-0
-- Release of 0.4
-
-* Mon Apr 23 2012 Michael DeHaan <michael.dehaan@gmail.com> - 0.3-1
-- Release of 0.3
-
-* Tue Apr 3 2012 John Eckersberg <jeckersb@redhat.com> - 0.0.2-1
-- Release of 0.0.2
-
-* Sat Mar 10 2012 <tbielawa@redhat.com> - 0.0.1-1
-- Release of 0.0.1
+* %{release_date} Ansible, Inc. <info@ansible.com> - %{rpmversion}-%{rpmrelease}
+- Release %{rpmversion}-%{rpmrelease}