cici-tools 0.15.0__tar.gz → 0.16.0__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.
- cici_tools-0.16.0/.cici/README.md.j2 +97 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/PKG-INFO +1 -1
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/_version.py +3 -3
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/cli/bundle.py +35 -7
- cici_tools-0.16.0/cici/config/project/serializers.py +192 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/providers/gitlab/serializers.py +11 -17
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici_tools.egg-info/PKG-INFO +1 -1
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici_tools.egg-info/SOURCES.txt +50 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/pyproject.toml +3 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/requirements.txt +5 -5
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/.gitlab-ci.yml +248 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/config.yaml +181 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-development-apply.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-development-auto-apply.yaml +6 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-development-destroy.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-development-plan.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-development-validate.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-fmt.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-module-build.yaml +3 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-module-release.yaml +3 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-production-apply.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-production-auto-apply.yaml +6 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-production-destroy.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-production-plan.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-production-trivy.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-production-validate.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-staging-apply.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-staging-auto-apply.yaml +6 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-staging-destroy.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-staging-plan.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-staging-trivy.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-staging-validate.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-trivy.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-validate.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/.cici/targets/tofu-development-trivy.yaml +4 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-development-apply.yml +59 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-development-auto-apply.yml +64 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-development-destroy.yml +59 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-development-plan.yml +62 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-development-trivy.yml +57 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-development-validate.yml +52 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-fmt.yml +41 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-module-build.yml +58 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-module-release.yml +42 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-production-apply.yml +59 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-production-auto-apply.yml +64 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-production-destroy.yml +59 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-production-plan.yml +62 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-production-trivy.yml +57 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-production-validate.yml +52 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-staging-apply.yml +59 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-staging-auto-apply.yml +64 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-staging-destroy.yml +59 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-staging-plan.yml +62 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-staging-trivy.yml +57 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-staging-validate.yml +52 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-trivy.yml +57 -0
- cici_tools-0.16.0/tests/fixtures/gitlab/targets-dir/opentofu-validate.yml +52 -0
- cici_tools-0.16.0/tests/test_resolve_targets.py +209 -0
- cici_tools-0.15.0/cici/config/project/serializers.py +0 -107
- {cici_tools-0.15.0 → cici_tools-0.16.0}/.cici/.gitlab-ci.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/.cici/config.yaml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/.dockerignore +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/.gitignore +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/.gitlab-ci.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/.licenserc.yaml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/.pre-commit-config.yaml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/.pre-commit-hooks.yaml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/.prettierignore +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/.prettierrc.yaml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/.secrets.baseline +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/Dockerfile +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/LICENSE +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/MANIFEST.in +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/NOTICE +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/README.md +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/__init__.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/__main__.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/cli/__init__.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/cli/readme.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/cli/schema.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/cli/update.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/config/__init__.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/config/project/__init__.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/config/project/models.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/config/user.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/constants.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/exceptions.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/main.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/paths.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/providers/__init__.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/providers/gitlab/__init__.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/providers/gitlab/constants.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/providers/gitlab/models.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/providers/gitlab/normalizers.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/providers/gitlab/utils.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/providers/gitlab/yaml_style.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/py.typed +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/schema/LICENSE.gitlab +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/schema/__init__.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/schema/gitlab-ci.json +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/templates/README.md.j2 +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/templates/__init__.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/templates/brief.md.j2 +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/templates/description.md.j2 +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/templates/group-list.j2 +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/templates/groups.md.j2 +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/templates/target-list.md.j2 +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/templates/target-table.md.j2 +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/templates/targets.md.j2 +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/templates/variable-list.md.j2 +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/templates/variables.md.j2 +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici/utils.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici-bundle.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici-readme.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici-update.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici_tools.egg-info/dependency_links.txt +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici_tools.egg-info/entry_points.txt +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici_tools.egg-info/requires.txt +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/cici_tools.egg-info/top_level.txt +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/docs/bundle.md +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/docs/config-file.md +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/docs/getting-started.md +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/docs/gitlab-includes.md +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/docs/index.md +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/docs/install.md +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/docs/readme.md +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/docs/style.css +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/docs/update.md +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/makefile +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/mkdocs.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/scripts/gen-api-doc.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/setup.cfg +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/extends/.cici/.gitlab-ci.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/extends/simple-job.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/helm/.cici/.gitlab-ci.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/helm/helm-cm-push.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/helm/helm-docs.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/helm/helm-lint.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/.cici/.gitlab-ci.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/.cici/config.yaml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-development-apply.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-development-auto-apply.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-development-destroy.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-development-plan.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-development-trivy.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-development-validate.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-fmt.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-module-build.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-module-release.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-production-apply.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-production-auto-apply.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-production-destroy.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-production-plan.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-production-trivy.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-production-validate.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-staging-apply.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-staging-auto-apply.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-staging-destroy.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-staging-plan.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-staging-trivy.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-staging-validate.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-trivy.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/job-variables/opentofu-validate.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/library-validator/.cici/README.md.j2 +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/library-validator/.cici/config.yaml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/library-validator/README.md +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/list-anchors/.cici/.gitlab-ci.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/list-anchors/install.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/nested-extends/.cici/.gitlab-ci.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/nested-extends/simple-job.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/reports/.cici/.gitlab-ci.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/reports/reports-container-scanning.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/reports/reports-coverage.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/reports/reports-junit.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/reports/reports-terraform.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/service-key/.cici/.gitlab-ci.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/service-key/.cici/config.yaml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/service-key/container-docker-multiarch-amd64.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/service-key/container-docker-multiarch-arm32v6.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/service-key/container-docker-multiarch-arm32v7.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/service-key/container-docker-multiarch-arm64v8.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/service-key/container-docker-multiarch-i386.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/service-key/container-docker-multiarch-manifest.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/service-key/container-docker-multiarch.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/service-key/container-docker.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/service-key/container-hadolint.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/service-key/container-trivy.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/simple/.cici/.gitlab-ci.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/simple/simple-job.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/stages/.cici/.gitlab-ci.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/stages/simple-job.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/terraform/.cici/.gitlab-ci.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/terraform/terraform-fmt.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/terraform/terraform-production-apply.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/terraform/terraform-production-plan.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/terraform/terraform-staging-apply.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/terraform/terraform-staging-destroy.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/variables/.cici/.gitlab-ci.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/fixtures/gitlab/variables/simple-job.yml +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/test_build.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/test_cli.py +0 -0
- {cici_tools-0.15.0 → cici_tools-0.16.0}/tests/test_import.py +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# cici pipeline
|
|
2
|
+
|
|
3
|
+
Build and publish CI/CD pipeline components with cici.
|
|
4
|
+
|
|
5
|
+
cici, short for Continuous Integration Catalog Interface, is a framework and
|
|
6
|
+
toolkit for managing the integration and lifecycle of packaged CI/CD
|
|
7
|
+
components in a software delivery pipeline.
|
|
8
|
+
|
|
9
|
+
cici enables the efficient sharing of CI/CD code in an organization, and
|
|
10
|
+
eliminates a major source of friction that otherwise leads to poor adoption of
|
|
11
|
+
automation and DevOps practices.
|
|
12
|
+
|
|
13
|
+
cici is a foundational component of [saferatday0](https://saferatday0.dev/)
|
|
14
|
+
and powers the [saferatday0 library](https://gitlab.com/saferatday0/library).
|
|
15
|
+
|
|
16
|
+
## Targets
|
|
17
|
+
|
|
18
|
+
| Name | [GitLab include](https://docs.gitlab.com/ee/ci/yaml/includes.html) | [pre-commit hook](https://pre-commit.com/) | Description |
|
|
19
|
+
| ----- | ------- | ---- | ----------- |
|
|
20
|
+
| [cici-bundle](#cici-bundle) | ✓ | ✓ | Bundle GitLab CI/CD includes into single files. |
|
|
21
|
+
| [cici-readme](#cici-readme) | ✓ | ✓ | Generate READMEs for CI pipelines. |
|
|
22
|
+
| [cici-update](#cici-update) | ✓ | ✓ | Update GitLab CI/CD includes to latest released versions. |
|
|
23
|
+
|
|
24
|
+
### `cici-bundle`
|
|
25
|
+
|
|
26
|
+
Bundle GitLab CI/CD includes into single files.
|
|
27
|
+
|
|
28
|
+
As a GitLab include:
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
# .gitlab-ci.yml
|
|
32
|
+
include:
|
|
33
|
+
- project: saferatday0/cici
|
|
34
|
+
file:
|
|
35
|
+
- cici-bundle.yml
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
As a pre-commit hook:
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
# .pre-commit-config.yaml
|
|
42
|
+
repos:
|
|
43
|
+
- repo: https://gitlab.com/saferatday0/cici
|
|
44
|
+
rev: ""
|
|
45
|
+
hooks:
|
|
46
|
+
- id: cici-bundle
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### `cici-readme`
|
|
50
|
+
|
|
51
|
+
Generate READMEs for CI pipelines.
|
|
52
|
+
|
|
53
|
+
As a GitLab include:
|
|
54
|
+
|
|
55
|
+
```yaml
|
|
56
|
+
# .gitlab-ci.yml
|
|
57
|
+
include:
|
|
58
|
+
- project: saferatday0/cici
|
|
59
|
+
file:
|
|
60
|
+
- cici-readme.yml
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
As a pre-commit hook:
|
|
64
|
+
|
|
65
|
+
```yaml
|
|
66
|
+
# .pre-commit-config.yaml
|
|
67
|
+
repos:
|
|
68
|
+
- repo: https://gitlab.com/saferatday0/cici
|
|
69
|
+
rev: ""
|
|
70
|
+
hooks:
|
|
71
|
+
- id: cici-readme
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### `cici-update`
|
|
75
|
+
|
|
76
|
+
Update GitLab CI/CD includes to latest released versions.
|
|
77
|
+
|
|
78
|
+
As a GitLab include:
|
|
79
|
+
|
|
80
|
+
```yaml
|
|
81
|
+
# .gitlab-ci.yml
|
|
82
|
+
include:
|
|
83
|
+
- project: saferatday0/cici
|
|
84
|
+
file:
|
|
85
|
+
- cici-update.yml
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
As a pre-commit hook:
|
|
89
|
+
|
|
90
|
+
```yaml
|
|
91
|
+
# .pre-commit-config.yaml
|
|
92
|
+
repos:
|
|
93
|
+
- repo: https://gitlab.com/saferatday0/cici
|
|
94
|
+
rev: ""
|
|
95
|
+
hooks:
|
|
96
|
+
- id: cici-update
|
|
97
|
+
```
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.
|
|
32
|
-
__version_tuple__ = version_tuple = (0,
|
|
31
|
+
__version__ = version = '0.16.0'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 16, 0)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'gc5321d184'
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
# SPDX-FileCopyrightText: UL Research Institutes
|
|
2
2
|
# SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
import logging
|
|
5
6
|
import re
|
|
6
7
|
from importlib import import_module
|
|
7
8
|
from io import StringIO
|
|
8
9
|
from pathlib import Path
|
|
10
|
+
from typing import Optional
|
|
9
11
|
|
|
10
12
|
from msgspec.structs import replace
|
|
11
13
|
from termcolor import colored
|
|
12
14
|
|
|
13
|
-
from
|
|
15
|
+
from cici.config.project import models as cici_config
|
|
16
|
+
from cici.config.project import serializers as cici_config_serializers
|
|
17
|
+
|
|
14
18
|
from ..constants import DEFAULT_PROVIDER
|
|
15
|
-
from ..paths import
|
|
19
|
+
from ..paths import get_cici_config_path
|
|
16
20
|
|
|
17
21
|
|
|
18
22
|
def get_bundle_name(text):
|
|
@@ -34,16 +38,40 @@ def get_bundle_content(provider, bundle, cici_config_file=None):
|
|
|
34
38
|
return content.getvalue()
|
|
35
39
|
|
|
36
40
|
|
|
41
|
+
def load_cici_or_nothing(base_path: Path) -> Optional[cici_config.File]:
|
|
42
|
+
# try to load and resolve .cici/config.yaml
|
|
43
|
+
# - if config.yaml is there, load it, if not load nothing
|
|
44
|
+
# - if config.yaml does not exist return None
|
|
45
|
+
|
|
46
|
+
base_path = Path(base_path).resolve()
|
|
47
|
+
|
|
48
|
+
if base_path.name == ".cici":
|
|
49
|
+
base_path = base_path.parent
|
|
50
|
+
|
|
51
|
+
config_path_root = base_path / ".cici" / "config.yaml"
|
|
52
|
+
|
|
53
|
+
# load config.yaml if it exists
|
|
54
|
+
config_path = None
|
|
55
|
+
if config_path_root.exists():
|
|
56
|
+
config_path = config_path_root
|
|
57
|
+
|
|
58
|
+
if config_path:
|
|
59
|
+
config_file = cici_config_serializers.load(config_path)
|
|
60
|
+
# if load() succeeds then resove targets
|
|
61
|
+
return cici_config_serializers.resolve_targets(config_file, config_path)
|
|
62
|
+
|
|
63
|
+
return None
|
|
64
|
+
|
|
65
|
+
|
|
37
66
|
def bundle_command(parser, args):
|
|
38
67
|
logging.basicConfig(level=logging.INFO, format="[%(levelname)s] %(message)s")
|
|
39
68
|
|
|
40
69
|
provider = import_module(f".{DEFAULT_PROVIDER}", "cici.providers")
|
|
41
70
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
cici_config_file = None
|
|
71
|
+
cici_config_file = load_cici_or_nothing(args.config_path)
|
|
72
|
+
|
|
73
|
+
if not cici_config_file:
|
|
74
|
+
logging.warning(f"No config.yaml found in .cici")
|
|
47
75
|
|
|
48
76
|
ci_file_path = args.config_path / provider.CI_FILE
|
|
49
77
|
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: UL Research Institutes
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
# Loads .cici/config.yaml
|
|
5
|
+
# Defines targes, variables and metadata about the project.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
import re
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
from typing import Any, Optional, Union
|
|
12
|
+
|
|
13
|
+
import msgspec
|
|
14
|
+
import ruamel.yaml
|
|
15
|
+
from msgspec.structs import replace
|
|
16
|
+
|
|
17
|
+
from . import models as cici_config
|
|
18
|
+
|
|
19
|
+
decoder = msgspec.json.Decoder(type=cici_config.File)
|
|
20
|
+
target_decoder = msgspec.json.Decoder(type=cici_config.Target)
|
|
21
|
+
image_fqdn_regex = re.compile(r"^[\w\.-]+/")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# make sure each variable has its 'name' field set from its key
|
|
25
|
+
def inject_variable_names(variables: dict[str, Union[str, dict]]) -> dict[str, dict]:
|
|
26
|
+
patched = {}
|
|
27
|
+
for key, value in variables.items():
|
|
28
|
+
if isinstance(value, str):
|
|
29
|
+
value = {"value": value}
|
|
30
|
+
# if value is None or not a dict, treat it as empty dict
|
|
31
|
+
if not isinstance(value, dict):
|
|
32
|
+
raise TypeError(f"Expected dict for variable {key}, got {type(value)}")
|
|
33
|
+
# only add name if missing
|
|
34
|
+
value.setdefault("name", key)
|
|
35
|
+
patched[key] = value
|
|
36
|
+
return patched
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def load_targets_from_dir(target_dir: Path) -> list[cici_config.Target]:
|
|
40
|
+
if not target_dir.exists() or not target_dir.is_dir():
|
|
41
|
+
return []
|
|
42
|
+
|
|
43
|
+
yaml = ruamel.yaml.YAML(typ="safe")
|
|
44
|
+
targets: list[cici_config.Target] = []
|
|
45
|
+
|
|
46
|
+
# checking for .yaml
|
|
47
|
+
for file in sorted(target_dir.glob("*.yaml")):
|
|
48
|
+
try:
|
|
49
|
+
with open(file, "r", encoding="utf-8") as f:
|
|
50
|
+
data = yaml.load(f) or {}
|
|
51
|
+
|
|
52
|
+
# make sure name exists before decoding
|
|
53
|
+
data.setdefault("name", file.stem)
|
|
54
|
+
|
|
55
|
+
# decode using msgspec for validation and type safety
|
|
56
|
+
target_obj = target_decoder.decode(msgspec.json.encode(data))
|
|
57
|
+
targets.append(target_obj)
|
|
58
|
+
|
|
59
|
+
except msgspec.ValidationError as e:
|
|
60
|
+
logging.warning(f"Validation failed for {file.name}: {e}")
|
|
61
|
+
except Exception as e:
|
|
62
|
+
logging.warning(f"Failed to load target {file.name}: {e}")
|
|
63
|
+
|
|
64
|
+
logging.info(f"Loaded {len(targets)} valid targets from {target_dir}")
|
|
65
|
+
return targets
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def resolve_targets(
|
|
69
|
+
cici_config_file: Optional[cici_config.File], config_path: Path
|
|
70
|
+
) -> Optional[cici_config.File]:
|
|
71
|
+
# Resolve and merge targets from .cici/config.yaml and from .cici/targets/*.yaml
|
|
72
|
+
|
|
73
|
+
# - Directory targets override config.yaml targets with the same name
|
|
74
|
+
# - If no targets dir exists, use the targets defined in the config.yaml
|
|
75
|
+
# - returns updated 'cici_config.File' with merged targets
|
|
76
|
+
|
|
77
|
+
if not cici_config_file:
|
|
78
|
+
return None
|
|
79
|
+
|
|
80
|
+
# get directory that could exist targets
|
|
81
|
+
targets_dir = config_path.parent / "targets"
|
|
82
|
+
|
|
83
|
+
# get targets from config.yaml
|
|
84
|
+
config_targets: list[cici_config.Target] = list(cici_config_file.targets)
|
|
85
|
+
|
|
86
|
+
# load targets from '.cici/targets/' if there are any
|
|
87
|
+
dir_targets: list[cici_config.Target] = []
|
|
88
|
+
if targets_dir.exists() and any(targets_dir.glob("*.yaml")):
|
|
89
|
+
logging.info(f"loading targets from directory: {targets_dir}")
|
|
90
|
+
dir_targets = load_targets_from_dir(targets_dir)
|
|
91
|
+
|
|
92
|
+
# combine all targets
|
|
93
|
+
all_targets = list(config_targets) + list(dir_targets)
|
|
94
|
+
|
|
95
|
+
# get target names
|
|
96
|
+
target_names = [
|
|
97
|
+
target.name for target in all_targets if getattr(target, "name", None)
|
|
98
|
+
]
|
|
99
|
+
|
|
100
|
+
# check duplicates
|
|
101
|
+
if len(target_names) != len(set(target_names)):
|
|
102
|
+
raise ValueError(
|
|
103
|
+
f"Duplicate target names found: {', '.join(sorted(target_names))}"
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
# create new file with merged target list
|
|
107
|
+
resolved_file = replace(cici_config_file, targets=all_targets)
|
|
108
|
+
return resolved_file
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def patch_image(image: str, container_proxy: str = "${CONTAINER_PROXY}") -> str:
|
|
112
|
+
"""Patch in $CONTAINER_PROXY to image unless the following are true:
|
|
113
|
+
|
|
114
|
+
A: Does the image URL contain ${CONTAINER_PROXY} (the literal string)
|
|
115
|
+
B: Is the image URL a fully-qualified container URL?
|
|
116
|
+
C: Does the image already start with a variable?
|
|
117
|
+
"""
|
|
118
|
+
|
|
119
|
+
if not image:
|
|
120
|
+
return image
|
|
121
|
+
if container_proxy in image:
|
|
122
|
+
return image
|
|
123
|
+
|
|
124
|
+
if image_fqdn_regex.match(image):
|
|
125
|
+
return image
|
|
126
|
+
|
|
127
|
+
if image.startswith("$"):
|
|
128
|
+
return image
|
|
129
|
+
|
|
130
|
+
return f"{container_proxy}{image}"
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def loads(
|
|
134
|
+
text: str,
|
|
135
|
+
gitlab_ci_jobs: Optional[dict[str, Any]] = None,
|
|
136
|
+
precommit_hooks: Optional[dict[str, Any]] = None,
|
|
137
|
+
) -> cici_config.File:
|
|
138
|
+
# parse YAML into fully-typed File object
|
|
139
|
+
if gitlab_ci_jobs is None:
|
|
140
|
+
gitlab_ci_jobs = {}
|
|
141
|
+
if precommit_hooks is None:
|
|
142
|
+
precommit_hooks = {}
|
|
143
|
+
|
|
144
|
+
yaml = ruamel.yaml.YAML(typ="safe")
|
|
145
|
+
data = yaml.load(text)
|
|
146
|
+
|
|
147
|
+
# verify targets exists even if empty
|
|
148
|
+
data.setdefault("targets", [])
|
|
149
|
+
|
|
150
|
+
# Inject precommit/gitlab includes into each target
|
|
151
|
+
|
|
152
|
+
# Debug to test injection
|
|
153
|
+
# print("Before injection:", data["targets"])
|
|
154
|
+
|
|
155
|
+
for target in data["targets"]:
|
|
156
|
+
target["precommit_hook"] = {"name": target["name"]}
|
|
157
|
+
target["gitlab_include"] = {"name": target["name"]}
|
|
158
|
+
|
|
159
|
+
# Debug to test injection
|
|
160
|
+
# print("After injection:", data["targets"])
|
|
161
|
+
|
|
162
|
+
if "variables" in data:
|
|
163
|
+
data["variables"] = inject_variable_names(data["variables"])
|
|
164
|
+
|
|
165
|
+
# decode into file_struct
|
|
166
|
+
file_struct = decoder.decode(msgspec.json.encode(data))
|
|
167
|
+
|
|
168
|
+
# post process to patch CONTAINER_PROXY to container images
|
|
169
|
+
patched_targets = []
|
|
170
|
+
for target in file_struct.targets:
|
|
171
|
+
if target.container is not None:
|
|
172
|
+
patched_container = replace(
|
|
173
|
+
target.container,
|
|
174
|
+
image=patch_image(target.container.image),
|
|
175
|
+
)
|
|
176
|
+
patched_targets.append(replace(target, container=patched_container))
|
|
177
|
+
else:
|
|
178
|
+
patched_targets.append(target)
|
|
179
|
+
|
|
180
|
+
return replace(file_struct, targets=patched_targets)
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def load(
|
|
184
|
+
file: Union[str, Path],
|
|
185
|
+
gitlab_ci_jobs: Optional[dict[str, Any]] = None,
|
|
186
|
+
precommit_hooks: Optional[dict[str, Any]] = None,
|
|
187
|
+
) -> cici_config.File:
|
|
188
|
+
return loads(
|
|
189
|
+
open(file).read(),
|
|
190
|
+
gitlab_ci_jobs=gitlab_ci_jobs,
|
|
191
|
+
precommit_hooks=precommit_hooks,
|
|
192
|
+
)
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# SPDX-FileCopyrightText: UL Research Institutes
|
|
2
2
|
# SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
+
# Loads and serializes .gitlab-ci.yml and CI job definitions
|
|
5
|
+
|
|
4
6
|
import io
|
|
5
7
|
import typing
|
|
6
8
|
from pathlib import Path
|
|
@@ -249,41 +251,33 @@ def loads(
|
|
|
249
251
|
yaml = ruamel.yaml.YAML()
|
|
250
252
|
data = yaml.load(text)
|
|
251
253
|
|
|
252
|
-
#
|
|
254
|
+
# Normalize scalars
|
|
253
255
|
data = normalize_scalars(data)
|
|
254
256
|
|
|
255
|
-
#
|
|
257
|
+
# merge top-level config variables
|
|
256
258
|
if cici_config_file:
|
|
257
259
|
data = add_config_variables(data, cici_config_file=cici_config_file)
|
|
258
260
|
|
|
259
|
-
#
|
|
260
|
-
# print("CONFIG FILE TYPE:", type(cici_config_file))
|
|
261
|
-
# print("CONFIG FILE CONTENT:", getattr(cici_config_file, "variables", None))
|
|
262
|
-
|
|
263
|
-
# 4. normalize jobs
|
|
261
|
+
# normalize jobs
|
|
264
262
|
data = normalize_jobs_in_data(data)
|
|
265
263
|
|
|
266
|
-
#
|
|
264
|
+
# normalize variables format
|
|
267
265
|
data = normalize_variables(data)
|
|
268
266
|
|
|
269
|
-
#
|
|
267
|
+
# inject variable names
|
|
270
268
|
if "variables" in data:
|
|
271
269
|
data["variables"] = inject_variable_names(data["variables"])
|
|
272
270
|
|
|
273
|
-
#
|
|
271
|
+
# pack the jobs
|
|
274
272
|
data = pack_jobs(data)
|
|
275
273
|
|
|
276
|
-
#
|
|
277
|
-
# print("Keys at top level before decode:", data.keys())
|
|
278
|
-
# print("Variables at top level:", data.get("variables"))
|
|
279
|
-
|
|
280
|
-
# 8. decode into msgspec struct
|
|
274
|
+
# decode into msgspec struct
|
|
281
275
|
file_struct = decode_file(data)
|
|
282
276
|
|
|
283
|
-
#
|
|
277
|
+
# expand extends and anchors
|
|
284
278
|
file_struct = expand_jobs(file_struct)
|
|
285
279
|
|
|
286
|
-
#
|
|
280
|
+
# inject container defaults
|
|
287
281
|
return inject_container_into_job(file_struct, cici_config_file)
|
|
288
282
|
|
|
289
283
|
|
|
@@ -20,6 +20,7 @@ mkdocs.yml
|
|
|
20
20
|
pyproject.toml
|
|
21
21
|
requirements.txt
|
|
22
22
|
.cici/.gitlab-ci.yml
|
|
23
|
+
.cici/README.md.j2
|
|
23
24
|
.cici/config.yaml
|
|
24
25
|
cici/__init__.py
|
|
25
26
|
cici/__main__.py
|
|
@@ -81,6 +82,7 @@ scripts/gen-api-doc.py
|
|
|
81
82
|
tests/test_build.py
|
|
82
83
|
tests/test_cli.py
|
|
83
84
|
tests/test_import.py
|
|
85
|
+
tests/test_resolve_targets.py
|
|
84
86
|
tests/fixtures/gitlab/extends/simple-job.yml
|
|
85
87
|
tests/fixtures/gitlab/extends/.cici/.gitlab-ci.yml
|
|
86
88
|
tests/fixtures/gitlab/helm/helm-cm-push.yml
|
|
@@ -140,6 +142,54 @@ tests/fixtures/gitlab/simple/simple-job.yml
|
|
|
140
142
|
tests/fixtures/gitlab/simple/.cici/.gitlab-ci.yml
|
|
141
143
|
tests/fixtures/gitlab/stages/simple-job.yml
|
|
142
144
|
tests/fixtures/gitlab/stages/.cici/.gitlab-ci.yml
|
|
145
|
+
tests/fixtures/gitlab/targets-dir/opentofu-development-apply.yml
|
|
146
|
+
tests/fixtures/gitlab/targets-dir/opentofu-development-auto-apply.yml
|
|
147
|
+
tests/fixtures/gitlab/targets-dir/opentofu-development-destroy.yml
|
|
148
|
+
tests/fixtures/gitlab/targets-dir/opentofu-development-plan.yml
|
|
149
|
+
tests/fixtures/gitlab/targets-dir/opentofu-development-trivy.yml
|
|
150
|
+
tests/fixtures/gitlab/targets-dir/opentofu-development-validate.yml
|
|
151
|
+
tests/fixtures/gitlab/targets-dir/opentofu-fmt.yml
|
|
152
|
+
tests/fixtures/gitlab/targets-dir/opentofu-module-build.yml
|
|
153
|
+
tests/fixtures/gitlab/targets-dir/opentofu-module-release.yml
|
|
154
|
+
tests/fixtures/gitlab/targets-dir/opentofu-production-apply.yml
|
|
155
|
+
tests/fixtures/gitlab/targets-dir/opentofu-production-auto-apply.yml
|
|
156
|
+
tests/fixtures/gitlab/targets-dir/opentofu-production-destroy.yml
|
|
157
|
+
tests/fixtures/gitlab/targets-dir/opentofu-production-plan.yml
|
|
158
|
+
tests/fixtures/gitlab/targets-dir/opentofu-production-trivy.yml
|
|
159
|
+
tests/fixtures/gitlab/targets-dir/opentofu-production-validate.yml
|
|
160
|
+
tests/fixtures/gitlab/targets-dir/opentofu-staging-apply.yml
|
|
161
|
+
tests/fixtures/gitlab/targets-dir/opentofu-staging-auto-apply.yml
|
|
162
|
+
tests/fixtures/gitlab/targets-dir/opentofu-staging-destroy.yml
|
|
163
|
+
tests/fixtures/gitlab/targets-dir/opentofu-staging-plan.yml
|
|
164
|
+
tests/fixtures/gitlab/targets-dir/opentofu-staging-trivy.yml
|
|
165
|
+
tests/fixtures/gitlab/targets-dir/opentofu-staging-validate.yml
|
|
166
|
+
tests/fixtures/gitlab/targets-dir/opentofu-trivy.yml
|
|
167
|
+
tests/fixtures/gitlab/targets-dir/opentofu-validate.yml
|
|
168
|
+
tests/fixtures/gitlab/targets-dir/.cici/.gitlab-ci.yml
|
|
169
|
+
tests/fixtures/gitlab/targets-dir/.cici/config.yaml
|
|
170
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-development-apply.yaml
|
|
171
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-development-auto-apply.yaml
|
|
172
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-development-destroy.yaml
|
|
173
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-development-plan.yaml
|
|
174
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-development-validate.yaml
|
|
175
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-fmt.yaml
|
|
176
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-module-build.yaml
|
|
177
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-module-release.yaml
|
|
178
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-production-apply.yaml
|
|
179
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-production-auto-apply.yaml
|
|
180
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-production-destroy.yaml
|
|
181
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-production-plan.yaml
|
|
182
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-production-trivy.yaml
|
|
183
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-production-validate.yaml
|
|
184
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-staging-apply.yaml
|
|
185
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-staging-auto-apply.yaml
|
|
186
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-staging-destroy.yaml
|
|
187
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-staging-plan.yaml
|
|
188
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-staging-trivy.yaml
|
|
189
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-staging-validate.yaml
|
|
190
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-trivy.yaml
|
|
191
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/opentofu-validate.yaml
|
|
192
|
+
tests/fixtures/gitlab/targets-dir/.cici/targets/tofu-development-trivy.yaml
|
|
143
193
|
tests/fixtures/gitlab/terraform/terraform-fmt.yml
|
|
144
194
|
tests/fixtures/gitlab/terraform/terraform-production-apply.yml
|
|
145
195
|
tests/fixtures/gitlab/terraform/terraform-production-plan.yml
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# uv pip compile --python-version 3.11 -o requirements.txt pyproject.toml
|
|
3
3
|
appdirs==1.4.4
|
|
4
4
|
# via cici-tools (pyproject.toml)
|
|
5
|
-
attrs==25.
|
|
5
|
+
attrs==25.4.0
|
|
6
6
|
# via
|
|
7
7
|
# jsonschema
|
|
8
8
|
# referencing
|
|
@@ -20,19 +20,19 @@ msgspec==0.19.0
|
|
|
20
20
|
# via cici-tools (pyproject.toml)
|
|
21
21
|
python-decouple==3.8
|
|
22
22
|
# via cici-tools (pyproject.toml)
|
|
23
|
-
referencing==0.
|
|
23
|
+
referencing==0.37.0
|
|
24
24
|
# via
|
|
25
25
|
# jsonschema
|
|
26
26
|
# jsonschema-specifications
|
|
27
|
-
rpds-py==0.
|
|
27
|
+
rpds-py==0.28.0
|
|
28
28
|
# via
|
|
29
29
|
# jsonschema
|
|
30
30
|
# referencing
|
|
31
|
-
ruamel-yaml==0.18.
|
|
31
|
+
ruamel-yaml==0.18.16
|
|
32
32
|
# via cici-tools (pyproject.toml)
|
|
33
33
|
ruamel-yaml-clib==0.2.14
|
|
34
34
|
# via ruamel-yaml
|
|
35
|
-
termcolor==3.
|
|
35
|
+
termcolor==3.2.0
|
|
36
36
|
# via cici-tools (pyproject.toml)
|
|
37
37
|
typing-extensions==4.15.0
|
|
38
38
|
# via referencing
|