summaryrefslogtreecommitdiff
path: root/roles/cgit
diff options
context:
space:
mode:
Diffstat (limited to 'roles/cgit')
-rw-r--r--roles/cgit/tasks/main.yml69
-rw-r--r--roles/cgit/templates/cgitrc9
-rw-r--r--roles/cgit/templates/nginx/git.joeac.net.conf22
3 files changed, 100 insertions, 0 deletions
diff --git a/roles/cgit/tasks/main.yml b/roles/cgit/tasks/main.yml
new file mode 100644
index 0000000..d9f96bc
--- /dev/null
+++ b/roles/cgit/tasks/main.yml
@@ -0,0 +1,69 @@
+- name: Install cgit
+ community.general.apk:
+ name: cgit
+
+- name: Add git readonly group
+ ansible.builtin.group:
+ name: "{{ git_readonly_group }}"
+
+- name: Configure read-write git user
+ ansible.builtin.user:
+ name: "{{ git_readwrite_user }}"
+ group: "{{ git_readwrite_group }}"
+ groups:
+ - "{{ git_readonly_group }}"
+ append: true
+
+- name: Create git directory in attached storage
+ ansible.builtin.file:
+ path: /media/seagate/git
+ state: directory
+ owner: "{{ git_readwrite_user }}"
+ group: "{{ git_readonly_group }}"
+ mode: "750"
+
+- name: Set owners recursively in git directory in attached storage
+ ansible.builtin.file:
+ path: /media/seagate/git
+ state: directory
+ owner: "{{ git_readwrite_user }}"
+ group: "{{ git_readonly_group }}"
+ recurse: true
+
+- name: Symlink git directory to storage medium
+ ansible.builtin.file:
+ src: /media/seagate/git
+ dest: "{{ git_directory }}"
+ owner: "{{ git_readwrite_user }}"
+ group: "{{ git_readonly_group }}"
+ state: link
+ mode: "750"
+
+- name: Install git.joeac.net nginx site config
+ register: cgit_nginx_site
+ vars:
+ fcgiwrap_socket: /run/fcgiwrap.sock
+ ansible.builtin.template:
+ src: nginx/git.joeac.net.conf
+ dest: /etc/nginx/http.d/git.joeac.net.conf
+ owner: "{{ git_readwrite_user }}"
+ group: "{{ git_readwrite_group }}"
+ mode: "660"
+
+- name: Create git.joeac.net nginx log directory
+ ansible.builtin.file:
+ path: /var/log/nginx/git.joeac.net
+ state: directory
+
+- name: Restart nginx daemon and configure to start on boot
+ when: cgit_nginx_site is changed
+ ansible.builtin.service:
+ name: nginx
+ enabled: true
+ state: restarted
+
+- name: Install cgit config
+ ansible.builtin.template:
+ src: cgitrc
+ dest: /etc/cgitrc
+ mode: "+r"
diff --git a/roles/cgit/templates/cgitrc b/roles/cgit/templates/cgitrc
new file mode 100644
index 0000000..64ba6d4
--- /dev/null
+++ b/roles/cgit/templates/cgitrc
@@ -0,0 +1,9 @@
+root-title=joeac's git repositories
+root-desc=
+strict-export={{ git_export_ok_file }}
+scan-path={{ git_directory }}
+virtual-root=/
+about-filter=/usr/lib/cgit/filters/about-formatting.sh
+readme=:README.md
+snapshots=tar.gz zip
+clone-prefix=git://git.joeac.net https://git.joeac.net
diff --git a/roles/cgit/templates/nginx/git.joeac.net.conf b/roles/cgit/templates/nginx/git.joeac.net.conf
new file mode 100644
index 0000000..704665e
--- /dev/null
+++ b/roles/cgit/templates/nginx/git.joeac.net.conf
@@ -0,0 +1,22 @@
+server {
+ listen {{ services.git.port }};
+ listen [::]:{{ services.git.port }};
+ server_name {{ ( subdomains | selectattr('service', 'eq', 'git') | first ).full_domain }};
+
+ root /usr/share/webapps/cgit;
+ try_files $uri @cgit;
+
+ access_log /var/log/nginx/git.joeac.net/access.log;
+ error_log /var/log/nginx/git.joeac.net/error.log;
+
+ location @cgit {
+ include fastcgi_params;
+ fastcgi_param SCRIPT_FILENAME /usr/share/webapps/cgit/cgit.cgi;
+ fastcgi_param PATH_INFO $uri;
+ fastcgi_param QUERY_STRING $args;
+ fastcgi_param HTTP_HOST $server_name;
+ fastcgi_pass unix:{{ fcgiwrap_socket }};
+ }
+
+ include {{ git_nginx_include_directory }}/*.conf;
+}