mirror of
				https://github.com/ansible-collections/community.general.git
				synced 2024-09-14 20:13:21 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			210 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			210 lines
		
	
	
	
		
			6.8 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.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
 |