Skip to content

Commit 90c6673

Browse files
committed
workflow file added
1 parent 48c1208 commit 90c6673

File tree

1 file changed

+135
-0
lines changed

1 file changed

+135
-0
lines changed
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
name: Terraform Test Deployment
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- "*"
7+
8+
permissions:
9+
id-token: write
10+
contents: read
11+
12+
jobs:
13+
test-deployment:
14+
runs-on: ubuntu-latest
15+
16+
env:
17+
DATABASE_NAME: cid_data_export
18+
19+
steps:
20+
- uses: actions/checkout@v3
21+
22+
- name: Install dependencies
23+
run: |
24+
sudo apt-get update
25+
sudo apt-get install -y bats jq
26+
27+
- name: Set up Python
28+
uses: actions/setup-python@v4
29+
with:
30+
python-version: "3.x"
31+
32+
- name: Install dependencies
33+
run: |
34+
python -m pip install --upgrade pip
35+
36+
- name: Setup Terraform
37+
uses: hashicorp/setup-terraform@v2
38+
39+
- name: Setup TFLint
40+
uses: terraform-linters/setup-tflint@v3
41+
42+
- name: Get CID versions
43+
id: versions
44+
run: |
45+
# Get CID CFN version from first Description line
46+
CFN_VERSION=$(find . -name "cid-cfn.yml" -type f -exec grep "Description.*Cloud Intelligence Dashboards" {} \; | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+' | head -1)
47+
echo "Using local CFN version: $CFN_VERSION"
48+
echo "cid_cfn_version=$CFN_VERSION" >> $GITHUB_OUTPUT
49+
50+
# Get Data Export version
51+
EXPORT_VERSION=$(curl -s https://raw.githubusercontent.com/aws-solutions-library-samples/cloud-intelligence-dashboards-data-collection/main/data-exports/deploy/data-exports-aggregation.yaml | grep Description | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+' | head -1)
52+
echo "data_export_version=$EXPORT_VERSION" >> $GITHUB_OUTPUT
53+
54+
- name: Create terraform directory and tfvars file
55+
run: |
56+
57+
# Create terraform.tfvars file
58+
cat > ./terraform/terraform.tfvars << EOF
59+
global_values = {
60+
destination_account_id = "${{ secrets.AWS_ACCOUNT_ID }}"
61+
source_account_ids = "${{ secrets.AWS_ACCOUNT_ID }}"
62+
aws_region = "${{ secrets.AWS_REGION }}"
63+
quicksight_user = "${{ secrets.QUICKSIGHT_USER }}"
64+
cid_cfn_version = "${{ steps.versions.outputs.cid_cfn_version }}"
65+
data_export_version = "${{ steps.versions.outputs.data_export_version }}"
66+
environment = "dev"
67+
}
68+
EOF
69+
70+
- name: Configure AWS Credentials
71+
uses: aws-actions/configure-aws-credentials@v2
72+
with:
73+
role-to-assume: ${{ secrets.AWS_ROLE }}
74+
aws-region: ${{ secrets.AWS_REGION }}
75+
role-duration-seconds: 3600
76+
role-skip-session-tagging: true
77+
78+
- name: Initialize Terraform
79+
working-directory: ./terraform
80+
run: terraform init
81+
82+
- name: Run TFLint
83+
working-directory: ./terraform
84+
run: tflint --format=compact
85+
86+
- name: Terraform Format Check
87+
working-directory: ./terraform
88+
run: terraform fmt -check -recursive
89+
90+
- name: Terraform Validate
91+
working-directory: ./terraform
92+
run: terraform validate
93+
94+
- name: Prepare deploy and cleanup scripts
95+
run: |
96+
97+
# Create a new backend.tf file with S3 configuration
98+
cat > ./terraform/backend.tf << EOF
99+
terraform {
100+
backend "s3" {
101+
bucket = "${{ secrets.BACKEND_S3_BUCKET }}"
102+
key = "terraform/cid-test/terraform.tfstate"
103+
region = "${{ secrets.AWS_REGION }}"
104+
}
105+
}
106+
EOF
107+
108+
# Create provider override
109+
cat > ./terraform/local_override.tf << EOF
110+
provider "aws" {
111+
alias = "destination_account"
112+
# This will use the same credentials as the default provider
113+
}
114+
EOF
115+
116+
- name: Run deploy script
117+
run: |
118+
export DATABASE_NAME="cid_data_export"
119+
export RESOURCE_PREFIX="cid-tf"
120+
export BACKEND_TYPE="s3"
121+
export S3_BUCKET="${{ secrets.BACKEND_S3_BUCKET }}"
122+
export S3_KEY="terraform/cid-test/terraform.tfstate"
123+
export S3_REGION="${{ secrets.AWS_REGION }}"
124+
./terraform/terraform-test/deploy.sh
125+
126+
- name: Run cleanup script
127+
if: always()
128+
run: |
129+
export RESOURCE_PREFIX="cid-tf"
130+
export BACKEND_TYPE="s3"
131+
export S3_BUCKET="${{ secrets.BACKEND_S3_BUCKET }}"
132+
export S3_KEY="terraform/cid-test/terraform.tfstate"
133+
export S3_REGION="${{ secrets.AWS_REGION }}"
134+
./terraform/terraform-test/cleanup.sh
135+

0 commit comments

Comments
 (0)