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.
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/_releases.yml +12 -24
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/build.yml +5 -5
- gitlabform-6.2.1/.github/workflows/codecov-upload.yml +104 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/pr-ci-workflow.yml +1 -35
- gitlabform-6.2.1/.github/workflows/prs-entrypoint-forks.yml +26 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/prs-entrypoint-main.yml +0 -8
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/static-analysis.yml +2 -2
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/tests-acceptance.yml +32 -23
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/tests-unit.yml +15 -14
- gitlabform-6.2.1/.python-version +1 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/PKG-INFO +1 -1
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/changelog.md +40 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/contrib/workflows.md +8 -2
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/configuration/groups.py +19 -33
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/__init__.py +1 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/core.py +1 -1
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_members_processor.py +4 -11
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/files_processor.py +3 -5
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/members_processor.py +3 -2
- gitlabform-6.2.1/gitlabform/processors/project/merge_requests_approval_rules.py +38 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/util.py +7 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/pyproject.toml +12 -12
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tbump.toml +2 -1
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_merge_request_approval_rules.py +53 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_files.py +95 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_remote_mirrors.py +3 -3
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_inheritance_break_subgroups.py +27 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/transform/test_access_level_transformer.py +31 -0
- gitlabform-6.2.1/tests/unit/processors/test_group_members_processor.py +54 -0
- gitlabform-6.2.1/tests/unit/processors/test_merge_requests_approval_rules_processor.py +120 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/test_utils.py +13 -1
- {gitlabform-6.1.0 → gitlabform-6.2.1}/uv.lock +269 -263
- gitlabform-6.1.0/.github/workflows/prs-entrypoint-forks.yml +0 -34
- gitlabform-6.1.0/.python-version +0 -1
- gitlabform-6.1.0/gitlabform/processors/project/merge_requests_approval_rules.py +0 -17
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.coveragerc +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.dockerignore +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.git-blame-ignore-revs +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/CODEOWNERS +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/ISSUE_TEMPLATE/question-or-other-issue.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/actions/setup-uv-local/README.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/actions/setup-uv-local/action.yml +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/dependabot.yml +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.github/workflows/_main.yml +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.gitignore +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.lgtm.yml +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.mypy.ini +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.overrides/gitlabform-logo-favicon.png +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/.overrides/gitlabform-logo-favicon.svg +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/CONTRIBUTING.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/Dockerfile +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/LICENSE +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/README.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/codecov.yml +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/common.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/docker.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/docs.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/env.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/gitlab/await-healthy.sh +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/gitlab/gitlab.rb +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/gitlab/healthcheck-and-setup.sh +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/gitlab/run_gitlab_in_docker.sh +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/gitlab/tests.Dockerfile +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/infra.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/main.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/package.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/qa.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/dev/release.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/automation.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/contrib/coding_guidelines.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/contrib/implementation_design.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/contrib/index.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/contrib/local_development.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/contrib/releases.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/features.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/Opencast-logo.png +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/egnyte-logo.svg +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/elastic-path-logo.svg +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/gitlabform-logo-square.png +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/gitlabform-logo.png +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/gitlabform-logo.svg +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/group-ldap-links-provider.png +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/liquidlight-logo.svg +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/roche-logo.png +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/images/stroeer-online-marketing-logo.svg +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/index.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/installation.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/archive_unarchive.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/avatar.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/badges.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/ci_cd_variables.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/deploy_keys.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/files.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/group_ldap_links.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/group_saml_links.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/index.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/integrations.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/job_token_scope.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/labels.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/members.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/merge_requests.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/pipeline_schedules.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/project_security_settings.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/project_transfer.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/protected_branches.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/protected_environments.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/push_mirrors.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/push_rules.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/resource_groups.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/settings.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/tags_protection.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/reference/webhooks.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/requirements.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/running.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/similar_apps.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/docs/upgrade.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlab-config/config.yml +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlab-config/gitlab-config.md +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/configuration/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/configuration/common.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/configuration/core.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/configuration/projects.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/configuration/transform.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/constants.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/commits.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/group_badges.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/group_ldap_links.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/groups.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/merge_requests.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/pipelines.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/project_badges.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/project_deploy_keys.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/project_merge_requests_approvals.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/project_protected_environments.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/projects.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/python_gitlab.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/gitlab/variables.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/lists/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/lists/filter.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/lists/groups.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/lists/projects.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/output.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/abstract_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/application/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/application/application_settings_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/defining_keys.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_badges_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_hooks_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_labels_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_ldap_links_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_protected_branches_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_push_rules_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_saml_links_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_settings_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/group/group_variables_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/multiple_entities_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/badges_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/branches_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/deploy_keys_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/hooks_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/integrations_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/job_token_scope_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/merge_requests_approvals.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/project_labels_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/project_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/project_push_rules_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/project_security_settings.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/project_settings_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/project_variables_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/remote_mirrors_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/resource_groups_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/schedules_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/project/tags_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/shared/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/shared/protected_environments_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/util/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/util/branch_protection.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/util/decorators.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/util/difference_logger.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/util/labels_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/processors/util/variables_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/gitlabform/run.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/mkdocs.yml +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/prek.toml +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/conftest.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_branches.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_branches_users_case_insensitive.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_group_ldap_links.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_group_protected_branches.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_group_push_rules.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_group_saml_links.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_group_settings.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_group_variables.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_merge_request_approvals_settings.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_protected_environments.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_push_rules.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/premium/test_tags.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_application_settings.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_archive_project.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_badges.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_branches.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_deploy_keys.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_deploy_keys_all_projects.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_files_templates.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_avatar.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_badges.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_hooks.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_labels.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_members_case_insensitive.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_members_groups.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_members_users.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_settings.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_group_variables.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_hooks.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_integrations.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_job_token_scope.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_members.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_members_add_group.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_members_enforce.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_project_avatar.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_project_group_members_case_insensitive.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_project_labels.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_project_members_case_insensitve.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_project_settings.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_project_variables.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_resource_groups.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_running.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_scheduled_for_deletion_project.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_schedules.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_tags.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_token_from_config.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_transfer_project.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/standard/test_wildcard_patterns.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/ultimate/test_group_members.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/ultimate/test_group_settings.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/ultimate/test_members.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/ultimate/test_project_security_settings.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/acceptance/ultimate/test_project_settings.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_case_sensitivity.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_inheritance_break_projects_and_groups.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_inheritance_break_validation.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_projects_and_groups.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_skip_groups_skip_projects.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_subgroups.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_wildcard_patterns.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/test_yaml_version.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/transform/test_group_transformer.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/transform/test_implicit_name_transformer.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/transform/test_user_and_group_transformers.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/configuration/transform/test_user_transformer.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/gitlab/test_core.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/gitlab/test_python_gitlab.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/__init__.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_abstract_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_abstract_processors.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_branches_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_difference_logger.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_files_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_group_protected_branches_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_group_saml_links_processor.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/processors/test_schedules_processor_extended_cron_pattern.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/test_access_levels.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/test_non_empty_configs_provider.py +0 -0
- {gitlabform-6.1.0 → gitlabform-6.2.1}/tests/unit/test_parse_args.py +0 -0
- {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@
|
|
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@
|
|
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@
|
|
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@
|
|
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
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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:
|
|
48
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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@
|
|
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:
|
|
83
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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@
|
|
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:
|
|
40
|
-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
|
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/
|
|
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
|
-
|
|
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.
|