Use the gitea api in the gitea renaming playbook

Previously we were hacking the gitea web ui to transfer repo ownership
and to rename repos within an org. We believe this was necessary because
there was no REST API ability to do this. Now we have the ability to do
this via the REST API and in addition a new Gitea release will break our
web ui hijacking.

Update the project renaming playbook to use the REST API as it is
simpler to use and should be more reliable over time as it is versioned.

Change-Id: Idd8326a4891df6bdd47422e2a73880aa053380f5
This commit is contained in:
Clark Boylan 2021-08-03 08:47:16 -07:00
parent 65cb02a016
commit 0d36fac5fe
2 changed files with 9 additions and 25 deletions

View File

@ -36,33 +36,28 @@
- name: "Transfer repo ownership from {{ oldorg }}/{{ oldproj }} to {{ neworg }}/{{ oldproj }}"
when: "oldorg != neworg"
uri:
url: "{{ gitea_url }}/{{ oldorg }}/{{ oldproj }}/settings"
url: "{{ gitea_url }}/api/v1/repos/{{ oldorg }}/{{ oldproj }}/transfer"
validate_certs: false
user: root
password: "{{ gitea_root_password }}"
force_basic_auth: true
status_code: 302
status_code: 202
method: POST
body_format: form-urlencoded
body_format: json
body:
_csrf: "{{ gitea_token }}"
action: transfer
repo_name: "{{ oldproj }}"
new_owner_name: "{{ neworg }}"
new_owner: "{{ neworg }}"
- name: "Update repo name from {{ neworg }}/{{ oldproj }} to {{ neworg }}/{{ newproj }}"
when: "oldproj != newproj"
uri:
url: "{{ gitea_url }}/{{ neworg }}/{{ oldproj }}/settings"
url: "{{ gitea_url }}/api/v1/repos/{{ neworg }}/{{ oldproj }}"
validate_certs: false
user: root
password: "{{ gitea_root_password }}"
force_basic_auth: true
status_code: 302
method: POST
body_format: form-urlencoded
status_code: 200
method: PATCH
body_format: json
body:
_csrf: "{{ gitea_token }}"
action: update
repo_name: "{{ newproj }}"
name: "{{ newproj }}"
description: "{{ gitea_repo.json.description }}"
website: "{{ gitea_repo.json.website }}"

View File

@ -33,17 +33,6 @@
gitea_url: https://localhost:3000
tasks:
- include_vars: "{{ repolist }}"
- name: Get a CSRF token
uri:
url: "{{ gitea_url }}/"
validate_certs: false
user: root
password: "{{ gitea_root_password }}"
force_basic_auth: true
register: gitea_token
- name: Parse CSRF taken
set_fact:
gitea_token: "{{ gitea_token.cookies._csrf|regex_replace('%3D','=') }}"
- name: Move gitea repo
include_tasks: gitea-rename-tasks.yaml
loop: "{{ repos }}"