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

View File

@ -33,17 +33,6 @@
gitea_url: https://localhost:3000 gitea_url: https://localhost:3000
tasks: tasks:
- include_vars: "{{ repolist }}" - 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 - name: Move gitea repo
include_tasks: gitea-rename-tasks.yaml include_tasks: gitea-rename-tasks.yaml
loop: "{{ repos }}" loop: "{{ repos }}"