From aaf5c30c0e3b89e52a68ba11d2baf0800e2955df Mon Sep 17 00:00:00 2001 From: Federico Maleh Date: Sat, 13 Dec 2025 04:35:18 -0300 Subject: [PATCH 1/3] First amplify implementation --- .gitignore | 5 +- amplify/deployment/module/backend.tf | 4 + amplify/deployment/module/do_tofu | 63 ++++++++++ amplify/deployment/module/locals.tf | 5 + amplify/deployment/module/main.tf | 119 ++++++++++++++++++ amplify/deployment/module/outputs.tf | 16 +++ amplify/deployment/module/provider.tf | 14 +++ amplify/deployment/module/variables.tf | 45 +++++++ amplify/deployment/workflows/blue_green.yaml | 2 + amplify/deployment/workflows/delete.yaml | 6 + amplify/deployment/workflows/finalize.yaml | 4 + amplify/deployment/workflows/initial.yaml | 6 + amplify/deployment/workflows/rollback.yaml | 4 + amplify/instance/workflows/list.yaml | 0 amplify/log/workflows/log.yaml | 0 amplify/metric/workflows/list.yaml | 0 amplify/metric/workflows/metric.yaml | 0 amplify/scope/workflows/create.yaml | 4 + amplify/scope/workflows/delete.yaml | 4 + amplify/scope/workflows/update.yaml | 4 + amplify/specs/actions/create-scope.json.tpl | 29 +++++ .../specs/actions/delete-deployment.json.tpl | 33 +++++ amplify/specs/actions/delete-scope.json.tpl | 29 +++++ .../actions/finalize-blue-green.json.tpl | 33 +++++ .../actions/rollback-deployment.json.tpl | 33 +++++ .../specs/actions/start-blue-green.json.tpl | 33 +++++ amplify/specs/actions/start-initial.json.tpl | 32 +++++ amplify/specs/notification-channel.json.tpl | 34 +++++ amplify/specs/scope-type-definition.json.tpl | 9 ++ amplify/specs/service-spec.json.tpl | 34 +++++ 30 files changed, 603 insertions(+), 1 deletion(-) create mode 100644 amplify/deployment/module/backend.tf create mode 100755 amplify/deployment/module/do_tofu create mode 100644 amplify/deployment/module/locals.tf create mode 100644 amplify/deployment/module/main.tf create mode 100644 amplify/deployment/module/outputs.tf create mode 100644 amplify/deployment/module/provider.tf create mode 100644 amplify/deployment/module/variables.tf create mode 100644 amplify/deployment/workflows/blue_green.yaml create mode 100644 amplify/deployment/workflows/delete.yaml create mode 100644 amplify/deployment/workflows/finalize.yaml create mode 100644 amplify/deployment/workflows/initial.yaml create mode 100644 amplify/deployment/workflows/rollback.yaml create mode 100644 amplify/instance/workflows/list.yaml create mode 100644 amplify/log/workflows/log.yaml create mode 100644 amplify/metric/workflows/list.yaml create mode 100644 amplify/metric/workflows/metric.yaml create mode 100644 amplify/scope/workflows/create.yaml create mode 100644 amplify/scope/workflows/delete.yaml create mode 100644 amplify/scope/workflows/update.yaml create mode 100644 amplify/specs/actions/create-scope.json.tpl create mode 100644 amplify/specs/actions/delete-deployment.json.tpl create mode 100644 amplify/specs/actions/delete-scope.json.tpl create mode 100644 amplify/specs/actions/finalize-blue-green.json.tpl create mode 100644 amplify/specs/actions/rollback-deployment.json.tpl create mode 100644 amplify/specs/actions/start-blue-green.json.tpl create mode 100644 amplify/specs/actions/start-initial.json.tpl create mode 100644 amplify/specs/notification-channel.json.tpl create mode 100644 amplify/specs/scope-type-definition.json.tpl create mode 100644 amplify/specs/service-spec.json.tpl diff --git a/.gitignore b/.gitignore index dc24eb3e..5fe641e4 100644 --- a/.gitignore +++ b/.gitignore @@ -134,4 +134,7 @@ dist .idea k8s/output np-agent-manifest.yaml -.minikube_mount_pid \ No newline at end of file +.minikube_mount_pid + +amplify/deployment/module/.terraform +amplify/deployment/module/.terraform.lock.hcl \ No newline at end of file diff --git a/amplify/deployment/module/backend.tf b/amplify/deployment/module/backend.tf new file mode 100644 index 00000000..b1bfb950 --- /dev/null +++ b/amplify/deployment/module/backend.tf @@ -0,0 +1,4 @@ +terraform { + backend "s3" { + } +} \ No newline at end of file diff --git a/amplify/deployment/module/do_tofu b/amplify/deployment/module/do_tofu new file mode 100755 index 00000000..8278295b --- /dev/null +++ b/amplify/deployment/module/do_tofu @@ -0,0 +1,63 @@ +#!/bin/bash + +set -eou pipefail + +CURRENT_DIR=$(dirname "${BASH_SOURCE[0]}") + +cd "$CURRENT_DIR" + +AWS_REGION="${AWS_REGION:-us-east-1}" +TF_STATE_BUCKET="test-static-null2" +TF_LOCK_TABLE="service-provisioning-terraform-state-lock" +# You need to export the GITHUB_TOKEN as an env var in the agent +#GITHUB_TOKEN="" + +APPLICATION_SLUG=$(echo "$CONTEXT" | jq -r .application.slug) +SCOPE_SLUG=$(echo "$CONTEXT" | jq -r .scope.slug) +SCOPE_ID=$(echo "$CONTEXT" | jq -r .scope.id) +REPOSITORY_URL=$(echo "$CONTEXT" | jq -r .application.repository_url) +APPLICATION_VERSION="$(echo "$CONTEXT" | jq -r .release.semver)" +ENV_VARS_JSON=$(echo "$CONTEXT" | jq '.parameters.results | map({(.variable): .values[0].value}) | add') +RESOURCE_TAGS_JSON=$(echo "$CONTEXT" | jq \ + '{ + nullplatform: "true", + account: .account.slug, + account_id: .account.id, + namespace: .namespace.slug, + namespace_id: .namespace.id, + application: .application.slug, + application_id: .application.id, + scope: .scope.slug, + scope_id: .scope.id, + deployment_id: .deployment.id + }') + +DOMAIN="kwik-e-mart-main.nullapps.io" +SUBDOMAIN="graviton-amplify" + +#echo $APPLICATION_SLUG +#echo $SCOPE_SLUG +#echo $SCOPE_ID +#echo $REPOSITORY_URL +#echo $APPLICATION_VERSION +#echo $ENV_VARS_JSON +#echo $RESOURCE_TAGS_JSON +#echo $DOMAIN +#echo $SUBDOMAIN + +tofu init \ + -backend-config="bucket=${TF_STATE_BUCKET}" \ + -backend-config="key=amplify/$APPLICATION_SLUG/$SCOPE_SLUG-$SCOPE_ID" \ + -backend-config="region=${AWS_REGION}" \ + -backend-config="dynamodb_table=${TF_LOCK_TABLE}" + +tofu $ACTION -auto-approve \ + -var="aws_region=${AWS_REGION}" \ + -var="github_token=${GITHUB_TOKEN}" \ + -var="application_name=${APPLICATION_SLUG}" \ + -var="repository_url=${REPOSITORY_URL}" \ + -var="application_version=${APPLICATION_VERSION}" \ + -var="env_vars_json=${ENV_VARS_JSON}" \ + -var="resource_tags_json=${RESOURCE_TAGS_JSON}" \ + -var="domain=${DOMAIN}" \ + -var="subdomain=${SUBDOMAIN}" \ No newline at end of file diff --git a/amplify/deployment/module/locals.tf b/amplify/deployment/module/locals.tf new file mode 100644 index 00000000..13e17f79 --- /dev/null +++ b/amplify/deployment/module/locals.tf @@ -0,0 +1,5 @@ +locals { + git_ref = var.application_version + env_vars = jsondecode(var.env_vars_json) + resource_tags = jsondecode(var.resource_tags_json) +} \ No newline at end of file diff --git a/amplify/deployment/module/main.tf b/amplify/deployment/module/main.tf new file mode 100644 index 00000000..905625a9 --- /dev/null +++ b/amplify/deployment/module/main.tf @@ -0,0 +1,119 @@ +data "aws_route53_zone" "public" { + name = var.domain +} + +resource "aws_amplify_app" "app" { + name = var.application_name + repository = var.repository_url + + oauth_token = var.github_token + + enable_branch_auto_build = false + enable_branch_auto_deletion = false + enable_auto_branch_creation = false + + build_spec = < Date: Sat, 13 Dec 2025 04:40:16 -0300 Subject: [PATCH 2/3] Fix workflows --- amplify/scope/no_op | 3 +++ amplify/scope/workflows/create.yaml | 2 +- amplify/scope/workflows/delete.yaml | 6 ++---- amplify/scope/workflows/update.yaml | 6 ++---- 4 files changed, 8 insertions(+), 9 deletions(-) create mode 100755 amplify/scope/no_op diff --git a/amplify/scope/no_op b/amplify/scope/no_op new file mode 100755 index 00000000..c6918a62 --- /dev/null +++ b/amplify/scope/no_op @@ -0,0 +1,3 @@ +#!/bin/bash + +echo "No action needed on this scope" \ No newline at end of file diff --git a/amplify/scope/workflows/create.yaml b/amplify/scope/workflows/create.yaml index 7297d551..1353c84c 100644 --- a/amplify/scope/workflows/create.yaml +++ b/amplify/scope/workflows/create.yaml @@ -1,4 +1,4 @@ steps: - name: no_op type: command - command: echo "No action needed to create scope" \ No newline at end of file + command: "$SERVICE_PATH/scope/no_op" \ No newline at end of file diff --git a/amplify/scope/workflows/delete.yaml b/amplify/scope/workflows/delete.yaml index 7dccae8a..5cd04cd7 100644 --- a/amplify/scope/workflows/delete.yaml +++ b/amplify/scope/workflows/delete.yaml @@ -1,4 +1,2 @@ -steps: - - name: no_op - type: command - command: echo "No action needed to delete scope" \ No newline at end of file +include: + - "$SERVICE_PATH/scope/workflows/create.yaml" \ No newline at end of file diff --git a/amplify/scope/workflows/update.yaml b/amplify/scope/workflows/update.yaml index 4ca8d742..5cd04cd7 100644 --- a/amplify/scope/workflows/update.yaml +++ b/amplify/scope/workflows/update.yaml @@ -1,4 +1,2 @@ -steps: - - name: no_op - type: command - command: echo "No action needed to update scope" \ No newline at end of file +include: + - "$SERVICE_PATH/scope/workflows/create.yaml" \ No newline at end of file From a48d0b95e54a919c6ab039c8cded79b5f114bf39 Mon Sep 17 00:00:00 2001 From: Federico Maleh Date: Sat, 13 Dec 2025 04:53:57 -0300 Subject: [PATCH 3/3] Generate domain based on hosted zone --- amplify/deployment/module/do_tofu | 8 ++++++-- amplify/deployment/workflows/delete.yaml | 2 ++ amplify/deployment/workflows/initial.yaml | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/amplify/deployment/module/do_tofu b/amplify/deployment/module/do_tofu index 8278295b..50086d04 100755 --- a/amplify/deployment/module/do_tofu +++ b/amplify/deployment/module/do_tofu @@ -32,8 +32,12 @@ RESOURCE_TAGS_JSON=$(echo "$CONTEXT" | jq \ deployment_id: .deployment.id }') -DOMAIN="kwik-e-mart-main.nullapps.io" -SUBDOMAIN="graviton-amplify" + HOSTED_PUBLIC_ZONE_ID=$(echo "$CONTEXT" | jq -r '.providers["cloud-providers"].networking.hosted_public_zone_id') + +DOMAIN=$(aws route53 get-hosted-zone --id "$HOSTED_PUBLIC_ZONE_ID" --query 'HostedZone.Name' --output text | sed 's/\.$//') +SUBDOMAIN="$APPLICATION_SLUG-$SCOPE_SLUG" + +np scope patch --id "$SCOPE_ID" --body "{\"domain\":\"$SUBDOMAIN.$DOMAIN\"}" #echo $APPLICATION_SLUG #echo $SCOPE_SLUG diff --git a/amplify/deployment/workflows/delete.yaml b/amplify/deployment/workflows/delete.yaml index 5ebe1c20..de460983 100644 --- a/amplify/deployment/workflows/delete.yaml +++ b/amplify/deployment/workflows/delete.yaml @@ -1,3 +1,5 @@ +provider_categories: + - cloud-providers steps: - name: tofu type: script diff --git a/amplify/deployment/workflows/initial.yaml b/amplify/deployment/workflows/initial.yaml index c978c069..6adeaf6a 100644 --- a/amplify/deployment/workflows/initial.yaml +++ b/amplify/deployment/workflows/initial.yaml @@ -1,3 +1,5 @@ +provider_categories: + - cloud-providers steps: - name: tofu type: script