- name: ensure required packages for forgejo is present ansible.builtin.apt: pkg: - git - rsync state: present # using generous time because unattended upgrades will keep packages updated. cache_valid_time: 604800 - name: check if Forgejo is installed shell: /usr/local/bin/forgejo --version | awk '{print $3}' | sed 's/\+/-/g' register: forgejo_found_version changed_when: false - name: download forgejo (arm) get_url: url: "https://codeberg.org/forgejo/forgejo/releases/download/v{{ forgejo_version }}/forgejo-{{ forgejo_version }}-linux-arm64" dest: /usr/local/bin/forgejo checksum: "{{ forgejo_checksum_arm64 }}" when: - ansible_architecture == 'aarch64' - forgejo_version != forgejo_found_version.stdout notify: restart forgejo - name: download forgejo (x86_64) get_url: url: "https://codeberg.org/forgejo/forgejo/releases/download/v{{ forgejo_version }}/forgejo-{{ forgejo_version }}-linux-amd64" dest: /usr/local/bin/forgejo checksum: "{{ forgejo_checksum_amd64 }}" when: - ansible_architecture == 'x86_64' - forgejo_version != forgejo_found_version.stdout notify: restart forgejo - name: set correct rights on forgejo executable file: path: /usr/local/bin/forgejo mode: '0755' - name: create a git user responsible for forgejo user: comment: "user responsible for forgejo" system: yes password: "!" shell: /bin/bash state: present name: git create_home: yes - name: create data folders required by forgejo file: path: '{{ item }}' state: directory owner: git group: git mode: '0750' loop: - /var/lib/forgejo - name: create configuration folder required by forgejo file: path: '{{ item }}' state: directory mode: '0770' owner: root group: git loop: - /etc/forgejo - name: Load Forgejo backup ansible.builtin.import_tasks: load-backups.yml when: forgejo_load_backup is defined - name: upload forgejo configuration notify: restart forgejo template: src: app.ini.j2 dest: /etc/forgejo/app.ini mode: '0400' owner: git group: git - name: upload custom adjustments notify: restart forgejo ansible.posix.synchronize: recursive: true src: custom dest: /var/lib/forgejo rsync_opts: - --chown=git:git - --chmod=755 - name: upload systemd unit file notify: restart forgejo copy: src: forgejo.service dest: /etc/systemd/system/forgejo.service - name: upload forgejo.sh helper script ansible.builtin.copy: src: forgejo.sh dest: /usr/local/bin/forgejo.sh mode: '0755' owner: root group: root