Initial commit
This commit is contained in:
148
gitea/package/install.sls
Normal file
148
gitea/package/install.sls
Normal file
@@ -0,0 +1,148 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=sls
|
||||
|
||||
{%- set tplroot = tpldir.split('/')[0] %}
|
||||
{%- from tplroot ~ "/map.jinja" import mapdata as gitea with context %}
|
||||
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
|
||||
|
||||
Gitea user/group is present:
|
||||
user.present:
|
||||
- name: {{ gitea.lookup.user }}
|
||||
- home: {{ gitea.lookup.paths.home }}
|
||||
- createhome: true # does not work on Windows/MacOS
|
||||
- shell: {{ gitea.lookup.shell }}
|
||||
- empty_password: true
|
||||
- fullname: Git Version Control
|
||||
- system: true
|
||||
- usergroup: {{ gitea.lookup.group == gitea.lookup.user }}
|
||||
{%- if gitea.lookup.group != gitea.lookup.user %}
|
||||
- gid: {{ gitea.lookup.group }}
|
||||
- require:
|
||||
- group: {{ gitea.lookup.group }}
|
||||
group.present:
|
||||
- name: {{ gitea.lookup.group }}
|
||||
- system: true
|
||||
{%- endif %}
|
||||
|
||||
Requirements for managing Gitea are fulfilled:
|
||||
pkg.installed:
|
||||
- pkgs: {{ gitea.lookup.requirements | json }}
|
||||
# needed to avoid exception when running gpg.get_key in unless below
|
||||
cmd.run:
|
||||
- name: gpg --list-keys
|
||||
- unless:
|
||||
- test -d "${GNUPG_HOME:-$HOME/.gnupg}"
|
||||
# the above does not work somehow
|
||||
- test -d /root/.gnupg
|
||||
|
||||
Gitea is available:
|
||||
file.managed:
|
||||
- names:
|
||||
- /tmp/gitea-{{ gitea.version }}:
|
||||
- source: {{ gitea.lookup.pkg.source.format(version=gitea.version, arch=gitea.lookup.arch) }}
|
||||
- source_hash: {{ gitea.lookup.pkg.source_hash.format(version=gitea.version, arch=gitea.lookup.arch) }}
|
||||
- /tmp/gitea-{{ gitea.version }}.asc:
|
||||
- source: {{ gitea.lookup.pkg.sig.format(version=gitea.version, arch=gitea.lookup.arch) }}
|
||||
- skip_verify: true
|
||||
- user: {{ gitea.lookup.user }}
|
||||
- group: {{ gitea.lookup.group }}
|
||||
|
||||
Gitea GPG key is present (received from keyserver):
|
||||
gpg.present:
|
||||
- name: {{ gitea.lookup.gpg.key }}
|
||||
- keyserver: {{ gitea.lookup.gpg.keyserver }}
|
||||
|
||||
Gitea GPG key is present (fallback):
|
||||
file.managed:
|
||||
- name: /tmp/gitea-key.asc
|
||||
- source: salt://gitea/files/default/key.asc
|
||||
- onfail:
|
||||
- Gitea GPG key is present (received from keyserver)
|
||||
module.run:
|
||||
- gpg.import_key:
|
||||
- filename: /tmp/gitea-key.asc
|
||||
- onfail:
|
||||
- Gitea GPG key is present (received from keyserver)
|
||||
- require:
|
||||
- file: /tmp/gitea-key.asc
|
||||
|
||||
Gitea is verified:
|
||||
module.run:
|
||||
- gpg.verify:
|
||||
- filename: /tmp/gitea-{{ gitea.version }}
|
||||
- signature: /tmp/gitea-{{ gitea.version }}.asc
|
||||
- require:
|
||||
- Gitea is available
|
||||
- require_any:
|
||||
- Gitea GPG key is present (received from keyserver)
|
||||
- Gitea GPG key is present (fallback)
|
||||
|
||||
Gitea binary is absent if verification failed:
|
||||
file.absent:
|
||||
- name: /tmp/gitea-{{ gitea.version }}
|
||||
- onfail:
|
||||
- Gitea is verified
|
||||
|
||||
Gitea directories are setup:
|
||||
file.directory:
|
||||
- names:
|
||||
{%- for p in ['conf', 'work', 'custom', 'data', 'log', 'repos'] %}
|
||||
- {{ gitea.lookup.paths[p] }}
|
||||
{%- endfor %}
|
||||
- makedirs: true
|
||||
- user: {{ gitea.lookup.user }}
|
||||
- group: {{ gitea.lookup.group }}
|
||||
# This prevents the web-installer from functioning, would need 0770 on /etc/gitea.
|
||||
- mode: '0750'
|
||||
|
||||
Gitea binary is installed:
|
||||
file.copy:
|
||||
- name: {{ gitea.lookup.paths.bin | path_join('gitea') }}
|
||||
- source: /tmp/gitea-{{ gitea.version }}
|
||||
# in case the version changed, overwrite previous binary
|
||||
- force: true
|
||||
- makedirs: true
|
||||
- user: {{ gitea.lookup.user }}
|
||||
- group: {{ gitea.lookup.group }}
|
||||
- mode: '0755'
|
||||
# only run if a new version was downloaded
|
||||
- onchanges:
|
||||
- Gitea is available
|
||||
- require:
|
||||
- Gitea is verified
|
||||
|
||||
Gitea service unit is available:
|
||||
file.managed:
|
||||
- name: {{ gitea.lookup.service.unit.format(name=gitea.lookup.service.name) }}
|
||||
- source: {{ files_switch(
|
||||
['gitea.service.j2'],
|
||||
lookup='Gitea service unit is available',
|
||||
) }}
|
||||
- template: jinja
|
||||
- mode: '0644'
|
||||
- user: root
|
||||
- group: {{ gitea.lookup.rootgroup }}
|
||||
- makedirs: true
|
||||
- context: {{ {'gitea': gitea} | json }}
|
||||
- require:
|
||||
- Gitea binary is installed
|
||||
{%- if 'systemctl' | which %}
|
||||
# this executes systemctl daemon-reload
|
||||
module.run:
|
||||
- service.systemctl_reload: []
|
||||
- onchanges:
|
||||
- file: {{ gitea.lookup.service.unit.format(name=gitea.lookup.service.name) }}
|
||||
{%- endif %}
|
||||
|
||||
Gitea setup is finished:
|
||||
test.show_notification:
|
||||
- text: >-
|
||||
Yay, Gitea setup is finished.
|
||||
The web installer will not work, so make sure you have specified
|
||||
at least the database configuration. The configuration will be installed
|
||||
after this message.
|
||||
- require:
|
||||
- Gitea user/group is present
|
||||
- Requirements for managing Gitea are fulfilled
|
||||
- Gitea directories are setup
|
||||
- Gitea binary is installed
|
||||
Reference in New Issue
Block a user