diff --git a/.github/galaxy.svg b/.github/galaxy.svg deleted file mode 100644 index 5e5c1f3..0000000 --- a/.github/galaxy.svg +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.github/license.svg b/.github/license.svg deleted file mode 100644 index c711475..0000000 --- a/.github/license.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.github/workflows/ansible-linting-check.yml b/.github/workflows/ansible-linting-check.yml index 5c55ca6..09587b6 100644 --- a/.github/workflows/ansible-linting-check.yml +++ b/.github/workflows/ansible-linting-check.yml @@ -11,13 +11,13 @@ jobs: steps: - name: 'checkout git repo' - uses: actions/checkout@v3 + uses: actions/checkout@v4.1.1 with: - lfs: true - submodules: false fetch-depth: 0 - - name: 'Lint Ansible Playbook' - uses: ansible/ansible-lint-action@v6 + - name: Run ansible-lint + uses: ansible-actions/ansible-lint-action@v1.0.2 with: - path: "." + target: "./" + collections_yml: 'requirements.yml' + python_dependency: 'jmespath' diff --git a/.github/workflows/galaxy.yml b/.github/workflows/galaxy.yml index 39fa2be..1fb3acd 100644 --- a/.github/workflows/galaxy.yml +++ b/.github/workflows/galaxy.yml @@ -1,22 +1,25 @@ --- -name: Galaxy release +name: Galaxy-NG Roles Import # yamllint disable-line rule:truthy on: - push: - branches: ['main'] release: types: ['created'] jobs: build: + name: Galaxy Role Importer runs-on: ubuntu-latest - steps: - - name: 'checkout git repo' - uses: actions/checkout@v3 - - name: 'release on galaxy' - uses: robertdebock/galaxy-action@1.2.1 + steps: + - name: 'Checkout git repo' + uses: actions/checkout@v4 + with: + submodules: true + fetch-depth: 0 + + - name: 'Release on galaxy' + uses: ansible-actions/ansible-galaxy-action@v1.2.0 with: galaxy_api_key: ${{ secrets.galaxy_api_key }} - git_branch: 'main' + galaxy_version: 'main' diff --git a/.github/workflows/j2lint-check.yml b/.github/workflows/j2lint-check.yml new file mode 100644 index 0000000..5037de5 --- /dev/null +++ b/.github/workflows/j2lint-check.yml @@ -0,0 +1,22 @@ +--- +name: Jinja2 Linting check + +# yamllint disable-line rule:truthy +on: [push, pull_request] + +jobs: + build: + name: Jinja2 Linting + runs-on: ubuntu-latest + + steps: + - name: 'checkout git repo' + uses: actions/checkout@v4 + with: + submodules: true + fetch-depth: 0 + + - name: Run j2lint + uses: ansible-actions/j2lint-action@v0.0.1 + with: + target: "./" diff --git a/.github/workflows/yamllint-check.yml b/.github/workflows/yamllint-check.yml new file mode 100644 index 0000000..751e992 --- /dev/null +++ b/.github/workflows/yamllint-check.yml @@ -0,0 +1,22 @@ +--- +name: Yamllint check + +# yamllint disable-line rule:truthy +on: [push, pull_request] + +jobs: + build: + name: Yamllint + runs-on: ubuntu-latest + + steps: + - name: 'checkout git repo' + uses: actions/checkout@v4 + with: + submodules: true + fetch-depth: 0 + + - name: Run yamllint + uses: ansible-actions/yamllint-action@v0.0.1 + with: + target: "./" diff --git a/.github/workflows/yamllint.yaml b/.github/workflows/yamllint.yaml deleted file mode 100644 index 361b111..0000000 --- a/.github/workflows/yamllint.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -name: 'Yamllint GitHub Actions' - -# yamllint disable-line rule:truthy -on: - push: - branches: '*' - pull_request: - branches: '*' - -jobs: - yamllint: - name: 'Yamllint' - runs-on: ubuntu-latest - steps: - - name: 'checkout git repo' - uses: actions/checkout@v3 - - - name: 'Yamllint' - uses: karancode/yamllint-github-action@v2.1.1 - with: - yamllint_file_or_dir: '.' - yamllint_config_filepath: './.yamllint' diff --git a/README.md b/README.md index 1bfd033..5abe886 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Ansible Galaxy](https://ansible.l3d.space/svg/l3d.gitea.svg)](https://galaxy.ansible.com/l3d/gitea) +[![Ansible Galaxy](https://ansible.l3d.space/svg/l3d.gitea.svg)](https://galaxy.ansible.com/ui/standalone/roles/roles-ansible/gitea/) [![BSD-3 Clause](https://ansible.l3d.space/svg/l3d.gitea_license.svg)](LICENSE) [![Maintainance](https://ansible.l3d.space/svg/l3d.gitea_maintainance.svg)](https://ansible.l3d.space/#l3d.gitea) @@ -10,12 +10,18 @@ This role installs and manages [gitea](https://gitea.io) or [forgejo](https://fo [Source code forgejo](https://codeberg.org/forgejo/forgejo). This role is also Part of the Ansible-Collection [l3d.git](https://galaxy.ansible.com/l3d/git). [![l3d.git](https://ansible.l3d.space/svg/l3d.git_ansible-collection_collection.svg)](https://github.com/roles-ansible/ansible_collection_git.git). +## Mirrors +The role is mirrored to: ++ Github: [github.com/roles-ansible/ansible_role_gitea](https://github.com/roles-ansible/ansible_role_gitea.git) ++ Gitea: [git.l3d.ch/ansible/ansible_role_gitea](https://git.l3d.ch/ansible/ansible_role_gitea.git) +More about it at [ansible.l3d.space](https://ansible.l3d.space/#l3d.gitea) + ## Sample Usage in a playbook The following code has been tested with the latest Debian Stable, it should work on Ubuntu and RedHat as well. ```yaml -# ansible-galaxy install l3d.gitea +# ansible-galaxy role install l3d.gitea - name: "Install gitea" hosts: git.example.com @@ -33,7 +39,7 @@ The following code has been tested with the latest Debian Stable, it should work Variables ----------- -Here is a deeper insight into the variables of this gitea role. For the exact function of some variables and the possibility to add more options we recommend a look at this [config cheat sheet](https://docs.gitea.io/en-us/config-cheat-sheet/). +Here is a deeper insight into the variables of this gitea role. For the exact function of some variables and the possibility to add more options we recommend a look at this [config cheat sheet](https://docs.gitea.com/administration/config-cheat-sheet). ### Chose between gitea and forgejo There is a fork of gitea called forgejo. Why? Read the [forgejo FAQ](https://forgejo.org/faq/). @@ -46,6 +52,11 @@ You have the option to choose between [gitea](https://gitea.io) and [forgejo](ht To determine which gitea version to install, you can choose between two variants. Either you define exactly which release you install. Or you use the option ``latest`` to always install the latest release from the [gitea releases](https://github.com/go-gitea/gitea/releases/latest). +### Forgejo update mechanism +It is advisable to define exactly which Forgejo release you want to install. See [Forgejo releases](https://forgejo.org/releases/) for the correct value to use in `gitea_version` eg `v1.21.5`. + +This is because the Forgejo project maintains both `stable` and `old stable` releases and the `latest` tag will refer to the *most recent release* regardless of whether it is `stable` or `old stable`. This can lead to a situation where `latest` refers to an *older release* than the version you have installed. + ### gitea update | variable name | default value | description | | ------------- | ------------- | ----------- | @@ -71,7 +82,7 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_shell` | `/bin/false` | UNIX shell used by gitea. Set it to `/bin/bash` if you don't use the gitea built-in ssh server. | | `gitea_systemd_cap_net_bind_service` | `false` | Adds `AmbientCapabilities=CAP_NET_BIND_SERVICE` to systemd service file | -### Overall ([DEFAULT](https://docs.gitea.io/en-us/config-cheat-sheet/#overall-default)) +### Overall ([DEFAULT](https://docs.gitea.com/administration/config-cheat-sheet#overall-default)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_app_name` | `Gitea` | Displayed application name | @@ -79,7 +90,7 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_run_mode`| `prod`| Application run mode, affects performance and debugging. Either “dev”, “prod” or “test”. | | `gitea_fqdn` | `localhost` | Base FQDN for the installation, used as default for other variables. Set it to the FQDN where you can reach your gitea server | -### Repository ([repository](https://docs.gitea.io/en-us/config-cheat-sheet/#repository-repository)) +### Repository ([repository](https://docs.gitea.com/administration/config-cheat-sheet#repository-repository)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_default_branch` | `main` | Default branch name of all repositories. | @@ -95,14 +106,14 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_repository_root` | `{{ gitea_home }}/repos` | Root path for storing all repository data. It must be an absolute path. | | `gitea_repository_extra_config` | | you can use this variable to pass additional config parameters in the `[repository]` section of the config. | -### Repository - Upload ([repository.upload](https://docs.gitea.io/en-us/administration/config-cheat-sheet/#repository---upload-repositoryupload)) +### Repository - Upload ([repository.upload](https://docs.gitea.io/en-us/administration/config-cheat-sheet#repository---upload-repositoryupload)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_repository_upload_enabled` | `true` | Whether repository file uploads are enabled | | `gitea_repository_upload_max_size` | `4` | Max size of each file in megabytes. | | `gitea_repository_upload_extra_config` | | you can use this variable to pass additional config parameters in the `[repository.upload]` section of the config. | -### Repository - Signing ([repository.signing](https://docs.gitea.io/en-us/config-cheat-sheet/#repository---signing-repositorysigning)) +### Repository - Signing ([repository.signing](https://docs.gitea.com/administration/config-cheat-sheet#repository---signing-repositorysigning)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_enable_repo_signing_options` | `false` | Allow to configure repo signing options | @@ -116,7 +127,7 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_repo_merges` | *(see defaults)* | Sign merges. | | `gitea_enable_repo_signing_extra` | | you can use this variable to pass additional config parameters in the `[repository.signing]` section of the config. | -### CORS ([cors](https://docs.gitea.io/en-us/config-cheat-sheet/#cors-cors)) +### CORS ([cors](https://docs.gitea.com/administration/config-cheat-sheet#cors-cors)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_enable_cors` | `false` | enable cors headers (disabled by default) | @@ -130,7 +141,7 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_cors_x_frame_options` | `SAMEORIGIN` | Set the `X-Frame-Options` header value. | | `gitea_cors_extra` | | you can use this variable to pass additional config parameters in the `[cors]` section of the config. | -### UI ([ui](https://docs.gitea.io/en-us/config-cheat-sheet/#ui-ui)) +### UI ([ui](https://docs.gitea.com/administration/config-cheat-sheet#ui-ui)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_show_user_email` | `false` | Do you want to display email addresses ? (true/false) | @@ -138,7 +149,7 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_themes` | `auto,gitea,arc-green` | List of enabled themes | | `gitea_ui_extra_config` | | you can use this variable to pass additional config parameters in the `[ui]` section of the config. | -### UI - Meta ([ui.meta](https://docs.gitea.io/en-us/config-cheat-sheet/#ui---metadata-uimeta)) +### UI - Meta ([ui.meta](https://docs.gitea.com/administration/config-cheat-sheet#ui---metadata-uimeta)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_ui_author` | *(see defaults)* | Author meta tag of the homepage. | @@ -146,7 +157,7 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_ui_keywords` | *(see defaults)* | Keywords meta tag of the homepage | | `gitea_ui_meta_extra_config` | | you can use this variable to pass additional config parameters in the `[ui.meta]` section of the config. | -### Server ([server](https://docs.gitea.io/en-us/config-cheat-sheet/#server-server)) +### Server ([server](https://docs.gitea.com/administration/config-cheat-sheet#server-server)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_protocol`| `http` | Listening protocol [http, https, fcgi, unix, fcgi+unix] | @@ -175,7 +186,7 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_acme_ca_root` | | The CA’s root certificate. If left empty, it defaults to using the system’s trust chain. | | `gitea_server_extra_config` | | you can use this variable to pass additional config parameters in the `[server]` section of the config. | -### Database ([database](https://docs.gitea.io/en-us/config-cheat-sheet/#database-database)) +### Database ([database](https://docs.gitea.com/administration/config-cheat-sheet#database-database)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_db_type` | `sqlite3` | The database type in use `[mysql, postgres, mssql, sqlite3]`. | @@ -183,12 +194,12 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_db_name` | `root` | Database name | | `gitea_db_user` | `gitea` | Database username | | `gitea_db_password` | `lel` | Database password. **PLEASE CHANGE** | -| `gitea_db_ssl` | `disable` | Configure SSL only if your database type supports it. Have a look into the [config-cheat-sheet](https://docs.gitea.io/en-us/config-cheat-sheet/#database-database) for more detailed information | +| `gitea_db_ssl` | `disable` | Configure SSL only if your database type supports it. Have a look into the [config-cheat-sheet](https://docs.gitea.com/administration/config-cheat-sheet#database-database) for more detailed information | | `gitea_db_path` | `{{ gitea_home }}/data/gitea.db` | DB path, if you use `sqlite3`. | | `gitea_db_log_sql` | `false` | Log the executed SQL. | | `gitea_database_extra_config` | | you can use this variable to pass additional config parameters in the `[database]` section of the config. | -### Indexer ([indexer](https://docs.gitea.io/en-us/config-cheat-sheet/#indexer-indexer)) +### Indexer ([indexer](https://docs.gitea.com/administration/config-cheat-sheet#indexer-indexer)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_repo_indexer_enabled` | `false` | Enables code search *(uses a lot of disk space, about 6 times more than the repository size).* | @@ -199,7 +210,7 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_indexer_extra_config` | | you can use this variable to pass additional config parameters in the `[indexer]` section of the config. | | `gitea_queue_issue_indexer_extra_config` | | | you can use this variable to pass additional config parameters in the `[queue.issue_indexer]` section of the config. | -### Security ([security](https://docs.gitea.io/en-us/config-cheat-sheet/#security-security)) +### Security ([security](https://docs.gitea.com/administration/config-cheat-sheet#security-security)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_secret_key` | | Global secret key. Will be autogenerated if not defined. Should be unique. | @@ -209,7 +220,7 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_password_check_pwn` | `false` | Check [HaveIBeenPwned](https://haveibeenpwned.com/Passwords) to see if a password has been exposed. | | `gitea_security_extra_config` | | you can use this variable to pass additional config parameters in the `[security]` section of the config. | -### Service ([service](https://docs.gitea.io/en-us/config-cheat-sheet/#service-service)) +### Service ([service](https://docs.gitea.com/administration/config-cheat-sheet#service-service)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_disable_registration` | `false` | Do you want to disable user registration? (true/false) | @@ -221,9 +232,19 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_only_allow_external_registration` | `false` | Set to true to force registration only using third-party services (true/false) | | `gitea_enable_notify_mail` | `false` | Enable this to send e-mail to watchers of a repository when something happens, like creating issues (true/false) | | `gitea_auto_watch_new_repos` | `true` | Enable this to let all organisation users watch new repos when they are created (true/false) | +| `gitea_autowatch_on_change` | `true` | Enable this to make users watch a repository after their first commit to it (true/false) | +| `gitea_register_manual_confirm` | `false` | Enable this to manually confirm new registrations. Requires REGISTER_EMAIL_CONFIRM to be disabled. | +| `gitea_default_allow_create_organization` | `false` | Allow new users to create organizations by default (true/false) | +| `gitea_email_domain_allowlist` | | If non-empty, comma separated list of domain names that can only be used to register on this instance, wildcard is supported. | +| `gitea_default_user_visibility` | `public` | Set default visibility mode for users, either "public", "limited" or "private". | +| `gitea_default_org_visibility` | `public` | Set default visibility mode for organisations, either "public", "limited" or "private". | +| `gitea_allow_only_internal_registration` | `false` | Set to true to force registration only via Gitea. | +| `gitea_allow_only_external_registration` | `false` | Set to true to force registration only using third-party services. | +| `gitea_show_milestones_dashboard_page` | `true` | Enable this to show the milestones dashboard page - a view of all the user's milestones | +| `gitea_default_user_is_restricted` | `false` | Give new users restricted permissions by default (true/false) | | `gitea_service_extra_config` | | you can use this variable to pass additional config parameters in the `[service]` section of the config. | -### Mailer ([mailer](https://docs.gitea.io/en-us/config-cheat-sheet/#mailer-mailer)) +### Mailer ([mailer](https://docs.gitea.com/administration/config-cheat-sheet#mailer-mailer)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_mailer_enabled` | `false` | Whether to enable the mailer. | @@ -242,18 +263,18 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_mailer_send_as_plaintext` | `false` | Send mails only in plain text, without HTML alternative. | | `gitea_mailer_extra_config` | | you can use this variable to pass additional config parameters in the `[mailer]` section of the config. | -### Session ([session](https://docs.gitea.io/en-us/config-cheat-sheet/#session-session)) +### Session ([session](https://docs.gitea.com/administration/config-cheat-sheet#session-session)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_session_provider` | `file` | Session engine provider | | `gitea_session_extra_config` | | you can use this variable to pass additional config parameters in the `[session]` section of the config. | -### Picture ([picture](https://docs.gitea.io/en-us/config-cheat-sheet/#picture-picture)) +### Picture ([picture](https://docs.gitea.com/administration/config-cheat-sheet#picture-picture)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_picture_extra_config` | | you can use this variable to pass additional config parameters in the `[picture]` section of the config. | -### Issue and pull request attachments ([attachment](https://docs.gitea.io/en-us/config-cheat-sheet/#issue-and-pull-request-attachments-attachment)) +### Issue and pull request attachments ([attachment](https://docs.gitea.com/administration/config-cheat-sheet#issue-and-pull-request-attachments-attachment)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `attachment_enabled` | `true` | Whether issue and pull request attachments are enabled. | @@ -261,41 +282,41 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_attachment_max_size` | `4` | Maximum size (MB). | | `gitea_attachment_extra_config` | | you can use this variable to pass additional config parameters in the `[attachment]` section of the config. | -### Log ([log](https://docs.gitea.io/en-us/config-cheat-sheet/#log-log)) +### Log ([log](https://docs.gitea.com/administration/config-cheat-sheet#log-log)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_log_systemd` | `false` | Disable logging into `file`, use systemd-journald | | `gitea_log_level` | `Warn` | General log level. `[Trace, Debug, Info, Warn, Error, Critical, Fatal, None]` | | `gitea_log_extra_config` | | you can use this variable to pass additional config parameters in the `[log]` section of the config. | -### Metrics ([metrics](https://docs.gitea.io/en-us/config-cheat-sheet/#metrics-metrics)) +### Metrics ([metrics](https://docs.gitea.com/administration/config-cheat-sheet#metrics-metrics)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_metrics_enabled`| `false` | Enable the metrics endpoint | | `gitea_metrics_token`| | Bearer token for the Prometheus scrape job | | `gitea_metrics_extra` | | you can use this variable to pass additional config parameters in the `[metrics]` section of the config. | -### OAuth2 ([oauth2](https://docs.gitea.io/en-us/config-cheat-sheet/#oauth2-oauth2)) +### OAuth2 ([oauth2](https://docs.gitea.com/administration/config-cheat-sheet#oauth2-oauth2)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_oauth2_enabled` | `true` | Enable the Oauth2 provider (true/false) | | `gitea_oauth2_jwt_secret` | | Oauth2 JWT secret. Can be generated with ``gitea generate secret JWT_SECRET``. Will be autogenerated if not defined. | | `gitea_oauth2_extra_config` | | you can use this variable to pass additional config parameters in the `[oauth2]` section of the config. | -### Federation ([federation](https://docs.gitea.io/en-us/config-cheat-sheet/#federation-federation)) +### Federation ([federation](https://docs.gitea.com/administration/config-cheat-sheet#federation-federation)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_federation_enabled` | `false` | Enable/Disable federation capabilities | | `gitea_federation_share_user_stats` | `false` | Enable/Disable user statistics for nodeinfo if federation is enabled | | `gitea_federation_extra` | | you can use this variable to pass additional config parameters in the `[federation]` section of the config. | -### Packages ([packages](https://docs.gitea.io/en-us/config-cheat-sheet/#packages-packages)) +### Packages ([packages](https://docs.gitea.com/administration/config-cheat-sheet#packages-packages)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_packages_enabled` | `true` | Enable/Disable package registry capabilities | | `gitea_packages_extra` | |you can use this variable to pass additional config parameters in the `[packages]` section of the config. | -### LFS ([lfs](https://docs.gitea.io/en-us/config-cheat-sheet/#lfs-lfs)) +### LFS ([lfs](https://docs.gitea.com/administration/config-cheat-sheet#lfs-lfs)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_lfs_storage_type` | `local` | Storage type for lfs | @@ -303,14 +324,14 @@ Either you define exactly which release you install. Or you use the option ``lat | `gitea_lfs_content_path` | `{{ gitea_home }}/data/lfs` | Where to store LFS files | | `gitea_lfs_extra` | | you can use this variable to pass additional config parameters in the `[lfs]` section of the config. | -### Actions ([actions](https://docs.gitea.io/en-us/config-cheat-sheet/#actions-actions)) +### Actions ([actions](https://docs.gitea.com/administration/config-cheat-sheet#actions-actions)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_actions_enabled` | `false` | Enable/Disable actions capabilities globaly. You may want to add `repo.actions` to `gitea_default_repo_units` to enable actions on all new repositories | | `gitea_actions_default_actions_url` | `https://gitea.com/` | Default address to get action plugins, e.g. the default value means downloading from `https://gitea.com/actions/checkout` for `uses: actions/checkout@v3` | | `gitea_actions_extra` | | you can use this variable to pass additional config parameters in the `[actions]` section of the config. | -### Other ([other](https://docs.gitea.io/en-us/config-cheat-sheet/#other-other)) +### Other ([other](https://docs.gitea.com/administration/config-cheat-sheet#other-other)) | variable name | default value | description | | ------------- | ------------- | ----------- | | `gitea_other_show_footer_version` | `true` | Show Gitea and Go version information in the footer. | @@ -321,7 +342,7 @@ Either you define exactly which release you install. Or you use the option ``lat ### additional gitea config | variable name | default value | description | | ------------- | ------------- | ----------- | -| `gitea_extra_config` | | Additional gitea configuration. Have a look at the [config-cheat-sheet](https://docs.gitea.io/en-us/config-cheat-sheet/) before using it! | +| `gitea_extra_config` | | Additional gitea configuration. Have a look at the [config-cheat-sheet](https://docs.gitea.com/administration/config-cheat-sheet) before using it! | ### Fail2Ban configuration @@ -375,11 +396,10 @@ This role uses the ``ansible.builtin`` and ``community.general`` ansible Collect ### Galaxy Collections + community.general - ### Example requirements Installation ``` -ansible-galaxy install community.general -pip3 install jmespath +ansible-galaxy collection install --update --role-file requirements.yml +pip3 install --update jmespath ``` ## Contribute @@ -388,14 +408,5 @@ Mastodon [@l3d@chaos.social](https://chaos.social/@l3d). I'll be happy to fix any issues you raise, or even better, review your pull requests :) -## Testing -There are some tests that will validate the linting. A good test CI pipeline that works with the systemd commands used is still needed. - -| test status | Github Marketplace | -| :--------- | :---------------- | -| [![Galaxy release](https://github.com/roles-ansible/ansible_role_gitea/actions/workflows/galaxy.yml/badge.svg)](https://github.com/roles-ansible/ansible_role_gitea/actions/workflows/galaxy.yml) | [publish-ansible-role-to-galaxy](https://github.com/marketplace/actions/publish-ansible-role-to-galaxy) | -| [![Yamllint GitHub Actions](https://github.com/roles-ansible/ansible_role_gitea/actions/workflows/yamllint.yaml/badge.svg)](https://github.com/roles-ansible/ansible_role_gitea/actions/workflows/yamllint.yaml) | [yamllint-github-action](https://github.com/marketplace/actions/yamllint-github-action) | -| [![Ansible Lint check](https://github.com/roles-ansible/ansible_role_gitea/actions/workflows/ansible-linting-check.yml/badge.svg)](https://github.com/roles-ansible/ansible_role_gitea/actions/workflows/ansible-linting-check.yml) | [ansible-lint action](https://github.com/marketplace/actions/ansible-lint) - ## History of this role this ansible role was originally developed on [github.com/thomas-maurice/ansible-role-gitea](https://github.com/thomas-maurice/ansible-role-gitea.git). Since the role there has some problems like default values for the location of the gitea repositories and the merging of pull requests usually takes several months, a fork of the role was created that offers the same. Only tidier and with the claim to react faster to issues and pull requests. It is now Part of the [l3d.git](https://galaxy.ansible.com/l3d/git) Collection too. diff --git a/defaults/main.yml b/defaults/main.yml index bb04b91..f460e4e 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -156,6 +156,7 @@ gitea_security_extra_config: '' # -> https://docs.gitea.io/en-us/config-cheat-sheet/#service-service gitea_disable_registration: false gitea_register_email_confirm: false +gitea_register_manual_confirm: false gitea_require_signin: true gitea_default_keep_mail_private: true gitea_enable_captcha: true @@ -163,6 +164,15 @@ gitea_show_registration_button: true gitea_only_allow_external_registration: false gitea_enable_notify_mail: false gitea_auto_watch_new_repos: true +gitea_autowatch_on_change: false +gitea_default_allow_create_organization: false +gitea_default_user_is_restricted: false +gitea_email_domain_allowlist: "" +gitea_default_user_visibility: public +gitea_default_org_visibility: public +gitea_allow_only_internal_registration: false +gitea_allow_only_external_registration: false +gitea_show_milestones_dashboard_page: true gitea_service_extra_config: '' # Mailer [mailer] @@ -264,4 +274,4 @@ gitea_customize_logo: false gitea_custom: "{{ gitea_home }}/custom" gitea_customize_footer: false gitea_customize_files: false -gitea_customize_files_path: "{{ gitea_custom_search }}/gitea_files" +gitea_customize_files_path: "{{ gitea_custom_search }}/gitea_files/" diff --git a/requirements.yml b/requirements.yml new file mode 100644 index 0000000..a5a1e10 --- /dev/null +++ b/requirements.yml @@ -0,0 +1,4 @@ +--- +collections: + - name: 'community.general' + version: ">=7.5.0,<=8.0.0" diff --git a/tasks/backup.yml b/tasks/backup.yml index 3dc9074..6a9fc56 100644 --- a/tasks/backup.yml +++ b/tasks/backup.yml @@ -11,20 +11,18 @@ - name: Stopping gitea before upgrade become: true ansible.builtin.systemd: - name: gitea - state: stopped + name: 'gitea.service' + state: 'stopped' when: ansible_service_mgr == "systemd" - name: "Create backup directory" become: true ansible.builtin.file: - path: "{{ item }}" - state: directory + path: "{{ gitea_backup_location }}" + state: 'directory' owner: "{{ gitea_user }}" group: "{{ gitea_group }}" mode: 'u=rwx,g=rx,o=' - with_items: - - "{{ gitea_backup_location }}" - name: Backing up gitea before upgrade become: true @@ -36,10 +34,10 @@ - name: Starting gitea because backup failed become: true ansible.builtin.systemd: - name: gitea - state: stopped + name: 'gitea.service' + state: 'started' when: ansible_service_mgr == "systemd" - - name: Print updateing error - ansible.builtin.debug: + - name: Print updateing error and cancel + ansible.builtin.fail: msg: "failed to backup gitea" diff --git a/tasks/configure.yml b/tasks/configure.yml index 3f1be1f..a5f5f30 100644 --- a/tasks/configure.yml +++ b/tasks/configure.yml @@ -1,4 +1,12 @@ --- +- name: Make sure gitea_register_email_confirm is false when gitea_register_manual_confirm is true + ansible.builtin.fail: + msg: | + To manually confirm registrations, + gitea_register_email_confirm needs to be false + and gitea_register_manual_confirm should be true. + when: gitea_register_manual_confirm | bool and gitea_register_email_confirm | bool + - name: "Configure gitea" become: true ansible.builtin.template: diff --git a/tasks/customize_footer.yml b/tasks/customize_footer.yml index f7f8931..1f14080 100644 --- a/tasks/customize_footer.yml +++ b/tasks/customize_footer.yml @@ -7,7 +7,7 @@ owner: "{{ gitea_user }}" group: "{{ gitea_group }}" mode: 'u=rwX,g=rX,o=' - with_items: + loop: - "{{ gitea_custom }}/templates" - "{{ gitea_custom }}/templates/custom" @@ -19,6 +19,6 @@ owner: "{{ gitea_user }}" group: "{{ gitea_group }}" mode: '0644' - ignore_errors: true + failed_when: false tags: skip_ansible_lint notify: "Restart gitea" diff --git a/tasks/customize_logo.yml b/tasks/customize_logo.yml index 4d4d609..c3e8ae7 100644 --- a/tasks/customize_logo.yml +++ b/tasks/customize_logo.yml @@ -7,7 +7,7 @@ owner: "{{ gitea_user }}" group: "{{ gitea_group }}" mode: 'u=rwX,g=rX,o=' - with_items: + loop: - "{{ gitea_custom }}/public" - "{{ gitea_custom }}/public/img" @@ -20,7 +20,7 @@ group: "{{ gitea_group }}" mode: '0644' tags: skip_ansible_lint - ignore_errors: true + failed_when: false - name: Transfer custom logo.png become: true @@ -31,7 +31,7 @@ group: "{{ gitea_group }}" mode: '0644' tags: skip_ansible_lint - ignore_errors: true + failed_when: false - name: Transfer custom favicon.png become: true @@ -42,7 +42,7 @@ group: "{{ gitea_group }}" mode: '0644' tags: skip_ansible_lint - ignore_errors: true + failed_when: false - name: Transfer custom apple-touch-icon.png become: true @@ -53,4 +53,4 @@ group: "{{ gitea_group }}" mode: '0644' tags: skip_ansible_lint - ignore_errors: true + failed_when: false diff --git a/tasks/customize_public_files.yml b/tasks/customize_public_files.yml index 9c14c9a..747a103 100644 --- a/tasks/customize_public_files.yml +++ b/tasks/customize_public_files.yml @@ -7,7 +7,7 @@ owner: "{{ gitea_user }}" group: "{{ gitea_group }}" mode: 'u=rwX,g=rX,o=' - with_items: + loop: - "{{ gitea_custom }}/public" - name: Transfer custom public web data @@ -19,6 +19,6 @@ group: "{{ gitea_group }}" directory_mode: true mode: 'u=rwX,g=rX,o=' - ignore_errors: true + failed_when: false tags: skip_ansible_lint notify: "Restart gitea" diff --git a/tasks/directory.yml b/tasks/directory.yml index 2a9e2aa..5154b40 100644 --- a/tasks/directory.yml +++ b/tasks/directory.yml @@ -7,7 +7,7 @@ owner: "{{ gitea_user }}" group: "{{ gitea_group }}" mode: 'u=rwX,g=rX,o=' - with_items: + loop: - "{{ gitea_configuration_path }}" - "{{ gitea_user_home }}" - "{{ gitea_home }}" diff --git a/tasks/fail2ban.yml b/tasks/fail2ban.yml index aa41bde..af439e3 100644 --- a/tasks/fail2ban.yml +++ b/tasks/fail2ban.yml @@ -25,5 +25,5 @@ ansible.builtin.fail: msg: "the package fail2ban is not installed. no fail2ban filters deployed." when: "'fail2ban' not in ansible_facts.packages" - ignore_errors: true + failed_when: false tags: skip_ansible_lint_ignore-errors diff --git a/tasks/install_forgejo.yml b/tasks/install_forgejo.yml index 31a4801..6cbb79e 100644 --- a/tasks/install_forgejo.yml +++ b/tasks/install_forgejo.yml @@ -54,7 +54,7 @@ become: false failed_when: _gitea_gpg_key_status.rc not in (0, 2) - - name: Print gpg key staus on verbosity + - name: Print gpg key status on verbosity # noqa: H500 ansible.builtin.debug: msg: "{{ _gitea_gpg_key_status.stdout }}" verbosity: 1 diff --git a/tasks/install_gitea.yml b/tasks/install_gitea.yml index 4f88b8f..4a7f5c4 100644 --- a/tasks/install_gitea.yml +++ b/tasks/install_gitea.yml @@ -53,7 +53,7 @@ changed_when: false failed_when: _gitea_gpg_key_status.rc not in (0, 2) - - name: Print gpg key staus on verbosity + - name: Print gpg key status on verbosity # noqa: H500 ansible.builtin.debug: msg: "{{ _gitea_gpg_key_status.stdout }}" verbosity: 1 diff --git a/tasks/install_systemd.yml b/tasks/install_systemd.yml index 1d0084a..6a441cb 100644 --- a/tasks/install_systemd.yml +++ b/tasks/install_systemd.yml @@ -1,23 +1,9 @@ --- - name: "Setup systemd service" become: true - when: ansible_os_family == "Debian" ansible.builtin.template: src: gitea.service.j2 - dest: /lib/systemd/system/gitea.service - owner: root - group: root - mode: 0644 - notify: - - "Reload systemd" - - "Restart gitea" - -- name: "Setup systemd service" - become: true - when: ansible_os_family == "Suse" - ansible.builtin.template: - src: gitea.service.j2 - dest: /etc/systemd/system/gitea.service + dest: "{{ gitea_systemd_path }}/gitea.service" owner: root group: root mode: 0644 diff --git a/tasks/main.yml b/tasks/main.yml index 7fe7331..935c0b6 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,65 +1,81 @@ --- - name: Perform optional versionscheck - ansible.builtin.include_tasks: versioncheck.yml + ansible.builtin.include_tasks: + file: 'versioncheck.yml' when: submodules_versioncheck|bool - name: Gather installed packages for checks later on ansible.builtin.package_facts: - manager: auto + manager: 'auto' - name: Prepare gitea/forgejo variable import block: - name: Gather variables for gitea or forgejo - ansible.builtin.include_vars: "{{ lookup('first_found', gitea_fork_variables) }}" + ansible.builtin.include_vars: + file: "{{ lookup('first_found', gitea_fork_variables) }}" rescue: - name: Gitea/Forejo import info ansible.builtin.fail: msg: "Currently only {{ gitea_supported_forks }} are supported." - name: Gather variables for each operating system - ansible.builtin.include_vars: "{{ lookup('first_found', gitea_variables) }}" + ansible.builtin.include_vars: + file: "{{ lookup('first_found', gitea_variables) }}" - name: Gather versioning information - ansible.builtin.include_tasks: "set_{{ gitea_fork | lower }}_version.yml" + ansible.builtin.include_tasks: + file: "set_{{ gitea_fork | lower }}_version.yml" - name: Backup gitea before update - ansible.builtin.include_tasks: backup.yml + ansible.builtin.include_tasks: + file: 'backup.yml' when: gitea_backup_on_upgrade|bool -- name: Create gitea user and role - ansible.builtin.include_tasks: create_user.yml +- name: Create gitea user and group + ansible.builtin.include_tasks: + file: 'create_user.yml' - name: "Install or update {{ gitea_fork }}" - ansible.builtin.include_tasks: "install_{{ gitea_fork | lower }}.yml" + ansible.builtin.include_tasks: + file: "install_{{ gitea_fork | lower }}.yml" - name: Create directories - ansible.builtin.include_tasks: directory.yml + ansible.builtin.include_tasks: + file: 'directory.yml' - name: Setup gitea systemd service - ansible.builtin.include_tasks: install_systemd.yml + ansible.builtin.include_tasks: + file: 'install_systemd.yml' when: ansible_service_mgr == "systemd" - name: Generate JWT Secrets if undefined - ansible.builtin.include_tasks: jwt_secrets.yml + ansible.builtin.include_tasks: + file: 'jwt_secrets.yml' - name: Generate gitea secrets if undefined - ansible.builtin.include_tasks: gitea_secrets.yml + ansible.builtin.include_tasks: + file: 'gitea_secrets.yml' - name: Configure gitea - ansible.builtin.include_tasks: configure.yml + ansible.builtin.include_tasks: + file: 'configure.yml' - name: Deploy optional fail2ban rules - ansible.builtin.include_tasks: fail2ban.yml - when: gitea_fail2ban_enabled|bool + ansible.builtin.include_tasks: + file: 'fail2ban.yml' + when: gitea_fail2ban_enabled | bool - name: Optionally customize gitea - ansible.builtin.include_tasks: customize_logo.yml - when: gitea_customize_logo|bool + ansible.builtin.include_tasks: + file: 'customize_logo.yml' + when: gitea_customize_logo | bool - name: Optionally customize footer - ansible.builtin.include_tasks: customize_footer.yml - when: gitea_customize_footer|bool + ansible.builtin.include_tasks: + file: 'customize_footer.yml' + when: gitea_customize_footer | bool - name: Optionally deploy public files - ansible.builtin.include_tasks: customize_public_files.yml - when: gitea_customize_files|bool + ansible.builtin.include_tasks: + file: 'customize_public_files.yml' + when: gitea_customize_files | bool diff --git a/tasks/set_forgejo_version.yml b/tasks/set_forgejo_version.yml index 7b3d195..554dfcd 100644 --- a/tasks/set_forgejo_version.yml +++ b/tasks/set_forgejo_version.yml @@ -2,7 +2,7 @@ - name: "Check forgejo installed version" ansible.builtin.shell: "set -eo pipefail; {{ gitea_full_executable_path }} -v | cut -d' ' -f 3" args: - executable: /bin/bash + executable: '/bin/bash' register: gitea_active_version changed_when: false failed_when: false @@ -97,11 +97,18 @@ gitea_forgejo_signed_url: ['https://codeberg.org/attachments/ae5e50c6-e86e-4202-b95f-f142e8138e2f'] when: ansible_check_mode -- name: Show Download URLs +- name: 'Assert that remote version is higher' + ansible.builtin.assert: + that: + - gitea_active_version is version(gitea_remote_version, 'lt') + fail_msg: ERROR - Remote version is lower then current version! + when: gitea_version == "latest" and gitea_active_version.stderr == "" | bool + +- name: Show Download URLs # noqa: H500 ansible.builtin.debug: msg: "{{ item }}" verbosity: 1 - with_items: + loop: - "gitea_forgejo_dl_url: {{ gitea_forgejo_dl_url | first }}" - "gitea_forgejo_checksum: {{ gitea_forgejo_checksum }}" - "gitea_forgejo_signed_url: {{ gitea_forgejo_signed_url | first }}" diff --git a/tasks/set_gitea_version.yml b/tasks/set_gitea_version.yml index c01a674..0c9880b 100644 --- a/tasks/set_gitea_version.yml +++ b/tasks/set_gitea_version.yml @@ -40,6 +40,13 @@ gitea_version_target: "{{ gitea_version }}" when: gitea_version != "latest" +- name: 'Assert that remote version is higher' + ansible.builtin.assert: + that: + - gitea_active_version is version(gitea_remote_version, 'lt') + fail_msg: ERROR - Remote version is lower then current version! + when: gitea_version == "latest" and gitea_active_version.stderr == "" | bool + - name: "Generate gitea download URL" ansible.builtin.set_fact: gitea_dl_url: "https://github.com/go-gitea/gitea/releases/download/v{{ gitea_version_target }}/gitea-{{ gitea_version_target }}-linux-{{ gitea_arch }}" diff --git a/tasks/versioncheck.yml b/tasks/versioncheck.yml index dd22a1a..7dd80c5 100644 --- a/tasks/versioncheck.yml +++ b/tasks/versioncheck.yml @@ -7,7 +7,7 @@ ansible.builtin.file: path: '/etc/.ansible-version' state: directory - mode: 0755 + mode: '0755' when: submodules_versioncheck | bool - name: Check playbook version @@ -16,15 +16,14 @@ src: "/etc/.ansible-version/{{ playbook_version_path }}" register: playbook_version when: submodules_versioncheck | bool - ignore_errors: true failed_when: false -- name: Print remote role version +- name: Print remote role version # noqa: H500 ansible.builtin.debug: msg: "Remote role version: {{ playbook_version.content | default('Y3VycmVudGx5IG5vdCBkZXBsb3llZAo=') | b64decode | string }}" when: submodules_versioncheck | bool -- name: Print locale role version +- name: Print locale role version # noqa: H500 ansible.builtin.debug: msg: "Local role version: '{{ playbook_version_number | string }}'." when: submodules_versioncheck | bool diff --git a/templates/gitea.ini.j2 b/templates/gitea.ini.j2 index cbe7cb2..e4bea98 100644 --- a/templates/gitea.ini.j2 +++ b/templates/gitea.ini.j2 @@ -1,265 +1,278 @@ -; this file is the configuration of your local gitea instance +; this file is the configuration of your local Gitea instance ; {{ ansible_managed }} ; -; This file overwrites the default values from gitea. -; undefined variables will use the default value from gitea. -; Cheat Sheet: https://docs.gitea.io/en-us/config-cheat-sheet/ +; This file overwrites the default values from Gitea. +; undefined variables will use the default value from Gitea. +; Cheat Sheet: https://docs.gitea.com/next/administration/config-cheat-sheet/ ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#overall-default +; -> https://docs.gitea.com/next/administration/config-cheat-sheet#overall-default APP_NAME = {{ gitea_app_name }} RUN_USER = {{ gitea_user }} RUN_MODE = {{ gitea_run_mode }} +WORK_PATH = {{ gitea_home }} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#repository-repository +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#repository-repository [repository] -ROOT = {{ gitea_repository_root }} -FORCE_PRIVATE = {{ gitea_force_private | ternary('true', 'false') }} -DEFAULT_PRIVATE = {{ gitea_default_private }} -MAX_CREATION_LIMIT = {{ gitea_user_repo_limit }} -DISABLE_HTTP_GIT = {{ gitea_disable_http_git | ternary('true', 'false') }} +ROOT = {{ gitea_repository_root }} +FORCE_PRIVATE = {{ gitea_force_private | ternary('true', 'false') }} +DEFAULT_PRIVATE = {{ gitea_default_private }} +MAX_CREATION_LIMIT = {{ gitea_user_repo_limit }} +DISABLE_HTTP_GIT = {{ gitea_disable_http_git | ternary('true', 'false') }} ENABLE_PUSH_CREATE_USER = {{ gitea_enable_push_create_user | ternary('true', 'false') }} -ENABLE_PUSH_CREATE_ORG = {{ gitea_enable_push_create_org | ternary('true', 'false') }} -DISABLED_REPO_UNITS = {{ gitea_disabled_repo_units }} -DEFAULT_REPO_UNITS = {{ gitea_default_repo_units }} -DISABLE_STARS = {{ gitea_disable_stars | ternary('true', 'false') }} -DEFAULT_BRANCH = {{ gitea_default_branch }} +ENABLE_PUSH_CREATE_ORG = {{ gitea_enable_push_create_org | ternary('true', 'false') }} +DISABLED_REPO_UNITS = {{ gitea_disabled_repo_units }} +DEFAULT_REPO_UNITS = {{ gitea_default_repo_units }} +DISABLE_STARS = {{ gitea_disable_stars | ternary('true', 'false') }} +DEFAULT_BRANCH = {{ gitea_default_branch }} {{ gitea_repository_extra_config }} ; ; -; -> https://docs.gitea.io/en-us/administration/config-cheat-sheet/#repository---upload-repositoryupload +; -> https://docs.gitea.com/next/administration/administration/config-cheat-sheet/#repository---upload-repositoryupload [repository.upload] -ENABLED = {{ gitea_repository_upload_enabled | ternary('true', 'false') }} -TEMP_PATH = {{ gitea_home }}/data/tmp/uploads -FILE_MAX_SIZE = {{ gitea_repository_upload_max_size }} +ENABLED = {{ gitea_repository_upload_enabled | ternary('true', 'false') }} +TEMP_PATH = {{ gitea_home }}/data/tmp/uploads +FILE_MAX_SIZE = {{ gitea_repository_upload_max_size }} {{ gitea_repository_upload_extra_config }} ; ; {% if gitea_enable_repo_signing_options | bool %} -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#repository---signing-repositorysigning +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#repository---signing-repositorysigning [repository.signing] -SIGNING_KEY = {{ gitea_repo_signing_key }} -SIGNING_NAME = {{ gitea_repo_signing_name }} -SIGNING_EMAIL = {{ gitea_repo_signing_email }} -INITIAL_COMMIT = {{ gitea_repo_initial_commit }} +SIGNING_KEY = {{ gitea_repo_signing_key }} +SIGNING_NAME = {{ gitea_repo_signing_name }} +SIGNING_EMAIL = {{ gitea_repo_signing_email }} +INITIAL_COMMIT = {{ gitea_repo_initial_commit }} DEFAULT_TRUST_MODEL = {{ gitea_repo_default_trust_model }} -WIKI = {{ gitea_repo_wiki }} -CRUD_ACTIONS = {{ gitea_repo_crud_actions }} -MERGES = {{ gitea_repo_merges }} +WIKI = {{ gitea_repo_wiki }} +CRUD_ACTIONS = {{ gitea_repo_crud_actions }} +MERGES = {{ gitea_repo_merges }} {{ gitea_enable_repo_signing_extra }} ; {% endif %} ; {% if gitea_enable_cors | bool %} ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#cors-cors +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#cors-cors [cors] -ENABLED = {{ gitea_enable_cors | ternary('true', 'false') }} -SCHEME = {{ gitea_cors_scheme }} -ALLOW_DOMAIN = {{ gitea_cors_allow_domain }} -ALLOW_SUBDOMAIN = {{ gitea_cors_allow_subdomain | ternary('true', 'false') }} -METHODS = {{ gitea_cors_methods }} -MAX_AGE = {{ gitea_cors_max_age }} +ENABLED = {{ gitea_enable_cors | ternary('true', 'false') }} +SCHEME = {{ gitea_cors_scheme }} +ALLOW_DOMAIN = {{ gitea_cors_allow_domain }} +ALLOW_SUBDOMAIN = {{ gitea_cors_allow_subdomain | ternary('true', 'false') }} +METHODS = {{ gitea_cors_methods }} +MAX_AGE = {{ gitea_cors_max_age }} ALLOW_CREDENTIALS = {{ gitea_cors_allow_credentials | ternary('true', 'false') }} -HEADERS = {{ gitea_cors_headers }} -X_FRAME_OPTIONS = {{ gitea_cors_x_frame_options }} +HEADERS = {{ gitea_cors_headers }} +X_FRAME_OPTIONS = {{ gitea_cors_x_frame_options }} {{ gitea_cors_extra }} ; {% endif %} ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#ui-ui +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#ui-ui [ui] -THEMES = {{ gitea_themes }} -DEFAULT_THEME = {{ gitea_theme_default }} +THEMES = {{ gitea_themes }} +DEFAULT_THEME = {{ gitea_theme_default }} SHOW_USER_EMAIL = {{ gitea_show_user_email | ternary('true', 'false') }} {{ gitea_ui_extra_config }} ; ; ; [ui.meta] -AUTHOR = {{ gitea_ui_author }} +AUTHOR = {{ gitea_ui_author }} DESCRIPTION = {{ gitea_ui_description }} -KEYWORDS = {{ gitea_ui_keywords }} +KEYWORDS = {{ gitea_ui_keywords }} {{ gitea_ui_meta_extra_config }} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#server-server +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#server-server [server] -APP_DATA_PATH = {{ gitea_home }}/data -PROTOCOL = {{ gitea_protocol }} -DOMAIN = {{ gitea_http_domain }} -ROOT_URL = {{ gitea_root_url }} -HTTP_ADDR = {{ gitea_http_listen }} -HTTP_PORT = {{ gitea_http_port }} -START_SSH_SERVER = {{ gitea_start_ssh | ternary('true', 'false') }} -SSH_DOMAIN = {{ gitea_ssh_domain }} -SSH_PORT = {{ gitea_ssh_port }} -SSH_LISTEN_HOST = {{ gitea_ssh_listen }} -OFFLINE_MODE = {{ gitea_offline_mode | ternary('true', 'false') }} +APP_DATA_PATH = {{ gitea_home }}/data +PROTOCOL = {{ gitea_protocol }} +DOMAIN = {{ gitea_http_domain }} +ROOT_URL = {{ gitea_root_url }} +HTTP_ADDR = {{ gitea_http_listen }} +HTTP_PORT = {{ gitea_http_port }} +START_SSH_SERVER = {{ gitea_start_ssh | ternary('true', 'false') }} +SSH_DOMAIN = {{ gitea_ssh_domain }} +SSH_PORT = {{ gitea_ssh_port }} +SSH_LISTEN_HOST = {{ gitea_ssh_listen }} +OFFLINE_MODE = {{ gitea_offline_mode | ternary('true', 'false') }} {% if gitea_enable_tls_certs | bool %} -CERT_FILE = {{ gitea_tls_cert_file }} -KEY_FILE = {{ gitea_tls_key_file }} +CERT_FILE = {{ gitea_tls_cert_file }} +KEY_FILE = {{ gitea_tls_key_file }} {% endif %} -LANDING_PAGE = {{ gitea_landing_page }} -{% if gitea_lfs_server_enabled | bool -%} -LFS_START_SERVER = true -LFS_JWT_SECRET = {{ gitea_lfs_jwt_secret }} +LANDING_PAGE = {{ gitea_landing_page }} +{% if gitea_lfs_server_enabled | bool %} +LFS_START_SERVER = true +LFS_JWT_SECRET = {{ gitea_lfs_jwt_secret }} {% endif %} -REDIRECT_OTHER_PORT = {{ gitea_redirect_other_port | ternary('true', 'false') }} -PORT_TO_REDIRECT = {{ gitea_port_to_redirect }} -ENABLE_ACME = {{ gitea_enable_acme | ternary('true', 'false') }} +REDIRECT_OTHER_PORT = {{ gitea_redirect_other_port | ternary('true', 'false') }} +PORT_TO_REDIRECT = {{ gitea_port_to_redirect }} +ENABLE_ACME = {{ gitea_enable_acme | ternary('true', 'false') }} {% if gitea_enable_acme | bool %} -{% if gitea_acme_url != '' %} -ACME_URL = {{ gitea_acme_url }} -{% endif %} -ACME_ACCEPTTOS = {{ gitea_acme_accepttos | ternary('true', 'false') }} -ACME_DIRECTORY = {{ gitea_acme_directory }} -ACME_EMAIL = {{ gitea_acme_email }} -ACME_CA_ROOT = {{ gitea_acme_ca_root }} +{% if gitea_acme_url != '' %} +ACME_URL = {{ gitea_acme_url }} +{% endif %} +ACME_ACCEPTTOS = {{ gitea_acme_accepttos | ternary('true', 'false') }} +ACME_DIRECTORY = {{ gitea_acme_directory }} +ACME_EMAIL = {{ gitea_acme_email }} +ACME_CA_ROOT = {{ gitea_acme_ca_root }} {% endif %} {{ gitea_server_extra_config }} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#database-database +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#database-database [database] -DB_TYPE = {{ gitea_db_type }} -HOST = {{ gitea_db_host }} -NAME = {{ gitea_db_name }} -USER = {{ gitea_db_user }} -PASSWD = {{ gitea_db_password }} +DB_TYPE = {{ gitea_db_type }} +HOST = {{ gitea_db_host }} +NAME = {{ gitea_db_name }} +USER = {{ gitea_db_user }} +PASSWD = {{ gitea_db_password }} SSL_MODE = {{ gitea_db_ssl }} -PATH = {{ gitea_db_path }} -LOG_SQL = {{ gitea_db_log_sql | ternary('true', 'false') }} +PATH = {{ gitea_db_path }} +LOG_SQL = {{ gitea_db_log_sql | ternary('true', 'false') }} {{ gitea_database_extra_config }} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#indexer-indexer +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#indexer-indexer [indexer] -ISSUE_INDEXER_PATH = {{ gitea_home }}/indexers/issues.bleve -REPO_INDEXER_ENABLED = {{ gitea_repo_indexer_enabled | ternary('true', 'false') }} -REPO_INDEXER_PATH = {{ gitea_home }}/indexers/repos.bleve -REPO_INDEXER_INCLUDE = {{ gitea_repo_indexer_include }} -REPO_INDEXER_EXCLUDE = {{ gitea_repo_indexer_exclude }} +ISSUE_INDEXER_PATH = {{ gitea_home }}/indexers/issues.bleve +REPO_INDEXER_ENABLED = {{ gitea_repo_indexer_enabled | ternary('true', 'false') }} +REPO_INDEXER_PATH = {{ gitea_home }}/indexers/repos.bleve +REPO_INDEXER_INCLUDE = {{ gitea_repo_indexer_include }} +REPO_INDEXER_EXCLUDE = {{ gitea_repo_indexer_exclude }} REPO_INDEXER_EXCLUDE_VENDORED = {{ gitea_repo_exclude_vendored | ternary('true', 'false') }} -MAX_FILE_SIZE = {{ gitea_repo_indexer_max_file_size }} +MAX_FILE_SIZE = {{ gitea_repo_indexer_max_file_size }} {{ gitea_indexer_extra_config }} ; ; ; Queue (queue and queue.*) -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#queue-queue-and-queue +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#queue-queue-and-queue [queue.issue_indexer] DATADIR = {{ gitea_home }}/indexers/issues.queue {{ gitea_queue_issue_indexer_extra_config }} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#security-security +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#security-security [security] -INSTALL_LOCK = true -SECRET_KEY = {{ gitea_secret_key }} -DISABLE_GIT_HOOKS = {{ gitea_disable_git_hooks | ternary('true', 'false') }} -DISABLE_WEBHOOKS = {{ gitea_disable_webhooks | ternary('true', 'false') }} -INTERNAL_TOKEN = {{ gitea_internal_token }} -PASSWORD_CHECK_PWN = {{ gitea_password_check_pwn | ternary('true', 'false') }} +INSTALL_LOCK = true +SECRET_KEY = {{ gitea_secret_key }} +DISABLE_GIT_HOOKS = {{ gitea_disable_git_hooks | ternary('true', 'false') }} +DISABLE_WEBHOOKS = {{ gitea_disable_webhooks | ternary('true', 'false') }} +INTERNAL_TOKEN = {{ gitea_internal_token }} +PASSWORD_CHECK_PWN = {{ gitea_password_check_pwn | ternary('true', 'false') }} {{ gitea_security_extra_config }} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#service-service +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#service-service [service] -REGISTER_EMAIL_CONFIRM = {{ gitea_register_email_confirm | ternary('true', 'false') }} -DISABLE_REGISTRATION = {{ gitea_disable_registration | ternary('true', 'false') }} -REQUIRE_SIGNIN_VIEW = {{ gitea_require_signin | ternary('true', 'false') }} -ENABLE_NOTIFY_MAIL = {{ gitea_enable_notify_mail | ternary('true', 'false') }} -ENABLE_CAPTCHA = {{ gitea_enable_captcha | ternary('true', 'false') }} -DEFAULT_KEEP_EMAIL_PRIVATE = {{ gitea_default_keep_mail_private | ternary('true', 'false') }} -SHOW_REGISTRATION_BUTTON = {{ gitea_show_registration_button | ternary('true', 'false') }} -AUTO_WATCH_NEW_REPOS = {{ gitea_auto_watch_new_repos | ternary('true', 'false') }} -ALLOW_ONLY_EXTERNAL_REGISTRATION = {{ gitea_only_allow_external_registration | ternary('true', 'false') }} +REGISTER_EMAIL_CONFIRM = {{ gitea_register_email_confirm | ternary('true', 'false') }} +DISABLE_REGISTRATION = {{ gitea_disable_registration | ternary('true', 'false') }} +REQUIRE_SIGNIN_VIEW = {{ gitea_require_signin | ternary('true', 'false') }} +ENABLE_NOTIFY_MAIL = {{ gitea_enable_notify_mail | ternary('true', 'false') }} +ENABLE_CAPTCHA = {{ gitea_enable_captcha | ternary('true', 'false') }} +DEFAULT_KEEP_EMAIL_PRIVATE = {{ gitea_default_keep_mail_private | ternary('true', 'false') }} +SHOW_REGISTRATION_BUTTON = {{ gitea_show_registration_button | ternary('true', 'false') }} +AUTO_WATCH_NEW_REPOS = {{ gitea_auto_watch_new_repos | ternary('true', 'false') }} +ALLOW_ONLY_EXTERNAL_REGISTRATION = {{ gitea_only_allow_external_registration | ternary('true', 'false') }} +AUTO_WATCH_ON_CHANGES = {{ gitea_autowatch_on_change | ternary('true', 'false') }} +SHOW_MILESTONES_DASHBOARD_PAGE = {{ gitea_show_milestones_dashboard_page | ternary('true', 'false') }} +REGISTER_MANUAL_CONFIRM = {{ gitea_register_manual_confirm | ternary('true', 'false') }} +DEFAULT_ALLOW_CREATE_ORGANIZATION = {{ gitea_default_allow_create_organization | ternary('true', 'false') }} +DEFAULT_USER_IS_RESTRICTED = {{ gitea_default_user_is_restricted | ternary('true', 'false') }} +{% if gitea_email_domain_allowlist is defined and gitea_email_domain_allowlist | length %} +EMAIL_DOMAIN_ALLOWLIST = {{ gitea_email_domain_allowlist }} +{% endif %} +DEFAULT_USER_VISIBILITY = {{ gitea_default_user_visibility }} +DEFAULT_ORG_VISIBILITY = {{ gitea_default_org_visibility }} +ALLOW_ONLY_INTERNAL_REGISTRATION = {{ gitea_allow_only_internal_registration | ternary('true', 'false') }} +ALLOW_ONLY_EXTERNAL_REGISTRATION = {{ gitea_allow_only_external_registration | ternary('true', 'false') }} {{ gitea_service_extra_config }} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#mailer-mailer +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#mailer-mailer [mailer] -ENABLED = {{ gitea_mailer_enabled | ternary('true', 'false') }} +ENABLED = {{ gitea_mailer_enabled | ternary('true', 'false') }} {% if gitea_mailer_enabled | bool %} -PROTOCOL = {{ gitea_mailer_protocol }} -SMTP_ADDR = {{ gitea_mailer_smtp_addr }} -SMTP_PORT = {{ gitea_mailer_smtp_port }} -USE_CLIENT_CERT = {{ gitea_mailer_use_client_cert | ternary('true', 'false') }} -{% if gitea_mailer_use_client_cert | bool %} -CLIENT_CERT_FILE = {{ gitea_mailer_client_cert_file }} -CLIENT_KEY_FILE = {{ gitea_mailer_client_key_file }} -{% endif %} +{% if gitea_mailer_use_client_cert | bool %} +CLIENT_CERT_FILE = {{ gitea_mailer_client_cert_file }} +CLIENT_KEY_FILE = {{ gitea_mailer_client_key_file }} +{% endif %} +PROTOCOL = {{ gitea_mailer_protocol }} +SMTP_ADDR = {{ gitea_mailer_smtp_addr }} +SMTP_PORT = {{ gitea_mailer_smtp_port }} +USE_CLIENT_CERT = {{ gitea_mailer_use_client_cert | ternary('true', 'false') }} FORCE_TRUST_SERVER_CERT = {{ gitea_mailer_force_trust_server_cert | ternary('true', 'false') }} -USER = {{ gitea_mailer_user }} -PASSWD = `{{ gitea_mailer_password }}` -ENABLE_HELO = {{ gitea_mailer_enable_helo | ternary('true', 'false') }} -FROM = {{ gitea_mailer_from }} -SUBJECT_PREFIX = {{ gitea_subject_prefix }} -SEND_AS_PLAIN_TEXT = {{ gitea_mailer_send_as_plaintext | ternary('true', 'false') }} +USER = {{ gitea_mailer_user }} +PASSWD = {{ gitea_mailer_password }} +ENABLE_HELO = {{ gitea_mailer_enable_helo | ternary('true', 'false') }} +FROM = {{ gitea_mailer_from }} +SUBJECT_PREFIX = {{ gitea_subject_prefix }} +SEND_AS_PLAIN_TEXT = {{ gitea_mailer_send_as_plaintext | ternary('true', 'false') }} {{ gitea_mailer_extra_config }} ; {% endif %} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#session-session +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#session-session [session] -PROVIDER = {{ gitea_session_provider }} +PROVIDER = {{ gitea_session_provider }} PROVIDER_CONFIG = {{ gitea_home }}/data/sessions {{ gitea_session_extra_config }} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#picture-picture +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#picture-picture [picture] AVATAR_UPLOAD_PATH = {{ gitea_home }}/data/avatars {{ gitea_picture_extra_config }} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#issue-and-pull-request-attachments-attachment +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#issue-and-pull-request-attachments-attachment [attachment] -ENABLED = {{ gitea_attachment_enabled | ternary('true', 'false') }} -ALLOWED_TYPES = {{ gitea_attachment_types }} -MAX_SIZE = {{ gitea_attachment_max_size }} -PATH = {{ gitea_home }}/data/attachments +ENABLED = {{ gitea_attachment_enabled | ternary('true', 'false') }} +ALLOWED_TYPES = {{ gitea_attachment_types }} +MAX_SIZE = {{ gitea_attachment_max_size }} +PATH = {{ gitea_home }}/data/attachments {{ gitea_attachment_extra_config }} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#log-log +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#log-log [log] -ROOT_PATH = {{ gitea_home }}/log +ROOT_PATH = {{ gitea_home }}/log {% if gitea_log_systemd %} -MODE = console +MODE = console {% else %} -MODE = file +MODE = file {% endif %} -LEVEL = {{ gitea_log_level }} +LEVEL = {{ gitea_log_level }} {{ gitea_log_extra_config }} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#metrics-metrics +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#metrics-metrics [metrics] ENABLED = {{ gitea_metrics_enabled | ternary('true', 'false') }} -TOKEN = {{ gitea_metrics_token }} +TOKEN = {{ gitea_metrics_token }} {{ gitea_metrics_extra }} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#oauth2-oauth2 +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#oauth2-oauth2 [oauth2] -ENABLE = {{ gitea_oauth2_enabled | ternary('true', 'false') }} +ENABLE = {{ gitea_oauth2_enabled | ternary('true', 'false') }} JWT_SECRET = {{ gitea_oauth2_jwt_secret }} {{ gitea_oauth2_extra_config }} ; ; -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#federation-federation +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#federation-federation [federation] -ENABLED = {{ gitea_federation_enabled | ternary('true', 'false') }} +ENABLED = {{ gitea_federation_enabled | ternary('true', 'false') }} SHARE_USER_STATISTICS = {{ gitea_federation_share_user_stats | ternary('true', 'false') }} {{ gitea_federation_extra }} ; ; ; Packages (packages) -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#packages-packages +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#packages-packages [packages] -ENABLED = {{ gitea_packages_enabled | ternary('true', 'false') }} +ENABLED = {{ gitea_packages_enabled | ternary('true', 'false') }} {% if gitea_packages_enabled | bool %} CHUNKED_UPLOAD_PATH = {{ gitea_home }}/data/tmp/package-upload {{ gitea_packages_extra }} @@ -267,31 +280,31 @@ CHUNKED_UPLOAD_PATH = {{ gitea_home }}/data/tmp/package-upload ; ; {% if gitea_lfs_server_enabled | bool %} -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#lfs-lfs +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#lfs-lfs [lfs] -STORAGE_TYPE = {{ gitea_lfs_storage_type }} -SERVE_DIRECT = {{ gitea_lfs_serve_direct | ternary('true', 'false') }} -PATH = {{ gitea_lfs_content_path }} +STORAGE_TYPE = {{ gitea_lfs_storage_type }} +SERVE_DIRECT = {{ gitea_lfs_serve_direct | ternary('true', 'false') }} +PATH = {{ gitea_lfs_content_path }} {{ gitea_lfs_extra }} {% endif %} ; ; {% if gitea_actions_enabled | bool %} -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#actions-actions +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#actions-actions [actions] -ENABLED = {{ gitea_actions_enabled }} +ENABLED = {{ gitea_actions_enabled }} DEFAULT_ACTIONS_URL = {{ gitea_actions_default_actions_url }} {{ gitea_actions_extra }} {% endif %} ; ; ; Other (other) -; -> https://docs.gitea.io/en-us/config-cheat-sheet/#other-other +; -> https://docs.gitea.com/next/administration/config-cheat-sheet/#other-other [other] -SHOW_FOOTER_VERSION = {{ gitea_other_show_footer_version | ternary('true', 'false') }} +SHOW_FOOTER_VERSION = {{ gitea_other_show_footer_version | ternary('true', 'false') }} SHOW_FOOTER_TEMPLATE_LOAD_TIME = {{ gitea_other_show_footer_template_load_time | ternary('true', 'false') }} -ENABLE_SITEMAP = {{ gitea_other_enable_sitemap | ternary('true', 'false') }} -ENABLE_FEED = {{ gitea_other_enable_feed | ternary('true', 'false') }} +ENABLE_SITEMAP = {{ gitea_other_enable_sitemap | ternary('true', 'false') }} +ENABLE_FEED = {{ gitea_other_enable_feed | ternary('true', 'false') }} ; ; ; diff --git a/vars/debian.yml b/vars/debian.yml index dc164f6..784471f 100644 --- a/vars/debian.yml +++ b/vars/debian.yml @@ -3,3 +3,5 @@ gitea_dependencies: - git - gnupg2 - xz-utils + +gitea_systemd_path: '/lib/systemd/system' diff --git a/vars/main.yml b/vars/main.yml index 70d6b20..cb466f6 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -23,6 +23,7 @@ gitea_variables: - "{{ ansible_os_family | lower }}-{{ ansible_distribution_major_version | lower }}.yml" - "{{ ansible_distribution | lower }}.yml" - "{{ ansible_os_family | lower }}.yml" + - 'os_fallback_defaults.yml' paths: - 'vars' @@ -62,5 +63,5 @@ transfer_custom_footer: - 'files/gitea_footer/extra_links_footer.tmpl' - 'files/extra_links_footer.tmpl' -playbook_version_number: 49 # should be int +playbook_version_number: 56 playbook_version_path: 'do1jlr.gitea.version' diff --git a/vars/os_fallback_defaults.yml b/vars/os_fallback_defaults.yml new file mode 100644 index 0000000..784471f --- /dev/null +++ b/vars/os_fallback_defaults.yml @@ -0,0 +1,7 @@ +--- +gitea_dependencies: + - git + - gnupg2 + - xz-utils + +gitea_systemd_path: '/lib/systemd/system' diff --git a/vars/redhat.yml b/vars/redhat.yml index 7c96415..393ab8d 100644 --- a/vars/redhat.yml +++ b/vars/redhat.yml @@ -3,3 +3,5 @@ gitea_dependencies: - git - gnupg2 - xz + +gitea_systemd_path: '/lib/systemd/system' diff --git a/vars/suse.yml b/vars/suse.yml index 027026e..157ba4d 100644 --- a/vars/suse.yml +++ b/vars/suse.yml @@ -3,3 +3,5 @@ gitea_dependencies: - git - gpg2 - xz + +gitea_systemd_path: '/etc/systemd/system'