aboutsummaryrefslogtreecommitdiffstats
path: root/roles/cgit
diff options
context:
space:
mode:
Diffstat (limited to 'roles/cgit')
-rw-r--r--roles/cgit/defaults/main.yml27
-rw-r--r--roles/cgit/meta/main.yml4
-rw-r--r--roles/cgit/tasks/main.yml51
-rw-r--r--roles/cgit/templates/etc/cgitrc.j268
-rw-r--r--roles/cgit/vars/main.yml9
5 files changed, 159 insertions, 0 deletions
diff --git a/roles/cgit/defaults/main.yml b/roles/cgit/defaults/main.yml
new file mode 100644
index 0000000..72b8b8a
--- /dev/null
+++ b/roles/cgit/defaults/main.yml
@@ -0,0 +1,27 @@
+cgit_clone_prefixes:
+ - https://{{ ansible_fqdn }}
+ - ssh://{{ ansible_fqdn }}
+
+cgit_title: '{{ organization }} Git Repository'
+cgit_description: Source code of various {{ organization }} projects.
+
+cgit_cache_size: 1000
+cgit_user: git
+cgit_project_list: /var/www/git/projects.list
+cgit_scan_path: /var/www/git/repositories
+
+cgit_enable_http_clone: no
+
+cgit_repository_sort: name
+cgit_branch_sort: name
+
+# cgit_favicon: /path/to/favicon.ico
+# cgit_logo: /path/to/logo.png
+# cgit_css: /path/to/style.css
+# cgit_head_include: /path/to/head/include.html
+# cgit_header: /path/to/header.html
+
+cgit_about_html: >
+ This is a git repository for various projects hosted by {{ organization }}.
+ To request commit access or report technical issues,
+ <a href="mailto:root@{{ email_domain }}">contact the administrator</a>.
diff --git a/roles/cgit/meta/main.yml b/roles/cgit/meta/main.yml
new file mode 100644
index 0000000..29230f9
--- /dev/null
+++ b/roles/cgit/meta/main.yml
@@ -0,0 +1,4 @@
+dependencies:
+ - role: yum
+ yum_repositories: epel
+ tags: yum
diff --git a/roles/cgit/tasks/main.yml b/roles/cgit/tasks/main.yml
new file mode 100644
index 0000000..67f77f6
--- /dev/null
+++ b/roles/cgit/tasks/main.yml
@@ -0,0 +1,51 @@
+- name: install cgit
+ dnf:
+ name: '{{ cgit_packages }}'
+ state: present
+
+- name: generate cgit configuration
+ template:
+ src: etc/cgitrc.j2
+ dest: /etc/cgitrc
+
+- name: allow selinux mmap files
+ seboolean:
+ name: domain_can_mmap_files
+ state: yes
+ persistent: yes
+ tags: selinux
+
+- name: create cgit about file
+ copy:
+ content: '{{ cgit_about_html }}'
+ dest: '{{ cgit_static_dir }}/about.html'
+
+- name: copy custom css
+ copy:
+ src: '{{ cgit_css }}'
+ dest: '{{ cgit_static_dir }}/{{ cgit_css | basename }}'
+ when: cgit_css is defined
+
+- name: copy custom logo
+ copy:
+ src: '{{ cgit_logo }}'
+ dest: '{{ cgit_static_dir }}/{{ cgit_logo | basename }}'
+ when: cgit_logo is defined
+
+- name: copy custom favicon
+ copy:
+ src: '{{ cgit_favicon }}'
+ dest: '{{ cgit_static_dir }}/{{ cgit_favicon | basename }}'
+ when: cgit_favicon is defined
+
+- name: copy custom html head include
+ copy:
+ src: '{{ cgit_head_include }}'
+ dest: '{{ cgit_static_dir }}/{{ cgit_head_include | basename }}'
+ when: cgit_head_include is defined
+
+- name: copy custom html header
+ copy:
+ src: '{{ cgit_header }}'
+ dest: '{{ cgit_static_dir }}/{{ cgit_header | basename }}'
+ when: cgit_header is defined
diff --git a/roles/cgit/templates/etc/cgitrc.j2 b/roles/cgit/templates/etc/cgitrc.j2
new file mode 100644
index 0000000..f504896
--- /dev/null
+++ b/roles/cgit/templates/etc/cgitrc.j2
@@ -0,0 +1,68 @@
+cache-size={{ cgit_cache_size }}
+clone-prefix={{ cgit_clone_prefixes | join(' ') }}
+enable-http-clone={{ cgit_enable_http_clone | int }}
+enable-blame=1
+enable-commit-graph=1
+enable-log-filecount=1
+enable-log-linecount=1
+branch-sort={{ cgit_branch_sort }}
+
+# static assets
+favicon=/static/{{ cgit_favicon | default('favicon.ico') | basename }}
+logo=/static/{{ cgit_logo | default('cgit.png') | basename }}
+css=/static/{{ cgit_css | default('cgit.css') | basename }}
+{% if cgit_head_include is defined %}
+head-include={{ cgit_static_dir }}/{{ cgit_head_include | basename }}
+{% endif %}
+{% if cgit_header is defined %}
+header={{ cgit_static_dir }}/{{ cgit_header | basename }}
+{% endif %}
+
+max-stats=year
+root-title={{ cgit_title }}
+root-desc={{ cgit_description }}
+remove-suffix=1
+root-readme={{ cgit_static_dir }}/about.html
+repository-sort={{ cgit_repository_sort }}
+snapshots=tar.gz zip
+local-time=1
+
+mimetype.gif=image/gif
+mimetype.html=text/html
+mimetype.jpg=image/jpeg
+mimetype.jpeg=image/jpeg
+mimetype.pdf=application/pdf
+mimetype.png=image/png
+mimetype.svg=image/svg+xml
+
+source-filter=/usr/libexec/cgit/filters/syntax-highlighting.sh
+about-filter=/usr/libexec/cgit/filters/about-formatting.sh
+
+readme=:README.md
+readme=:readme.md
+readme=:README.mkd
+readme=:readme.mkd
+readme=:README.html
+readme=:readme.html
+readme=:README.htm
+readme=:readme.htm
+readme=:README.txt
+readme=:readme.txt
+readme=:README
+readme=:readme
+readme=:INSTALL.md
+readme=:install.md
+readme=:INSTALL.mkd
+readme=:install.mkd
+readme=:INSTALL.html
+readme=:install.html
+readme=:INSTALL.htm
+readme=:install.htm
+readme=:INSTALL.txt
+readme=:install.txt
+readme=:INSTALL
+readme=:install
+
+enable-git-config=1
+project-list={{ cgit_project_list }}
+scan-path={{ cgit_scan_path }}
diff --git a/roles/cgit/vars/main.yml b/roles/cgit/vars/main.yml
new file mode 100644
index 0000000..53e341d
--- /dev/null
+++ b/roles/cgit/vars/main.yml
@@ -0,0 +1,9 @@
+cgit_packages:
+ - cgit
+ - highlight
+ - python3-markdown
+ - python3-pygments
+
+cgit_static_dir: /usr/share/cgit
+cgit_cgi_script: /var/www/cgi-bin/cgit
+cgit_cache_dir: /var/cache/cgit