From b08afb4deff4f3c9673dccd02dc752bcd3ea8962 Mon Sep 17 00:00:00 2001
From: Alex Maras <dev@alexmaras.com>
Date: Tue, 22 Apr 2025 13:01:15 +0800
Subject: [PATCH] test: upload artifacts using zip

---
 tests/iac-upload-artifacts/backend.tf         |  3 +++
 tests/iac-upload-artifacts/main.tf            |  9 ++++++++
 .../UploadArtifacts.gitlab-ci.yml             | 22 +++++++++++++++++++
 tests/integration.gitlab-ci.yml               | 17 ++++++++++++++
 4 files changed, 51 insertions(+)
 create mode 100644 tests/iac-upload-artifacts/backend.tf
 create mode 100644 tests/iac-upload-artifacts/main.tf
 create mode 100644 tests/integration-tests/UploadArtifacts.gitlab-ci.yml

diff --git a/tests/iac-upload-artifacts/backend.tf b/tests/iac-upload-artifacts/backend.tf
new file mode 100644
index 0000000..1736bf1
--- /dev/null
+++ b/tests/iac-upload-artifacts/backend.tf
@@ -0,0 +1,3 @@
+terraform {
+  backend "http" {}
+}
diff --git a/tests/iac-upload-artifacts/main.tf b/tests/iac-upload-artifacts/main.tf
new file mode 100644
index 0000000..45bff9e
--- /dev/null
+++ b/tests/iac-upload-artifacts/main.tf
@@ -0,0 +1,9 @@
+data "archive_file" "test_artifact" {
+  type        = "zip"
+  output_path = "test-artifact.zip"
+
+  source {
+    content = "test artifact inner value"
+    filename = "file-inside-archive.txt"
+  }
+}
diff --git a/tests/integration-tests/UploadArtifacts.gitlab-ci.yml b/tests/integration-tests/UploadArtifacts.gitlab-ci.yml
new file mode 100644
index 0000000..ce33dd7
--- /dev/null
+++ b/tests/integration-tests/UploadArtifacts.gitlab-ci.yml
@@ -0,0 +1,22 @@
+include:
+  - component: $CI_SERVER_FQDN/$CI_PROJECT_PATH/validate-plan-apply@$CI_COMMIT_SHA
+    inputs:
+      image_registry_base: $GITLAB_OPENTOFU_IMAGE_BASE
+      version: $CI_COMMIT_SHA
+      base_os: $GITLAB_OPENTOFU_BASE_IMAGE_OS
+      opentofu_version: $OPENTOFU_VERSION
+      root_dir: $TEST_GITLAB_TOFU_ROOT_DIR
+      state_name: $TEST_GITLAB_TOFU_STATE_NAME
+      fmt_rules: [{when: on_success}]
+      validate_rules: [{when: on_success}]
+      plan_rules: [{when: on_success}]
+      apply_rules: [{when: on_success}]
+
+  # For CI Terraform state cleanup
+  - component: $CI_SERVER_FQDN/$CI_PROJECT_PATH/delete-state@$CI_COMMIT_SHA
+    inputs:
+      stage: cleanup
+      state_name: $TEST_GITLAB_TOFU_STATE_NAME
+      rules: [{when: always}]
+
+stages: [validate, build, deploy, cleanup]
diff --git a/tests/integration.gitlab-ci.yml b/tests/integration.gitlab-ci.yml
index ba4337e..1c40eba 100644
--- a/tests/integration.gitlab-ci.yml
+++ b/tests/integration.gitlab-ci.yml
@@ -194,3 +194,20 @@ id-tokens:
           - alpine
           - debian
 
+upload-artifacts:
+  stage: test-integration
+  variables:
+    OPENTOFU_VERSION: $LATEST_OPENTOFU_VERSION
+    TEST_GITLAB_TOFU_STATE_NAME: ci-integration-$CI_JOB_NAME_SLUG-$CI_PIPELINE_IID-$CI_NODE_INDEX
+    TEST_GITLAB_TOFU_ROOT_DIR: tests/iac-upload-artifacts
+  trigger:
+    include: tests/integration-tests/$PIPELINE_NAME.gitlab-ci.yml
+    strategy: depend
+  parallel:
+    matrix:
+      - PIPELINE_NAME:
+          - UploadArtifacts
+        GITLAB_OPENTOFU_BASE_IMAGE_OS:
+          - alpine
+          - debian
+
-- 
GitLab