|
60 | 60 |
|
61 | 61 | echo "π οΈ Deployment stage: $STAGE"
|
62 | 62 |
|
| 63 | + # Clone private repo for prod config |
| 64 | + - name: Clone Private Repo for Prod Config |
| 65 | + if: env.STAGE == 'prod' |
| 66 | + run: | |
| 67 | + echo "π Cloning private repo for prod configuration..." |
| 68 | + git clone https://${{ secrets.PRIVATE_REPO_KEY }}@${{ secrets.PRIVATE_REPO }} private-config |
| 69 | + echo "β
Cloned private config repo" |
| 70 | +
|
63 | 71 | # Terraform Init & Workspace
|
64 | 72 | - name: Terraform Init & Workspace
|
65 | 73 | working-directory: ${{ env.TF_WORKING_DIR }}
|
|
71 | 79 | - name: Terraform Apply
|
72 | 80 | working-directory: ${{ env.TF_WORKING_DIR }}
|
73 | 81 | run: |
|
74 |
| - terraform apply -var-file="${STAGE}_config.tfvars" -auto-approve \ |
75 |
| - -var "stage=${STAGE}" |
| 82 | + if [ "${STAGE}" == "prod" ]; then |
| 83 | + echo "Applying Terraform with private prod configuration..." |
| 84 | + terraform apply -var-file=../private-config/prod_config.tfvars -auto-approve |
| 85 | + else |
| 86 | + echo "Applying Terraform with public dev configuration..." |
| 87 | + terraform apply -var-file="${STAGE}_config.tfvars" -auto-approve |
| 88 | + fi |
76 | 89 |
|
77 | 90 | # Get Outputs: App IP, Verifier IP, S3 Bucket
|
78 | 91 | - name: Get Terraform Outputs
|
@@ -117,8 +130,7 @@ jobs:
|
117 | 130 | working-directory: ${{ env.TF_WORKING_DIR }}
|
118 | 131 | run: |
|
119 | 132 | terraform apply -var-file="${STAGE}_config.tfvars" \
|
120 |
| - -target=aws_instance.log_verifier -auto-approve \ |
121 |
| - -var "stage=${STAGE}" |
| 133 | + -target=aws_instance.log_verifier -auto-approve |
122 | 134 |
|
123 | 135 | # Get Verifier IP
|
124 | 136 | - name: Get Verifier IP
|
@@ -164,55 +176,19 @@ jobs:
|
164 | 176 |
|
165 | 177 | echo "π All required logs are present in S3"
|
166 | 178 |
|
167 |
| - # Print Logs from Verifier EC2 |
168 |
| - - name: Print Logs from Verifier EC2 |
169 |
| - run: | |
170 |
| - echo "π Fetching logs from /mylogs/${STAGE} on verifier EC2" |
171 |
| -
|
172 |
| - # Retry SSH if EC2 not yet ready |
173 |
| - for attempt in {1..5}; do |
174 |
| - ssh -o StrictHostKeyChecking=no ubuntu@${VERIFIER_IP} "echo 'β
SSH to verifier successful for log fetch'" && break |
175 |
| - echo "β³ Verifier not ready for log fetch, retrying SSH (attempt $attempt)..." |
176 |
| - sleep 15 |
177 |
| - done |
178 |
| -
|
179 |
| - # Print system log |
180 |
| - ssh -o StrictHostKeyChecking=no ubuntu@${VERIFIER_IP} \ |
181 |
| - "if [ -f /mylogs/${STAGE}/system/cloud-init.log ]; then |
182 |
| - echo 'π ====== system/cloud-init.log ======' |
183 |
| - cat /mylogs/${STAGE}/system/cloud-init.log | tail -n 20 |
184 |
| - else |
185 |
| - echo 'β system/cloud-init.log not found' |
186 |
| - fi" |
187 |
| -
|
188 |
| - # Print app log |
189 |
| - ssh -o StrictHostKeyChecking=no ubuntu@${VERIFIER_IP} \ |
190 |
| - "if [ -f /mylogs/${STAGE}/app/my-app.log ]; then |
191 |
| - echo 'π ====== app/my-app.log ======' |
192 |
| - cat /mylogs/${STAGE}/app/my-app.log | tail -n 20 |
193 |
| - else |
194 |
| - echo 'β app/my-app.log not found' |
195 |
| - fi" |
196 |
| -
|
197 |
| - echo "β
Printed last 20 lines of logs from verifier EC2" |
198 |
| -
|
199 |
| - # # Verify Logs in S3 using AWS CLI |
200 |
| - # - name: Verify Logs in S3 |
201 |
| - # run: | |
202 |
| - # echo "π¦ Checking for logs in S3 bucket: $S3_BUCKET" |
203 |
| - # aws s3 ls s3://$S3_BUCKET/${STAGE}/system/cloud-init.log || { echo "β system logs missing"; exit 1; } |
204 |
| - # aws s3 ls s3://$S3_BUCKET/${STAGE}/app/my-app.log || { echo "β app logs missing"; exit 1; } |
205 |
| - # echo "β
Logs found in S3 bucket" |
206 |
| - |
| 179 | + |
207 | 180 |
|
208 | 181 | # Destroy Infrastructure
|
209 | 182 | - name: Destroy Infrastructure
|
210 | 183 | if: always()
|
211 | 184 | working-directory: ${{ env.TF_WORKING_DIR }}
|
212 | 185 | run: |
|
213 | 186 | echo "ποΈ Destroying infrastructure for stage: ${STAGE}"
|
214 |
| - terraform destroy -var-file="${STAGE}_config.tfvars" -auto-approve \ |
215 |
| - -var "stage=${STAGE}" |
| 187 | + if [ "${STAGE}" == "prod" ]; then |
| 188 | + terraform destroy -var-file=../private-config/prod_config.tfvars -auto-approve |
| 189 | + else |
| 190 | + terraform destroy -var-file="${STAGE}_config.tfvars" -auto-approve |
| 191 | + fi |
216 | 192 |
|
217 | 193 | # Cleanup Terraform Workspace
|
218 | 194 | - name: Cleanup Terraform Workspace
|
|
0 commit comments