--- - name: Set architecture fact ansible.builtin.set_fact: _gitea_arch: "{{ {'x86_64': 'amd64', 'aarch64': 'arm64', 'armv7l': 'arm-6'}.get(ansible_architecture, 'amd64') }}" - name: Get Gitea release info from GitHub ansible.builtin.uri: url: >- {{ 'https://api.github.com/repos/go-gitea/gitea/releases/latest' if gitea_version == '' else 'https://api.github.com/repos/go-gitea/gitea/releases/tags/v' + gitea_version }} headers: Accept: "application/vnd.github.v3+json" return_content: true register: _gitea_release - name: Set version and download URL facts ansible.builtin.set_fact: _gitea_version_tag: "{{ _gitea_release.json.tag_name }}" _gitea_download_url: >- {{ _gitea_release.json.assets | selectattr('name', 'search', 'gitea-.*linux-' + _gitea_arch + '$') | map(attribute='browser_download_url') | first }} - name: Read installed version ansible.builtin.slurp: src: "{{ gitea_install_dir }}/.gitea_version" register: _gitea_installed_raw ignore_errors: true become: true - name: Set installed version fact ansible.builtin.set_fact: _gitea_installed_version: >- {{ (_gitea_installed_raw.content | b64decode | trim) if _gitea_installed_raw is not failed else '' }} - name: Install or upgrade Gitea binary when: _gitea_installed_version != _gitea_version_tag block: - name: Download Gitea binary ansible.builtin.get_url: url: "{{ _gitea_download_url }}" dest: "{{ gitea_install_dir }}/gitea" mode: '0755' owner: root group: root become: true - name: Write installed version file ansible.builtin.copy: content: "{{ _gitea_version_tag }}" dest: "{{ gitea_install_dir }}/.gitea_version" mode: '0644' become: true - name: Create Gitea home directory structure ansible.builtin.file: path: "{{ item }}" state: directory owner: "{{ gitea_user }}" group: "{{ gitea_group }}" mode: '0750' become: true loop: - "{{ gitea_home_dir }}" - "{{ gitea_home_dir }}/custom" - "{{ gitea_home_dir }}/data" - "{{ gitea_home_dir }}/log" - name: Create Gitea config directory ansible.builtin.file: path: "{{ gitea_config_dir }}" state: directory owner: root group: "{{ gitea_group }}" mode: '0770' become: true - name: Create Gitea systemd service ansible.builtin.copy: content: | [Unit] Description=Gitea Git Service After=syslog.target network.target [Service] RestartSec=2s Type=simple User={{ gitea_user }} Group={{ gitea_group }} WorkingDirectory={{ gitea_home_dir }} Environment=USER={{ gitea_user }} HOME=/home/{{ gitea_user }} GITEA_WORK_DIR={{ gitea_home_dir }} ExecStart={{ gitea_install_dir }}/gitea web --config {{ gitea_config_dir }}/app.ini Restart=always [Install] WantedBy=multi-user.target dest: /etc/systemd/system/gitea.service mode: '0644' become: true - name: Enable and start Gitea service ansible.builtin.systemd: name: gitea enabled: "{{ gitea_service_enabled }}" state: "{{ gitea_service_state }}" daemon_reload: true become: true