Skip to content
Snippets Groups Projects
Commit 19e22efe authored by Timo Furrer's avatar Timo Furrer
Browse files

Merge branch 'graph-subcommand' into 'main'

feat: add graph subcommand

See merge request components/opentofu!93
parents f0e6ce30 a1e63079
No related branches found
No related tags found
No related merge requests found
...@@ -214,6 +214,10 @@ if [ $sourced -eq 0 ]; then ...@@ -214,6 +214,10 @@ if [ $sourced -eq 0 ]; then
$TF_IMPLICIT_INIT && terraform_init -backend=false $TF_IMPLICIT_INIT && terraform_init -backend=false
tofu "${TF_CHDIR_OPT}" "${@}" tofu "${TF_CHDIR_OPT}" "${@}"
;; ;;
"graph")
$TF_IMPLICIT_INIT && terraform_init
tofu "${TF_CHDIR_OPT}" "${@}"
;;
--) --)
shift shift
tofu "${TF_CHDIR_OPT}" "${@}" tofu "${TF_CHDIR_OPT}" "${@}"
......
spec:
inputs:
# Job and Stage name
as:
default: 'graph'
description: 'Defines the name of this job.'
stage:
default: 'validate'
description: 'Defines the stage that this job will belong to.'
# Versions
# This version is only required, because we cannot access the context of the component,
# see https://gitlab.com/gitlab-org/gitlab/-/issues/438275
version:
default: 'latest'
description: 'Version of this component. Has to be the same as the one in the component include entry.'
opentofu_version:
default: '1.7.1'
options:
- '$OPENTOFU_VERSION'
- '1.7.1'
- '1.7.0'
- '1.7.0-alpha1'
- '1.6.2'
- '1.6.1'
- '1.6.0'
description: 'OpenTofu version that should be used.'
# Images
image_registry_base:
default: '$CI_REGISTRY/components/opentofu'
description: 'Host URI to the job images. Will be combined with `image_name` to construct the actual image URI.'
# FIXME: not yet possible because of https://gitlab.com/gitlab-org/gitlab/-/issues/438722
# gitlab_opentofu_image:
# # FIXME: This should reference the component tag that is used.
# # Currently, blocked by https://gitlab.com/gitlab-org/gitlab/-/issues/438275
# # default: '$CI_REGISTRY/components/opentofu/gitlab-opentofu:$[[ inputs.opentofu_version ]]'
# default: '$CI_REGISTRY/components/opentofu/gitlab-opentofu:$[[ inputs.version ]]-opentofu$[[ inputs.opentofu_version ]]'
# description: 'Tag of the gitlab-opentofu image.'
image_name:
default: 'gitlab-opentofu'
description: 'Image name for the job images. Hosted under `image_registry_base`.'
# Configuration
root_dir:
default: ${CI_PROJECT_DIR}
description: 'Root directory for the OpenTofu project.'
state_name:
default: default
description: 'Remote OpenTofu state name.'
graph_file:
default: 'graph.dot'
description: |
Name of the graph file that should be generated.
It will be uploaded as an artifact.
---
'$[[ inputs.as ]]':
stage: $[[ inputs.stage ]]
needs: []
cache:
key: "$__CACHE_KEY_HACK"
paths:
- $TF_ROOT/.terraform/
variables:
# FIXME: work around to make slashes work in `cache:key`. see https://gitlab.com/gitlab-org/gitlab/-/issues/439898
__CACHE_KEY_HACK: "$[[ inputs.root_dir ]]"
TF_ROOT: $[[ inputs.root_dir ]]
TF_STATE_NAME: $[[ inputs.state_name ]]
image:
name: '$[[ inputs.image_registry_base ]]/$[[ inputs.image_name ]]:$[[ inputs.version ]]-opentofu$[[ inputs.opentofu_version ]]'
script:
- gitlab-tofu graph > "$[[ inputs.graph_file ]]"
artifacts:
paths:
- "$[[ inputs.graph_file ]]"
...@@ -93,6 +93,15 @@ include: ...@@ -93,6 +93,15 @@ include:
image_name: $[[ inputs.image_name ]] image_name: $[[ inputs.image_name ]]
root_dir: $[[ inputs.root_dir ]] root_dir: $[[ inputs.root_dir ]]
state_name: $[[ inputs.state_name ]] state_name: $[[ inputs.state_name ]]
- local: '/templates/graph.yml'
inputs:
as: '$[[ inputs.job_name_prefix ]]graph'
stage: $[[ inputs.stage_validate ]]
version: $[[ inputs.version ]]
opentofu_version: $[[ inputs.opentofu_version ]]
image_registry_base: $[[ inputs.image_registry_base ]]
image_name: $[[ inputs.image_name ]]
root_dir: $[[ inputs.root_dir ]]
- local: '/templates/test.yml' - local: '/templates/test.yml'
inputs: inputs:
as: '$[[ inputs.job_name_prefix ]]test' as: '$[[ inputs.job_name_prefix ]]test'
......
...@@ -19,6 +19,10 @@ validate: ...@@ -19,6 +19,10 @@ validate:
extends: '.opentofu:validate' extends: '.opentofu:validate'
rules: [{when: always}] rules: [{when: always}]
graph:
extends: '.opentofu:graph'
rules: [{when: always}]
plan: plan:
extends: '.opentofu:plan' extends: '.opentofu:plan'
rules: [{when: always}] rules: [{when: always}]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment