Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 10 additions & 19 deletions development/roles/foreman_development/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -85,25 +85,16 @@
- src: "{{ foreman_development_client_key }}"
dest: "{{ foreman_development_cert_dir }}/client_key.pem"

- name: Clone Foreman repository
ansible.builtin.git:
repo: "{{ foreman_development_git_repo }}"
dest: "{{ foreman_development_foreman_dir }}"
version: "{{ foreman_development_git_revision }}"
force: true
become: true
become_user: "{{ foreman_development_user }}"

- name: Add GitHub username as additional remote for Foreman
community.general.git_config:
name: "remote.{{ foreman_development_github_username }}.url"
scope: local
repo: "{{ foreman_development_foreman_dir }}"
value: "git@github.com:{{ foreman_development_github_username }}/foreman.git"
state: present
become: true
become_user: "{{ foreman_development_user }}"
when: foreman_development_github_username != ""
- name: Deploy Foreman git repository
ansible.builtin.include_role:
name: git_repository
vars:
git_repository_destination_dir: "{{ foreman_development_foreman_dir }}"
git_repository_user: "{{ foreman_development_user }}"
git_repository_repository_owner: "theforeman"
git_repository_repository_name: "foreman"
git_repository_revision: "{{ foreman_development_git_revision }}"
git_repository_secondary_remote_owner: "{{ foreman_development_github_username }}"

- name: Create database configuration
ansible.builtin.template:
Expand Down
28 changes: 9 additions & 19 deletions development/roles/foreman_development/tasks/plugin.yaml
Original file line number Diff line number Diff line change
@@ -1,25 +1,15 @@
---
- name: Clone plugin repository # noqa latest[git]
ansible.builtin.git:
repo: "{{ foreman_development_plugin_repo_url }}"
dest: "{{ foreman_development_deployment_dir }}/{{ foreman_development_plugin_name }}"
force: true
become: true
become_user: "{{ foreman_development_user }}"
when: foreman_development_plugin_manage_repo

- name: Add GitHub username as additional remote for plugin
community.general.git_config:
name: "remote.{{ foreman_development_github_username }}.url"
scope: local
repo: "{{ foreman_development_deployment_dir }}/{{ foreman_development_plugin_name }}"
value: "git@github.com:{{ foreman_development_github_username }}/{{ foreman_development_plugin_name }}.git"
state: present
become: true
become_user: "{{ foreman_development_user }}"
- name: Deploy plugin git repository
ansible.builtin.include_role:
name: git_repository
vars:
git_repository_destination_dir: "{{ foreman_development_deployment_dir }}/{{ foreman_development_plugin_name }}"
git_repository_user: "{{ foreman_development_user }}"
git_repository_repository_owner: "{{ foreman_development_plugin_org }}"
git_repository_repository_name: "{{ foreman_development_plugin_name }}"
git_repository_secondary_remote_owner: "{{ foreman_development_github_username }}"
when:
- foreman_development_plugin_manage_repo
- foreman_development_github_username != ""

- name: Create plugin settings file
ansible.builtin.template:
Expand Down
36 changes: 36 additions & 0 deletions development/roles/git_repository/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# git_repository

A role that clones a git repository from GitHub and optionally adds an additional remote to it.

Roughly corresponds to

```shell
$ su {{ git_repository_user }}

$ git clone https://github.com/{{ git_repository_repository_owner }}/{{ git_repository_repository_name }} \
--branch {{ git_repository_revision }} \
--remote {{ git repository_remote_name || "origin" }}
{{ git_repository_destination_dir }}

$ if {{ git_repository_secondary_remote_owner }}; then
cd {{ git_repository_destination_dir }}
git remote add \
{{ git_repository_secondary_remote_name || git_repository_secondary_remote_owner }} \
git@github.com:{{ git_repository_secondary_remote_owner }}/{{ git_repository_repository_name }}
fi
```

## Parameters

| Variable | Description | Required |
|----------|-------------|------|
| `git_repository_repository_owner` | The owner of the repository to clone from | Yes |
| `git_repository_repository_name` | The name of the repository to clone | Yes |
| `git_repository_revision` | The revision to clone the repository at | No, defaults to `HEAD` |
| `git_repository_remote_name` | The name of the remote the repository was cloned from | No, defaults to `origin` |
| `git_repository_destination_dir` | Path to the directory where the repository will be cloned to | Yes |
| `git_repository_secondary_remote_owner` | Name of the owner of the secondary remote to be added to the local clone | No, secondary remote will not be added if left blank |
| `git_repository_secondary_remote_name` | Name of the remote of the secondary repository | No, defaults to `{{ git_repository_secondary_remote_owner }}` |
| `git_repository_user` | The system user on the target host that the role will be applied as, this user ends up being the owner of the git checkout | Yes |

Generally it would be preferrable to avoid the need for `git_repository_user` by controlling the user with `become` and `become_user`, but those are not available in all contexts.
2 changes: 2 additions & 0 deletions development/roles/git_repository/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
git_repository_remote_name: "origin"
git_repository_revision: "HEAD"
20 changes: 20 additions & 0 deletions development/roles/git_repository/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
- name: Clone repository
ansible.builtin.git:
repo: "https://github.com/{{ git_repository_repository_owner }}/{{ git_repository_repository_name }}"
dest: "{{ git_repository_destination_dir }}"
version: "{{ git_repository_revision }}"
force: true
remote: "{{ git_repository_remote_name }}"
become: true
become_user: "{{ git_repository_user }}"

- name: Add GitHub username as additional remote
community.general.git_config:
name: "remote.{{ git_repository_secondary_remote_name | default(git_repository_secondary_remote_owner) }}.url"
scope: local
repo: "{{ git_repository_destination_dir }}"
value: "git@github.com:{{ git_repository_secondary_remote_owner }}/{{ git_repository_repository_name }}.git"
state: present
when: git_repository_secondary_remote_owner | default("") != ""
become: true
become_user: "{{ git_repository_user }}"
Loading