# Note, if both the org and project names change, this script will # perform the org transfer first, followed by the project name change. # If there is already a project in the new org with the old name, it # will fail. - name: "Parse repo names for {{ repo.old }} -> {{ repo.new }}" set_fact: oldorg: "{{ repo.old.split('/')[0] }}" neworg: "{{ repo.new.split('/')[0] }}" oldproj: "{{ repo.old.split('/')[1] }}" newproj: "{{ repo.new.split('/')[1] }}" - name: Get Gitea org list # We assume that all the orgs we are interested in are owned by root uri: url: "{{ gitea_url }}/api/v1/user/orgs" user: root password: "{{ gitea_root_password }}" force_basic_auth: true validate_certs: false status_code: 200 register: gitea_org_list - name: Parse Gitea org list set_fact: gitea_orgs: "{{ gitea_org_list.json | map(attribute='username') | list }}" - name: "Make new gitea org" include_tasks: gitea-rename-setup-org.yaml vars: org: "{{ neworg }}" - name: "Get repo {{ oldorg }}/{{ oldproj }}" uri: url: "{{ gitea_url }}/api/v1/repos/{{ oldorg }}/{{ oldproj }}" validate_certs: false user: root password: "{{ gitea_root_password }}" force_basic_auth: true register: gitea_repo - name: "Transfer repo ownership from {{ oldorg }}/{{ oldproj }} to {{ neworg }}/{{ oldproj }}" when: "oldorg != neworg" uri: url: "{{ gitea_url }}/api/v1/repos/{{ oldorg }}/{{ oldproj }}/transfer" validate_certs: false user: root password: "{{ gitea_root_password }}" force_basic_auth: true status_code: 202 method: POST body_format: json body: new_owner: "{{ neworg }}" - name: "Update repo name from {{ neworg }}/{{ oldproj }} to {{ neworg }}/{{ newproj }}" when: "oldproj != newproj" uri: url: "{{ gitea_url }}/api/v1/repos/{{ neworg }}/{{ oldproj }}" validate_certs: false user: root password: "{{ gitea_root_password }}" force_basic_auth: true status_code: 200 method: PATCH body_format: json body: name: "{{ newproj }}" description: "{{ gitea_repo.json.description }}" website: "{{ gitea_repo.json.website }}"