From aaaee3066a260eeec67b6978aa634c694dab763e Mon Sep 17 00:00:00 2001 From: Gabriel Radureau Date: Sun, 18 Aug 2024 11:34:37 +0200 Subject: [PATCH] new gitea_sync role --- .../arcodange/factory/playbooks/03_cicd.yml | 5 ++- .../roles/gitea_sync/defaults/main.yml | 5 +++ .../factory/roles/gitea_sync/tasks/main.yml | 44 +++++++++++++++++++ .../factory/roles/gitea_sync/vars/main.yml | 5 +++ 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 ansible/arcodange/factory/roles/gitea_sync/defaults/main.yml create mode 100644 ansible/arcodange/factory/roles/gitea_sync/tasks/main.yml create mode 100644 ansible/arcodange/factory/roles/gitea_sync/vars/main.yml diff --git a/ansible/arcodange/factory/playbooks/03_cicd.yml b/ansible/arcodange/factory/playbooks/03_cicd.yml index 544cded..f4ba3c0 100644 --- a/ansible/arcodange/factory/playbooks/03_cicd.yml +++ b/ansible/arcodange/factory/playbooks/03_cicd.yml @@ -146,4 +146,7 @@ include_role: name: arcodange.factory.gitea_repo vars: - gitea_repo_name: factory \ No newline at end of file + gitea_repo_name: factory + - name: Sync other repos + include_role: + name: arcodange.factory.gitea_sync diff --git a/ansible/arcodange/factory/roles/gitea_sync/defaults/main.yml b/ansible/arcodange/factory/roles/gitea_sync/defaults/main.yml new file mode 100644 index 0000000..507389f --- /dev/null +++ b/ansible/arcodange/factory/roles/gitea_sync/defaults/main.yml @@ -0,0 +1,5 @@ +gitea_username: arcodange +gitea_organization: arcodange-org + +# URL de base du serveur Gitea +gitea_base_url: http://{{ groups.gitea[0] }}:3000 \ No newline at end of file diff --git a/ansible/arcodange/factory/roles/gitea_sync/tasks/main.yml b/ansible/arcodange/factory/roles/gitea_sync/tasks/main.yml new file mode 100644 index 0000000..b8e15ca --- /dev/null +++ b/ansible/arcodange/factory/roles/gitea_sync/tasks/main.yml @@ -0,0 +1,44 @@ +- name: Lister les dépôts de l'organisation GitHub + uri: + url: "https://api.github.com/orgs/{{ github_organization }}/repos" + method: GET + headers: + Authorization: "token {{ github_api_token }}" + status_code: 200 + register: github_repos + +- name: Lister les dépôts du groupe GitLab + uri: + url: "https://gitlab.com/api/v4/groups/{{ gitlab_root_group }}/projects" + method: GET + headers: + Authorization: "Bearer {{ gitlab_api_token }}" + status_code: 200 + register: gitlab_repos + +- name: Generate Gitea Token + include_role: + name: arcodange.factory.gitea_token + +- name: Lister les dépôts de l'organisation Gitea + uri: + url: "{{ gitea_base_url }}/api/v1/orgs/{{ gitea_organization }}/repos" + method: GET + headers: + Authorization: "token {{ gitea_api_token }}" + status_code: 200 + register: gitea_repos + +- name: Synchroniser + include_role: + name: arcodange.factory.gitea_repo + vars: + github_repo_names: "{{ github_repos.json | map(attribute='name') | list }}" + gitlab_repo_names: "{{ gitlab_repos.json | map(attribute='name') | list }}" + gitea_repo_names: "{{ gitea_repos.json | map(attribute='name') | list }}" + all_repos: "{{ github_repo_names | union(gitlab_repo_names) | union(gitea_repo_names) }}" + repos_common_to_all: "{{ github_repo_names | intersect(gitlab_repo_names) | intersect(gitea_repo_names) }}" + repos_incomplete: "{{ all_repos | difference(repos_common_to_all) }}" + loop: "{{ repos_incomplete }}" + loop_control: + loop_var: gitea_repo_name diff --git a/ansible/arcodange/factory/roles/gitea_sync/vars/main.yml b/ansible/arcodange/factory/roles/gitea_sync/vars/main.yml new file mode 100644 index 0000000..8b44b9b --- /dev/null +++ b/ansible/arcodange/factory/roles/gitea_sync/vars/main.yml @@ -0,0 +1,5 @@ +github_api_token: '{{ hostvars[groups.gitea[0]].gitea_vault.github_api_token }}' +gitlab_api_token: '{{ hostvars[groups.gitea[0]].gitea_vault.gitlab_api_token }}' + +github_organization: '{{ gitea_organization }}' +gitlab_root_group: '{{ gitea_organization }}' \ No newline at end of file