gitlabform 6.1.0__tar.gz → 6.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/_releases.yml +12 -24
  2. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/build.yml +5 -5
  3. gitlabform-6.2.1/.github/workflows/codecov-upload.yml +104 -0
  4. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/pr-ci-workflow.yml +1 -35
  5. gitlabform-6.2.1/.github/workflows/prs-entrypoint-forks.yml +26 -0
  6. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/prs-entrypoint-main.yml +0 -8
  7. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/static-analysis.yml +2 -2
  8. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/tests-acceptance.yml +32 -23
  9. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/tests-unit.yml +15 -14
  10. gitlabform-6.2.1/.python-version +1 -0
  11. {gitlabform-6.1.0 → gitlabform-6.2.1}/PKG-INFO +1 -1
  12. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/changelog.md +40 -0
  13. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/contrib/workflows.md +8 -2
  14. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/configuration/groups.py +19 -33
  15. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/__init__.py +1 -0
  16. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/core.py +1 -1
  17. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_members_processor.py +4 -11
  18. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/files_processor.py +3 -5
  19. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/members_processor.py +3 -2
  20. gitlabform-6.2.1/gitlabform/processors/project/merge_requests_approval_rules.py +38 -0
  21. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/util.py +7 -0
  22. {gitlabform-6.1.0 → gitlabform-6.2.1}/pyproject.toml +12 -12
  23. {gitlabform-6.1.0 → gitlabform-6.2.1}/tbump.toml +2 -1
  24. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_merge_request_approval_rules.py +53 -0
  25. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_files.py +95 -0
  26. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_remote_mirrors.py +3 -3
  27. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_inheritance_break_subgroups.py +27 -0
  28. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/transform/test_access_level_transformer.py +31 -0
  29. gitlabform-6.2.1/tests/unit/processors/test_group_members_processor.py +54 -0
  30. gitlabform-6.2.1/tests/unit/processors/test_merge_requests_approval_rules_processor.py +120 -0
  31. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/test_utils.py +13 -1
  32. {gitlabform-6.1.0 → gitlabform-6.2.1}/uv.lock +269 -263
  33. gitlabform-6.1.0/.github/workflows/prs-entrypoint-forks.yml +0 -34
  34. gitlabform-6.1.0/.python-version +0 -1
  35. gitlabform-6.1.0/gitlabform/processors/project/merge_requests_approval_rules.py +0 -17
  36. {gitlabform-6.1.0 → gitlabform-6.2.1}/.coveragerc +0 -0
  37. {gitlabform-6.1.0 → gitlabform-6.2.1}/.dockerignore +0 -0
  38. {gitlabform-6.1.0 → gitlabform-6.2.1}/.git-blame-ignore-revs +0 -0
  39. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/CODEOWNERS +0 -0
  40. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  41. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  42. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/ISSUE_TEMPLATE/question-or-other-issue.md +0 -0
  43. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/actions/setup-uv-local/README.md +0 -0
  44. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/actions/setup-uv-local/action.yml +0 -0
  45. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/dependabot.yml +0 -0
  46. {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/_main.yml +0 -0
  47. {gitlabform-6.1.0 → gitlabform-6.2.1}/.gitignore +0 -0
  48. {gitlabform-6.1.0 → gitlabform-6.2.1}/.lgtm.yml +0 -0
  49. {gitlabform-6.1.0 → gitlabform-6.2.1}/.mypy.ini +0 -0
  50. {gitlabform-6.1.0 → gitlabform-6.2.1}/.overrides/gitlabform-logo-favicon.png +0 -0
  51. {gitlabform-6.1.0 → gitlabform-6.2.1}/.overrides/gitlabform-logo-favicon.svg +0 -0
  52. {gitlabform-6.1.0 → gitlabform-6.2.1}/CONTRIBUTING.md +0 -0
  53. {gitlabform-6.1.0 → gitlabform-6.2.1}/Dockerfile +0 -0
  54. {gitlabform-6.1.0 → gitlabform-6.2.1}/LICENSE +0 -0
  55. {gitlabform-6.1.0 → gitlabform-6.2.1}/README.md +0 -0
  56. {gitlabform-6.1.0 → gitlabform-6.2.1}/codecov.yml +0 -0
  57. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/__init__.py +0 -0
  58. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/common.py +0 -0
  59. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/docker.py +0 -0
  60. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/docs.py +0 -0
  61. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/env.py +0 -0
  62. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/gitlab/await-healthy.sh +0 -0
  63. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/gitlab/gitlab.rb +0 -0
  64. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/gitlab/healthcheck-and-setup.sh +0 -0
  65. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/gitlab/run_gitlab_in_docker.sh +0 -0
  66. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/gitlab/tests.Dockerfile +0 -0
  67. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/infra.py +0 -0
  68. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/main.py +0 -0
  69. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/package.py +0 -0
  70. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/qa.py +0 -0
  71. {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/release.py +0 -0
  72. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/automation.md +0 -0
  73. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/contrib/coding_guidelines.md +0 -0
  74. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/contrib/implementation_design.md +0 -0
  75. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/contrib/index.md +0 -0
  76. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/contrib/local_development.md +0 -0
  77. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/contrib/releases.md +0 -0
  78. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/features.md +0 -0
  79. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/Opencast-logo.png +0 -0
  80. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/egnyte-logo.svg +0 -0
  81. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/elastic-path-logo.svg +0 -0
  82. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/gitlabform-logo-square.png +0 -0
  83. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/gitlabform-logo.png +0 -0
  84. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/gitlabform-logo.svg +0 -0
  85. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/group-ldap-links-provider.png +0 -0
  86. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/liquidlight-logo.svg +0 -0
  87. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/roche-logo.png +0 -0
  88. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/stroeer-online-marketing-logo.svg +0 -0
  89. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/index.md +0 -0
  90. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/installation.md +0 -0
  91. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/archive_unarchive.md +0 -0
  92. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/avatar.md +0 -0
  93. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/badges.md +0 -0
  94. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/ci_cd_variables.md +0 -0
  95. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/deploy_keys.md +0 -0
  96. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/files.md +0 -0
  97. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/group_ldap_links.md +0 -0
  98. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/group_saml_links.md +0 -0
  99. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/index.md +0 -0
  100. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/integrations.md +0 -0
  101. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/job_token_scope.md +0 -0
  102. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/labels.md +0 -0
  103. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/members.md +0 -0
  104. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/merge_requests.md +0 -0
  105. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/pipeline_schedules.md +0 -0
  106. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/project_security_settings.md +0 -0
  107. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/project_transfer.md +0 -0
  108. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/protected_branches.md +0 -0
  109. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/protected_environments.md +0 -0
  110. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/push_mirrors.md +0 -0
  111. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/push_rules.md +0 -0
  112. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/resource_groups.md +0 -0
  113. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/settings.md +0 -0
  114. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/tags_protection.md +0 -0
  115. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/webhooks.md +0 -0
  116. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/requirements.md +0 -0
  117. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/running.md +0 -0
  118. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/similar_apps.md +0 -0
  119. {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/upgrade.md +0 -0
  120. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlab-config/config.yml +0 -0
  121. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlab-config/gitlab-config.md +0 -0
  122. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/__init__.py +0 -0
  123. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/configuration/__init__.py +0 -0
  124. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/configuration/common.py +0 -0
  125. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/configuration/core.py +0 -0
  126. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/configuration/projects.py +0 -0
  127. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/configuration/transform.py +0 -0
  128. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/constants.py +0 -0
  129. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/commits.py +0 -0
  130. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/group_badges.py +0 -0
  131. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/group_ldap_links.py +0 -0
  132. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/groups.py +0 -0
  133. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/merge_requests.py +0 -0
  134. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/pipelines.py +0 -0
  135. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/project_badges.py +0 -0
  136. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/project_deploy_keys.py +0 -0
  137. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/project_merge_requests_approvals.py +0 -0
  138. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/project_protected_environments.py +0 -0
  139. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/projects.py +0 -0
  140. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/python_gitlab.py +0 -0
  141. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/variables.py +0 -0
  142. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/lists/__init__.py +0 -0
  143. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/lists/filter.py +0 -0
  144. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/lists/groups.py +0 -0
  145. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/lists/projects.py +0 -0
  146. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/output.py +0 -0
  147. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/__init__.py +0 -0
  148. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/abstract_processor.py +0 -0
  149. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/application/__init__.py +0 -0
  150. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/application/application_settings_processor.py +0 -0
  151. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/defining_keys.py +0 -0
  152. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/__init__.py +0 -0
  153. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_badges_processor.py +0 -0
  154. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_hooks_processor.py +0 -0
  155. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_labels_processor.py +0 -0
  156. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_ldap_links_processor.py +0 -0
  157. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_protected_branches_processor.py +0 -0
  158. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_push_rules_processor.py +0 -0
  159. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_saml_links_processor.py +0 -0
  160. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_settings_processor.py +0 -0
  161. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_variables_processor.py +0 -0
  162. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/multiple_entities_processor.py +0 -0
  163. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/__init__.py +0 -0
  164. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/badges_processor.py +0 -0
  165. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/branches_processor.py +0 -0
  166. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/deploy_keys_processor.py +0 -0
  167. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/hooks_processor.py +0 -0
  168. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/integrations_processor.py +0 -0
  169. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/job_token_scope_processor.py +0 -0
  170. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/merge_requests_approvals.py +0 -0
  171. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/project_labels_processor.py +0 -0
  172. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/project_processor.py +0 -0
  173. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/project_push_rules_processor.py +0 -0
  174. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/project_security_settings.py +0 -0
  175. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/project_settings_processor.py +0 -0
  176. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/project_variables_processor.py +0 -0
  177. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/remote_mirrors_processor.py +0 -0
  178. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/resource_groups_processor.py +0 -0
  179. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/schedules_processor.py +0 -0
  180. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/tags_processor.py +0 -0
  181. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/shared/__init__.py +0 -0
  182. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/shared/protected_environments_processor.py +0 -0
  183. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/util/__init__.py +0 -0
  184. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/util/branch_protection.py +0 -0
  185. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/util/decorators.py +0 -0
  186. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/util/difference_logger.py +0 -0
  187. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/util/labels_processor.py +0 -0
  188. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/util/variables_processor.py +0 -0
  189. {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/run.py +0 -0
  190. {gitlabform-6.1.0 → gitlabform-6.2.1}/mkdocs.yml +0 -0
  191. {gitlabform-6.1.0 → gitlabform-6.2.1}/prek.toml +0 -0
  192. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/__init__.py +0 -0
  193. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/__init__.py +0 -0
  194. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/conftest.py +0 -0
  195. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_branches.py +0 -0
  196. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_branches_users_case_insensitive.py +0 -0
  197. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_group_ldap_links.py +0 -0
  198. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_group_protected_branches.py +0 -0
  199. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_group_push_rules.py +0 -0
  200. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_group_saml_links.py +0 -0
  201. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_group_settings.py +0 -0
  202. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_group_variables.py +0 -0
  203. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_merge_request_approvals_settings.py +0 -0
  204. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_protected_environments.py +0 -0
  205. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_push_rules.py +0 -0
  206. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_tags.py +0 -0
  207. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/__init__.py +0 -0
  208. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_application_settings.py +0 -0
  209. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_archive_project.py +0 -0
  210. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_badges.py +0 -0
  211. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_branches.py +0 -0
  212. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_deploy_keys.py +0 -0
  213. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_deploy_keys_all_projects.py +0 -0
  214. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_files_templates.py +0 -0
  215. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_avatar.py +0 -0
  216. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_badges.py +0 -0
  217. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_hooks.py +0 -0
  218. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_labels.py +0 -0
  219. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_members_case_insensitive.py +0 -0
  220. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_members_groups.py +0 -0
  221. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_members_users.py +0 -0
  222. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_settings.py +0 -0
  223. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_variables.py +0 -0
  224. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_hooks.py +0 -0
  225. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_integrations.py +0 -0
  226. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_job_token_scope.py +0 -0
  227. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_members.py +0 -0
  228. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_members_add_group.py +0 -0
  229. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_members_enforce.py +0 -0
  230. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_project_avatar.py +0 -0
  231. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_project_group_members_case_insensitive.py +0 -0
  232. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_project_labels.py +0 -0
  233. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_project_members_case_insensitve.py +0 -0
  234. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_project_settings.py +0 -0
  235. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_project_variables.py +0 -0
  236. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_resource_groups.py +0 -0
  237. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_running.py +0 -0
  238. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_scheduled_for_deletion_project.py +0 -0
  239. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_schedules.py +0 -0
  240. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_tags.py +0 -0
  241. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_token_from_config.py +0 -0
  242. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_transfer_project.py +0 -0
  243. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_wildcard_patterns.py +0 -0
  244. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/ultimate/test_group_members.py +0 -0
  245. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/ultimate/test_group_settings.py +0 -0
  246. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/ultimate/test_members.py +0 -0
  247. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/ultimate/test_project_security_settings.py +0 -0
  248. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/ultimate/test_project_settings.py +0 -0
  249. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/__init__.py +0 -0
  250. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/__init__.py +0 -0
  251. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_case_sensitivity.py +0 -0
  252. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_inheritance_break_projects_and_groups.py +0 -0
  253. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_inheritance_break_validation.py +0 -0
  254. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_projects_and_groups.py +0 -0
  255. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_skip_groups_skip_projects.py +0 -0
  256. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_subgroups.py +0 -0
  257. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_wildcard_patterns.py +0 -0
  258. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_yaml_version.py +0 -0
  259. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/transform/test_group_transformer.py +0 -0
  260. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/transform/test_implicit_name_transformer.py +0 -0
  261. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/transform/test_user_and_group_transformers.py +0 -0
  262. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/transform/test_user_transformer.py +0 -0
  263. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/gitlab/test_core.py +0 -0
  264. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/gitlab/test_python_gitlab.py +0 -0
  265. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/__init__.py +0 -0
  266. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_abstract_processor.py +0 -0
  267. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_abstract_processors.py +0 -0
  268. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_branches_processor.py +0 -0
  269. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_difference_logger.py +0 -0
  270. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_files_processor.py +0 -0
  271. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_group_protected_branches_processor.py +0 -0
  272. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_group_saml_links_processor.py +0 -0
  273. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_schedules_processor_extended_cron_pattern.py +0 -0
  274. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/test_access_levels.py +0 -0
  275. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/test_non_empty_configs_provider.py +0 -0
  276. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/test_parse_args.py +0 -0
  277. {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/test_projects_provider.py +0 -0
@@ -37,7 +37,7 @@ jobs:
37
37
  target_run_id: ${{ steps.validate.outputs.run_id }}
38
38
  steps:
39
39
  - name: Checkout Code
40
- uses: actions/checkout@v4
40
+ uses: actions/checkout@v7
41
41
 
42
42
  - name: Configure uv environment
43
43
  uses: ./.github/actions/setup-uv-local
@@ -64,17 +64,6 @@ jobs:
64
64
  MANUAL_UPSTREAM_RUN_ID: ${{ inputs.override_run_id }}
65
65
  run: uv run release gh-workflow-check
66
66
 
67
- # TODO: Remove this job when all the release jobs have been migrated
68
- # to consume build artifacts from Main workflow instead of rebuilding.
69
- build-release-artifacts:
70
- name: Build release artifacts
71
- if: ${{ needs.prep-release.outputs.is_valid_release == 'true' }}
72
- needs:
73
- - prep-release
74
- uses: ./.github/workflows/build.yml
75
- with:
76
- BRANCH_REF: ${{ needs.prep-release.outputs.semver_tag }}
77
-
78
67
  publish-docs:
79
68
  name: Publish Docs
80
69
  if: ${{ needs.prep-release.outputs.is_valid_release == 'true' }}
@@ -83,12 +72,12 @@ jobs:
83
72
  runs-on: ubuntu-latest
84
73
  steps:
85
74
  - name: Checkout repository
86
- uses: actions/checkout@v6
75
+ uses: actions/checkout@v7
87
76
  with:
88
77
  ref: ${{ needs.prep-release.outputs.semver_tag }}
89
78
  fetch-depth: 2
90
79
  - name: Download built documentation
91
- uses: actions/download-artifact@v4
80
+ uses: actions/download-artifact@v8
92
81
  with:
93
82
  run-id: ${{ needs.prep-release.outputs.target_run_id }}
94
83
  github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -120,7 +109,6 @@ jobs:
120
109
  if: ${{ needs.prep-release.outputs.is_valid_release == 'true' }}
121
110
  needs:
122
111
  - prep-release
123
- - build-release-artifacts
124
112
  runs-on: ubuntu-latest
125
113
  environment:
126
114
  name: pypi
@@ -129,7 +117,7 @@ jobs:
129
117
  id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
130
118
  steps:
131
119
  - name: Checkout repository
132
- uses: actions/checkout@v6
120
+ uses: actions/checkout@v7
133
121
  with:
134
122
  ref: ${{ needs.prep-release.outputs.semver_tag }}
135
123
  fetch-depth: 2
@@ -140,12 +128,13 @@ jobs:
140
128
  - name: Setup Python ${{ env.UV_PYTHON }} and install dependencies
141
129
  run: |
142
130
  uv sync --frozen --no-dev --group release
143
- # TODO: In a separate PR, consume the build artifact (package-dist) uploaded
144
- # in build-release-artifacts instead of rebuilding and verifying the package here.
145
- - name: Build and verify the package
146
- run: |
147
- uv run --no-sync package build
148
- uv run --no-sync package verify
131
+ - name: Download built package
132
+ uses: actions/download-artifact@v8
133
+ with:
134
+ run-id: ${{ needs.prep-release.outputs.target_run_id }}
135
+ github-token: ${{ secrets.GITHUB_TOKEN }}
136
+ name: package-dist
137
+ path: dist
149
138
  - name: Publish to PyPI
150
139
  run: |
151
140
  uv run --no-sync release pypi
@@ -155,14 +144,13 @@ jobs:
155
144
  if: ${{ needs.prep-release.outputs.is_valid_release == 'true' }}
156
145
  needs:
157
146
  - prep-release
158
- - build-release-artifacts
159
147
  - publish-to-pypi
160
148
  runs-on: ubuntu-latest
161
149
  steps:
162
150
  # TODO: In a separate PR, optimize docker image build to consume the built package artifact
163
151
  # (package-dist) instead of copying and rebuilding from source if applicable.
164
152
  - name: Checkout repository
165
- uses: actions/checkout@v6
153
+ uses: actions/checkout@v7
166
154
  with:
167
155
  ref: ${{ needs.prep-release.outputs.semver_tag }}
168
156
  - name: Docker metadata
@@ -16,7 +16,7 @@ jobs:
16
16
  runs-on: ubuntu-latest
17
17
  steps:
18
18
  - name: Checkout repository
19
- uses: actions/checkout@v6
19
+ uses: actions/checkout@v7
20
20
  with:
21
21
  ref: ${{ inputs.BRANCH_REF }}
22
22
  fetch-depth: 2
@@ -31,7 +31,7 @@ jobs:
31
31
  uv run --no-sync package build
32
32
  uv run --no-sync package verify
33
33
  - name: Upload package distribution
34
- uses: actions/upload-artifact@v4
34
+ uses: actions/upload-artifact@v7
35
35
  with:
36
36
  name: package-dist
37
37
  path: dist/*
@@ -41,7 +41,7 @@ jobs:
41
41
  runs-on: ubuntu-latest
42
42
  steps:
43
43
  - name: Checkout repository
44
- uses: actions/checkout@v6
44
+ uses: actions/checkout@v7
45
45
  with:
46
46
  ref: ${{ inputs.BRANCH_REF }}
47
47
  fetch-depth: 2
@@ -54,7 +54,7 @@ jobs:
54
54
  - name: Build documentation
55
55
  run: uv run --no-sync docs build
56
56
  - name: Upload docs site
57
- uses: actions/upload-artifact@v4
57
+ uses: actions/upload-artifact@v7
58
58
  with:
59
59
  name: docs-site
60
60
  path: site
@@ -70,7 +70,7 @@ jobs:
70
70
  runs-on: ${{ matrix.os }}
71
71
  steps:
72
72
  - name: Checkout repository
73
- uses: actions/checkout@v6
73
+ uses: actions/checkout@v7
74
74
  with:
75
75
  ref: ${{ inputs.BRANCH_REF }}
76
76
  fetch-depth: 2
@@ -0,0 +1,104 @@
1
+ name: "Codecov Upload"
2
+
3
+ on:
4
+ workflow_run:
5
+ workflows:
6
+ - "CI - PRs"
7
+ - "CI - Acceptance Tests"
8
+ types:
9
+ - completed
10
+
11
+ permissions:
12
+ actions: read
13
+ contents: read
14
+
15
+ jobs:
16
+ upload-unit:
17
+ name: "Upload unit coverage (${{ matrix.python-version }})"
18
+ if: ${{ github.event.workflow_run.name == 'CI - PRs' && github.event.workflow_run.event == 'pull_request' }}
19
+ runs-on: ubuntu-latest
20
+ strategy:
21
+ fail-fast: false
22
+ matrix:
23
+ python-version: ["3.14", "3.12"]
24
+ steps:
25
+ - name: Download coverage artifact
26
+ uses: actions/download-artifact@v8
27
+ with:
28
+ name: coverage-${{ matrix.python-version }}
29
+ run-id: ${{ github.event.workflow_run.id }}
30
+ github-token: ${{ github.token }}
31
+ - name: Read PR metadata
32
+ id: pr
33
+ run: |
34
+ pr=$(jq -r '.pr // empty' pr-info.json)
35
+ sha=$(jq -r '.sha // empty' pr-info.json)
36
+ if [[ "$pr" =~ ^[0-9]+$ ]]; then
37
+ echo "pr=$pr" >> "$GITHUB_OUTPUT"
38
+ fi
39
+ if [[ "$sha" =~ ^[a-f0-9]{40}$ ]]; then
40
+ echo "sha=$sha" >> "$GITHUB_OUTPUT"
41
+ fi
42
+ - name: Upload coverage to Codecov
43
+ uses: Wandalen/wretry.action@v3
44
+ with:
45
+ action: codecov/codecov-action@v3
46
+ with: |
47
+ name: unit-tests-${{ matrix.python-version }}
48
+ flags: unittests
49
+ fail_ci_if_error: true
50
+ token: ${{ secrets.CODECOV_TOKEN }}
51
+ files: coverage.xml
52
+ override_pr: ${{ steps.pr.outputs.pr }}
53
+ override_commit: ${{ steps.pr.outputs.sha }}
54
+ attempt_limit: 5
55
+ attempt_delay: 10000
56
+
57
+ upload-acceptance:
58
+ name: "Upload acceptance coverage (${{ matrix.name }})"
59
+ if: ${{ github.event.workflow_run.name == 'CI - Acceptance Tests' && github.event.workflow_run.event == 'pull_request_target' }}
60
+ runs-on: ubuntu-latest
61
+ strategy:
62
+ fail-fast: false
63
+ matrix:
64
+ include:
65
+ - artifact: coverage-standard-ce
66
+ name: codecov-acceptance-test-standard-ce
67
+ - artifact: coverage-standard-ee
68
+ name: codecov-acceptance-test-standard-ee
69
+ - artifact: coverage-licensed-premium
70
+ name: codecov-acceptance-test-premium
71
+ - artifact: coverage-licensed-ultimate
72
+ name: codecov-acceptance-test-ultimate
73
+ steps:
74
+ - name: Download coverage artifact
75
+ uses: actions/download-artifact@v8
76
+ with:
77
+ name: ${{ matrix.artifact }}
78
+ run-id: ${{ github.event.workflow_run.id }}
79
+ github-token: ${{ github.token }}
80
+ - name: Read PR metadata
81
+ id: pr
82
+ run: |
83
+ pr=$(jq -r '.pr // empty' pr-info.json)
84
+ sha=$(jq -r '.sha // empty' pr-info.json)
85
+ if [[ "$pr" =~ ^[0-9]+$ ]]; then
86
+ echo "pr=$pr" >> "$GITHUB_OUTPUT"
87
+ fi
88
+ if [[ "$sha" =~ ^[a-f0-9]{40}$ ]]; then
89
+ echo "sha=$sha" >> "$GITHUB_OUTPUT"
90
+ fi
91
+ - name: Upload coverage to Codecov
92
+ uses: Wandalen/wretry.action@v3
93
+ with:
94
+ action: codecov/codecov-action@v3
95
+ with: |
96
+ name: ${{ matrix.name }}
97
+ flags: integration
98
+ fail_ci_if_error: true
99
+ token: ${{ secrets.CODECOV_TOKEN }}
100
+ files: coverage.xml
101
+ override_pr: ${{ steps.pr.outputs.pr }}
102
+ override_commit: ${{ steps.pr.outputs.sha }}
103
+ attempt_limit: 5
104
+ attempt_delay: 10000
@@ -1,12 +1,5 @@
1
1
  name: "CI - Build · Lint · Tests"
2
2
 
3
- # Reusable workflow containing the actual CI jobs for pull request validation.
4
- # This file is called by prs-entrypoint.yml and is intentionally separated so that
5
- # event/routing logic stays in the entrypoint while the CI job set remains reusable.
6
-
7
- # This reusable workflow does not receive secrets automatically from the PR event.
8
- # The caller workflow (prs-entrypoint.yml) must explicitly pass secrets when calling it.
9
-
10
3
  on:
11
4
  workflow_call:
12
5
  inputs:
@@ -33,15 +26,6 @@ jobs:
33
26
  uses: ./.github/workflows/tests-unit.yml
34
27
  with:
35
28
  BRANCH_REF: ${{ inputs.BRANCH_REF }}
36
- secrets: inherit
37
-
38
- tests-acceptance:
39
- name: Acceptance Tests
40
- uses: ./.github/workflows/tests-acceptance.yml
41
- with:
42
- BRANCH_REF: ${{ inputs.BRANCH_REF }}
43
- environment: Integrate Pull Request
44
- secrets: inherit
45
29
 
46
30
  analyze:
47
31
  name: Analyze (${{ matrix.language }})
@@ -82,7 +66,7 @@ jobs:
82
66
  # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
83
67
  steps:
84
68
  - name: Checkout repository
85
- uses: actions/checkout@v6
69
+ uses: actions/checkout@v7
86
70
  with:
87
71
  ref: ${{ inputs.BRANCH_REF }}
88
72
 
@@ -92,7 +76,6 @@ jobs:
92
76
  # - name: Setup runtime (example)
93
77
  # uses: actions/setup-example@v1
94
78
 
95
- # Initializes the CodeQL tools for scanning.
96
79
  - name: Initialize CodeQL
97
80
  uses: github/codeql-action/init@v4
98
81
  with:
@@ -105,23 +88,6 @@ jobs:
105
88
  # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
106
89
  # queries: security-extended,security-and-quality
107
90
 
108
- # If the analyze step fails for one of the languages you are analyzing with
109
- # "We were unable to automatically build your code", modify the matrix above
110
- # to set the build mode to "manual" for that language. Then modify this step
111
- # to build your code.
112
- # ℹ️ Command-line programs to run using the OS shell.
113
- # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
114
- - name: Run manual build steps
115
- if: matrix.build-mode == 'manual'
116
- shell: bash
117
- run: |
118
- echo 'If you are using a "manual" build mode for one or more of the' \
119
- 'languages you are analyzing, replace this with the commands to build' \
120
- 'your code, for example:'
121
- echo ' make bootstrap'
122
- echo ' make release'
123
- exit 1
124
-
125
91
  - name: Perform CodeQL Analysis
126
92
  uses: github/codeql-action/analyze@v4
127
93
  with:
@@ -0,0 +1,26 @@
1
+ name: "CI - Acceptance Tests"
2
+
3
+ permissions:
4
+ actions: read
5
+ contents: read
6
+ concurrency:
7
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
8
+ cancel-in-progress: true
9
+
10
+ on:
11
+ pull_request_target:
12
+ branches:
13
+ - main
14
+
15
+ jobs:
16
+ tests-acceptance:
17
+ name: "Acceptance Tests"
18
+ uses: ./.github/workflows/tests-acceptance.yml
19
+ permissions:
20
+ actions: read
21
+ contents: read
22
+ packages: read
23
+ with:
24
+ BRANCH_REF: ${{ github.event.pull_request.head.sha }}
25
+ environment: Integrate Pull Request
26
+ secrets: inherit
@@ -1,13 +1,8 @@
1
1
  name: "CI - PRs"
2
2
 
3
- # This workflow is the entrypoint for pull requests opened from host repository.
4
- # Fork PRs are handled by prs-entrypoint-forks.yml using pull_request_target.
5
- # It forwards the branch SHA and explicit secrets to the reusable workflow.
6
-
7
3
  permissions:
8
4
  actions: read
9
5
  contents: read
10
- pull-requests: write
11
6
  concurrency:
12
7
  group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
13
8
  cancel-in-progress: true
@@ -20,14 +15,11 @@ on:
20
15
  jobs:
21
16
  pr_jobs:
22
17
  name: "Pipeline"
23
- # github.event.pull_request object defined here: https://docs.github.com/en/rest/pulls/pulls?apiVersion=2026-03-10#get-a-pull-request
24
- if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
25
18
  uses: ./.github/workflows/pr-ci-workflow.yml
26
19
  permissions:
27
20
  actions: read
28
21
  contents: read
29
22
  packages: read
30
- pull-requests: write
31
23
  security-events: write
32
24
  with:
33
25
  BRANCH_REF: ${{ github.event.pull_request.head.sha }}
@@ -20,7 +20,7 @@ jobs:
20
20
  runs-on: ubuntu-latest
21
21
  steps:
22
22
  - name: Checkout repository
23
- uses: actions/checkout@v6
23
+ uses: actions/checkout@v7
24
24
  with:
25
25
  ref: ${{ inputs.BRANCH_REF }}
26
26
  - name: Configure uv environment
@@ -37,7 +37,7 @@ jobs:
37
37
  check: [black, mypy, bandit]
38
38
  steps:
39
39
  - name: Checkout repository
40
- uses: actions/checkout@v6
40
+ uses: actions/checkout@v7
41
41
  with:
42
42
  ref: ${{ inputs.BRANCH_REF }}
43
43
  fetch-depth: 2
@@ -15,12 +15,9 @@ on:
15
15
  required: false
16
16
  GITLAB_EE_ULTIMATE_LICENSE:
17
17
  required: false
18
- CODECOV_TOKEN:
19
- required: true
20
18
 
21
19
  permissions:
22
20
  contents: read
23
- actions: read # Required by codecov/codecov-action
24
21
 
25
22
  jobs:
26
23
  acceptance-standard:
@@ -32,10 +29,11 @@ jobs:
32
29
  fail-fast: false
33
30
  steps:
34
31
  - name: Checkout repository
35
- uses: actions/checkout@v6
32
+ uses: actions/checkout@v7
36
33
  with:
37
34
  ref: ${{ inputs.BRANCH_REF }}
38
35
  fetch-depth: 2
36
+ allow-unsafe-pr-checkout: true
39
37
  - name: Configure uv environment
40
38
  uses: ./.github/actions/setup-uv-local
41
39
  - name: Install dependencies
@@ -44,16 +42,21 @@ jobs:
44
42
  run: uv run --no-sync gitlab-local up --gitlab-flavor ${{ matrix.flavor }}
45
43
  - name: Run Standard acceptance tests for ${{ matrix.flavor }} flavor
46
44
  run: uv run --no-sync qa test tests/acceptance/standard --cov=. --cov-report=xml --durations=0 --reruns 3 --reruns-delay 10 --log-cli-level=WARNING
47
- - name: Upload coverage
48
- uses: Wandalen/wretry.action@v3
45
+ - name: Save PR metadata
46
+ env:
47
+ PR_NUMBER: ${{ github.event.pull_request.number }}
48
+ PR_SHA: ${{ github.event.pull_request.head.sha }}
49
+ run: |
50
+ printf '{"pr": %s, "sha": "%s"}\n' "$PR_NUMBER" "$PR_SHA" > pr-info.json
51
+ - name: Upload coverage artifact
52
+ uses: actions/upload-artifact@v7
49
53
  with:
50
- action: codecov/codecov-action@v3
51
- with: |
52
- name: codecov-acceptance-test-standard-${{ matrix.flavor }}
53
- flags: integration
54
- token: ${{ secrets.CODECOV_TOKEN }}
55
- attempt_limit: 5
56
- attempt_delay: 10000
54
+ name: coverage-standard-${{ matrix.flavor }}
55
+ path: |
56
+ coverage.xml
57
+ pr-info.json
58
+ if-no-files-found: error
59
+ retention-days: 1
57
60
 
58
61
  acceptance-licensed:
59
62
  name: "GitLab ${{ matrix.tier == 'premium' && 'Premium' || 'Ultimate' }}"
@@ -65,10 +68,11 @@ jobs:
65
68
  fail-fast: false
66
69
  steps:
67
70
  - name: Checkout repository
68
- uses: actions/checkout@v6
71
+ uses: actions/checkout@v7
69
72
  with:
70
73
  ref: ${{ inputs.BRANCH_REF }}
71
74
  fetch-depth: 2
75
+ allow-unsafe-pr-checkout: true
72
76
  - name: Configure uv environment
73
77
  uses: ./.github/actions/setup-uv-local
74
78
  - name: Install dependencies
@@ -79,13 +83,18 @@ jobs:
79
83
  run: uv run --no-sync gitlab-local up
80
84
  - name: Run acceptance Tests for ${{ matrix.tier }} features
81
85
  run: uv run --no-sync qa test tests/acceptance/${{ matrix.tier }} --cov=. --cov-report=xml --durations=0 --reruns 3 --reruns-delay 10 --log-cli-level=WARNING
82
- - name: Upload coverage
83
- uses: Wandalen/wretry.action@v3
86
+ - name: Save PR metadata
87
+ env:
88
+ PR_NUMBER: ${{ github.event.pull_request.number }}
89
+ PR_SHA: ${{ github.event.pull_request.head.sha }}
90
+ run: |
91
+ printf '{"pr": %s, "sha": "%s"}\n' "$PR_NUMBER" "$PR_SHA" > pr-info.json
92
+ - name: Upload coverage artifact
93
+ uses: actions/upload-artifact@v7
84
94
  with:
85
- action: codecov/codecov-action@v3
86
- with: |
87
- name: codecov-acceptance-test-${{ matrix.tier }}
88
- flags: integration
89
- token: ${{ secrets.CODECOV_TOKEN }}
90
- attempt_limit: 5
91
- attempt_delay: 10000
95
+ name: coverage-licensed-${{ matrix.tier }}
96
+ path: |
97
+ coverage.xml
98
+ pr-info.json
99
+ if-no-files-found: error
100
+ retention-days: 1
@@ -7,9 +7,6 @@ on:
7
7
  BRANCH_REF:
8
8
  type: string
9
9
  required: true
10
- secrets:
11
- CODECOV_TOKEN:
12
- required: true
13
10
 
14
11
  permissions:
15
12
  contents: read
@@ -24,7 +21,7 @@ jobs:
24
21
  python-version: ["3.14", "3.12"]
25
22
  steps:
26
23
  - name: Checkout repository
27
- uses: actions/checkout@v6
24
+ uses: actions/checkout@v7
28
25
  with:
29
26
  ref: ${{ inputs.BRANCH_REF }}
30
27
  fetch-depth: 2
@@ -36,14 +33,18 @@ jobs:
36
33
  run: uv sync --frozen --no-dev --group test
37
34
  - name: Run unit tests
38
35
  run: uv run --no-sync qa test tests/unit --cov=. --cov-report=xml --log-cli-level=WARNING
39
- - name: Upload coverage to Codecov
40
- uses: Wandalen/wretry.action@v3
36
+ - name: Save PR metadata
37
+ env:
38
+ PR_NUMBER: ${{ github.event.pull_request.number }}
39
+ PR_SHA: ${{ github.event.pull_request.head.sha }}
40
+ run: |
41
+ printf '{"pr": %s, "sha": "%s"}\n' "$PR_NUMBER" "$PR_SHA" > pr-info.json
42
+ - name: Upload coverage artifact
43
+ uses: actions/upload-artifact@v7
41
44
  with:
42
- action: codecov/codecov-action@v3
43
- with: |
44
- name: unit-tests-${{ matrix.python-version }}
45
- flags: unittests
46
- fail_ci_if_error: true
47
- token: ${{ secrets.CODECOV_TOKEN }}
48
- attempt_limit: 5
49
- attempt_delay: 10000
45
+ name: coverage-${{ matrix.python-version }}
46
+ path: |
47
+ coverage.xml
48
+ pr-info.json
49
+ if-no-files-found: error
50
+ retention-days: 1
@@ -0,0 +1 @@
1
+ 3.14.6
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gitlabform
3
- Version: 6.1.0
3
+ Version: 6.2.1
4
4
  Summary: 🏗 Specialized configuration as a code tool for GitLab projects, groups and more using hierarchical configuration written in YAML
5
5
  Project-URL: Homepage, https://gitlabform.github.io/gitlabform/
6
6
  Project-URL: Repository, https://github.com/gitlabform/gitlabform.git
@@ -6,6 +6,46 @@ For details on how to migrate between major versions, please refer to the [upgra
6
6
 
7
7
  ---
8
8
 
9
+ ## 6.2.1
10
+
11
+ ### Bug Fixes
12
+
13
+ * catch GitlabCreateError and GitlabDeleteError when modifying files on protected branches [#1361](https://github.com/gitlabform/gitlabform/pull/1361). ([haijeploeg](https://github.com/haijeploeg))
14
+ * fix merge_request_approval_rules to stop redundant edit calls on unchanged rules [#1350](https://github.com/gitlabform/gitlabform/pull/1350). ([rickbrouwer](https://github.com/rickbrouwer))
15
+ * use add instead of delete in commit message for new files to reflect what actually happened in commit history [#1363](https://github.com/gitlabform/gitlabform/pull/1363). ([rickbrouwer](https://github.com/rickbrouwer))
16
+
17
+ ### Build
18
+
19
+ * consume package artifact from main workflow in pypi release [#1327](https://github.com/gitlabform/gitlabform/pull/1327). ([amimas](https://github.com/amimas))
20
+
21
+ ### Dependencies
22
+
23
+ * Update various dependencies to newer versions.
24
+
25
+ Thanks to all the contributors of this release!
26
+
27
+ ## 6.2.0
28
+
29
+ ### Features
30
+
31
+ * Add support for "Security Manager role" [issue: #1329](https://github.com/gitlabform/gitlabform/issues/1329), [#1342](https://github.com/gitlabform/gitlabform/pull/1342). ([rickbrouwer](https://github.com/rickbrouwer))
32
+
33
+ ### Bug Fixes
34
+
35
+ * don't re-validate inherited config in subgroup lookup [#1318](https://github.com/gitlabform/gitlabform/pull/1318). ([rickbrouwer](https://github.com/rickbrouwer))
36
+ * format group member expiry dates [#1349](https://github.com/gitlabform/gitlabform/pull/1349). ([w3lld1](https://github.com/w3lld1))
37
+ * escape regex as a raw string to prevent errors in loges [#1351](https://github.com/gitlabform/gitlabform/pull/1351). ([rickbrouwer](https://github.com/rickbrouwer))
38
+
39
+ ### Documentation
40
+
41
+ * update license renewal instructions (#1358)[https://github.com/gitlabform/gitlabform/pull/1358]. ([rickbrouwer](https://github.com/rickbrouwer))
42
+
43
+ ### Dependencies
44
+
45
+ * Update various dependencies to newer versions.
46
+
47
+ Thanks to all the contributors of this release!
48
+
9
49
  ## 6.1.0
10
50
 
11
51
  ### Features
@@ -16,6 +16,12 @@ only on the main repository.
16
16
 
17
17
  ## License management
18
18
 
19
- Requesting new Premium/Ultimate Licenses is done via GitLab's Contribution to EE process [here](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributing-to-the-gitlab-enterprise-edition-ee).
19
+ Requesting new Premium/Ultimate Licenses is done via GitLab's Contribution to EE process [here](https://handbook.gitlab.com/handbook/marketing/developer-relations/engineering/community-contributors-workflows/#contributing-to-the-gitlab-enterprise-edition-ee).
20
20
 
21
- As a Maintainer, when you receive a new license key, please add/update it to the GitHub Repository Secrets.
21
+ To request a license, create an issue via the [Wider Community Contributor License Request](https://gitlab.com/gitlab-org/developer-relations/contributor-success/team-task/-/issues/new?issuable_template=contributor_ee_license_request) template, and select 'New Request'. Use the following text in the request:
22
+
23
+ > As a Maintainer of GitlabForm, I like to requesting new Premium and Ultimate License for https://github.com/gitlabform/gitlabform.
24
+
25
+ Note that the Premium and Ultimate licenses are sent separately, and there may be some time between receiving them.
26
+
27
+ As a Maintainer, when you receive a new license key, please add/update it to the GitHub Repository Secrets.