Add an ansible playbook for project renames
There are still a few manual tasks, but this takes care of the vast majority of them. Change-Id: I919ba42b0d22126719daa7ad308f75ce021720b7
This commit is contained in:
parent
d039a62045
commit
2b4ece5fb7
@ -452,66 +452,21 @@ To rename a project:
|
|||||||
not currently in progress. When it finishes, make sure the entry
|
not currently in progress. When it finishes, make sure the entry
|
||||||
has not been added back to the crontab.
|
has not been added back to the crontab.
|
||||||
|
|
||||||
#. Gracefully stop Zuul on zuul.openstack.org::
|
#. Prepare a yaml file called repos.yaml that has a single dictionary called
|
||||||
|
`repos` with a list of dictionaries each having an old and new entry.
|
||||||
|
Optionally also add a `gerrit_groups` dict of the same form::
|
||||||
|
|
||||||
python /opt/zuul/tools/zuul-changes.py http://zuul.openstack.org gate >gate.sh
|
repos:
|
||||||
python /opt/zuul/tools/zuul-changes.py http://zuul.openstack.org check >check.sh
|
- old: stackforge/awesome-repo
|
||||||
sudo invoke-rc.d zuul stop
|
new: openstack/awesome-repo
|
||||||
sudo rm -f /var/run/zuul/zuul.pid /var/run/zuul/zuul.lock
|
gerrit_groups:
|
||||||
|
- old: old-core-group
|
||||||
|
new: new-core-group
|
||||||
|
|
||||||
#. Stop Gerrit on review.openstack.org::
|
#. Run the ansible rename repos playbook, passing in the path to your yaml
|
||||||
|
file::
|
||||||
|
|
||||||
sudo invoke-rc.d gerrit stop
|
sudo ansible-playbook -f 10 /opt/system-config/production/playbooks/rename_repos.yaml -e repolist=ABSOLUTE_PATH_TO_VARS_FILE
|
||||||
|
|
||||||
#. Update the database on review.openstack.org::
|
|
||||||
|
|
||||||
sudo -H mysql reviewdb
|
|
||||||
|
|
||||||
update account_project_watches
|
|
||||||
set project_name = "openstack/NEW"
|
|
||||||
where project_name = "openstack/OLD";
|
|
||||||
|
|
||||||
update changes
|
|
||||||
set dest_project_name = "openstack/NEW", created_on = created_on
|
|
||||||
where dest_project_name = "openstack/OLD";
|
|
||||||
|
|
||||||
#. Move both the Git repository and the mirror on
|
|
||||||
review.openstack.org::
|
|
||||||
|
|
||||||
sudo mv ~gerrit2/review_site/git/openstack/{OLD,NEW}.git
|
|
||||||
sudo mv /opt/lib/git/openstack/{OLD,NEW}.git
|
|
||||||
|
|
||||||
#. Reindex the Lucene search index on review.openstack.org::
|
|
||||||
|
|
||||||
sudo su - gerrit2
|
|
||||||
cp -ax review_site/index index.backup.`date +%s`
|
|
||||||
java -jar review_site/bin/gerrit.war reindex -d /home/gerrit2/review_site --threads 4
|
|
||||||
|
|
||||||
#. Move the Git repository on git{01-08}.openstack.org (while the
|
|
||||||
Lucene reindex is running)::
|
|
||||||
|
|
||||||
sudo mv /var/lib/git/openstack/{OLD,NEW}.git
|
|
||||||
|
|
||||||
#. Rename the project or transfer ownership in GitHub (while the
|
|
||||||
Lucene reindex is running).
|
|
||||||
|
|
||||||
#. Start Gerrit on review.openstack.org::
|
|
||||||
|
|
||||||
sudo invoke-rc.d gerrit start
|
|
||||||
|
|
||||||
#. Start Zuul on zuul.openstack.org::
|
|
||||||
|
|
||||||
sudo invoke-rc.d zuul start
|
|
||||||
sudo bash gate.sh
|
|
||||||
sudo bash check.sh
|
|
||||||
|
|
||||||
#. Rename any associated groups whose names may have changed::
|
|
||||||
|
|
||||||
ssh -p 29418 review.openstack.org gerrit rename-group OLDNAME NEWNAME
|
|
||||||
|
|
||||||
#. If renamed/transfered projects using StoryBoard, update the db:
|
|
||||||
|
|
||||||
update projects set name='stackforge/NEW' where name='openstack/OLD';
|
|
||||||
|
|
||||||
#. Merge the prepared Puppet configuration change, removing the
|
#. Merge the prepared Puppet configuration change, removing the
|
||||||
original Jenkins jobs via the Jenkins WebUI later if needed.
|
original Jenkins jobs via the Jenkins WebUI later if needed.
|
||||||
@ -520,12 +475,6 @@ To rename a project:
|
|||||||
|
|
||||||
sudo crontab -u root -e
|
sudo crontab -u root -e
|
||||||
|
|
||||||
#. If this is an org move and the project name itself is not
|
|
||||||
changing, gate jobs may fail due to outdated remote URLs. Clear
|
|
||||||
the workspaces on persistent Jenkins slaves to mitigate this::
|
|
||||||
|
|
||||||
sudo ansible-playbook -f 10 /opt/system-config/production/playbooks/clean_workspaces.yaml --extra-vars "project=PROJECTNAME"
|
|
||||||
|
|
||||||
#. Submit a change that updates .gitreview with the new location of the
|
#. Submit a change that updates .gitreview with the new location of the
|
||||||
project.
|
project.
|
||||||
|
|
||||||
|
74
playbooks/rename_repos.yaml
Normal file
74
playbooks/rename_repos.yaml
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
---
|
||||||
|
- hosts: zuul.openstack.org
|
||||||
|
gather_facts: False
|
||||||
|
remote_user: root
|
||||||
|
sudo: yes
|
||||||
|
tasks:
|
||||||
|
- shell: kill -USR1 $(cat /var/run/zuul/zuul.pid)
|
||||||
|
- shell: rm -f /var/run/zuul/zuul.pid /var/run/zuul/zuul.lock
|
||||||
|
- hosts: review.openstack.org
|
||||||
|
gather_facts: False
|
||||||
|
remote_user: root
|
||||||
|
sudo: yes
|
||||||
|
tasks:
|
||||||
|
- shell: invoke-rc.d gerrit stop
|
||||||
|
- include_vars: "{{ repolist }}"
|
||||||
|
- shell: echo 'update account_project_watches set project_name = "{{ item.new }}" where project_name = "{{ item.old }}";' | mysql reviewdb
|
||||||
|
with_items: repos
|
||||||
|
- shell: echo 'update changes set dest_project_name = "{{ item.new }}", created_on = created_on where dest_project_name = "{{ item.old }}";' | mysql reviewdb
|
||||||
|
with_items: repos
|
||||||
|
- shell: mv {{ item[0] }}{{ item[1].old }} {{ item[0] }}{{ item[1].new }}
|
||||||
|
with_nested:
|
||||||
|
- [ '~gerrit2/review_site/git/', '/opt/lib/git' ]
|
||||||
|
- repos
|
||||||
|
- hosts: 'git0*'
|
||||||
|
gather_facts: False
|
||||||
|
tasks:
|
||||||
|
- include_vars: "{{ repolist }}"
|
||||||
|
- shell: mv {{ item[0] }}{{ item[1].old }} {{ item[0] }}{{ item[1].new }}
|
||||||
|
with_nested:
|
||||||
|
- [ '/var/lib/git' ]
|
||||||
|
- repos
|
||||||
|
- hosts: storyboard.openstack.org
|
||||||
|
gather_facts: False
|
||||||
|
remote_user: root
|
||||||
|
sudo: yes
|
||||||
|
tasks:
|
||||||
|
- include_vars: "{{ repolist }}"
|
||||||
|
- shell: echo 'update projects set name="{{ item.new }}" where name="{{ item.old }}";' | mysql storyboard
|
||||||
|
with_items: repos
|
||||||
|
- hosts: review.openstack.org
|
||||||
|
gather_facts: False
|
||||||
|
remote_user: gerrit2
|
||||||
|
sudo: yes
|
||||||
|
tasks:
|
||||||
|
- shell: cp -ax /home/gerrit2/review_site/index /home/gerrit2/index.backup.$(date +%s)
|
||||||
|
- shell: java -jar /home/gerrit2/review_site/bin/gerrit.war reindex -d /home/gerrit2/review_site
|
||||||
|
- hosts: review.openstack.org
|
||||||
|
gather_facts: False
|
||||||
|
remote_user: root
|
||||||
|
sudo: yes
|
||||||
|
tasks:
|
||||||
|
- shell: invoke-rc.d gerrit start
|
||||||
|
- hosts: zuul.openstack.org
|
||||||
|
gather_facts: False
|
||||||
|
remote_user: root
|
||||||
|
sudo: yes
|
||||||
|
tasks:
|
||||||
|
- shell: invoke-rc.d zuul start
|
||||||
|
- hosts: review.openstack.org
|
||||||
|
gather_facts: False
|
||||||
|
remote_user: gerrit2
|
||||||
|
sudo: yes
|
||||||
|
tasks:
|
||||||
|
- include_vars: "{{ repolist }}"
|
||||||
|
- shell: ssh -p 29418 review.openstack.org gerrit rename-group {{ item.old }} {{ item.new }}
|
||||||
|
with_items: "{{ gerrit_groups|default([]) }}"
|
||||||
|
- hosts: '*.slave.openstack.org'
|
||||||
|
remote_user: root
|
||||||
|
sudo: yes
|
||||||
|
gather_facts: False
|
||||||
|
tasks:
|
||||||
|
- include_vars: "{{ repolist }}"
|
||||||
|
- shell: 'rm -rf ~jenkins/workspace/*{{ item.old | basename }}*'
|
||||||
|
with_items: repos
|
Loading…
Reference in New Issue
Block a user