Skip to content

Commit 4d5b7fe

Browse files
authored
Merge pull request #148 from NHSDigital/bugfix/eja-deployment-pipeline
Bugfix/eja deployment pipeline
2 parents 5b1d4fd + 70bafbb commit 4d5b7fe

4 files changed

Lines changed: 54 additions & 13 deletions

File tree

.github/workflows/cicd-3-deploy.yaml

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ jobs:
7979
deploy:
8080
name: "Deploy to an environment"
8181
runs-on: ubuntu-latest
82-
needs: [ metadata ]
82+
needs: [metadata]
83+
environment: ${{ inputs.environment }}
8384
timeout-minutes: 10
8485
permissions:
8586
id-token: write
@@ -93,7 +94,21 @@ jobs:
9394
- name: "Set up Python"
9495
uses: actions/setup-python@v5
9596
with:
96-
python-version: '3.13'
97+
python-version: "3.13"
98+
99+
- name: "Checkout Repository"
100+
uses: actions/checkout@v4
101+
102+
- name: "Build lambda artefact"
103+
run: |
104+
make dependencies install-python
105+
make build
106+
107+
- name: "Upload lambda artefact"
108+
uses: actions/upload-artifact@v4
109+
with:
110+
name: lambda
111+
path: dist/lambda.zip
97112

98113
- name: "Download Built Lambdas"
99114
uses: actions/download-artifact@v4
@@ -118,10 +133,10 @@ jobs:
118133
# just planning for now for safety and until review
119134
run: |
120135
mkdir -p ./build
121-
echo "Running: make terraform env=$ENVIRONMENT workspace=$WORKSPACE stack=networking tf-command=plan"
122-
make terraform env=$ENVIRONMENT stack=networking tf-command=plan workspace=$WORKSPACE
123-
echo "Running: make terraform env=$ENVIRONMENT workspace=$WORKSPACE stack=api-layer tf-command=plan"
124-
make terraform env=$ENVIRONMENT stack=api-layer tf-command=plan workspace=$WORKSPACE
136+
echo "Running: make terraform env=$ENVIRONMENT workspace=$WORKSPACE stack=networking tf-command=apply"
137+
make terraform env=$ENVIRONMENT stack=networking tf-command=apply workspace=$WORKSPACE
138+
echo "Running: make terraform env=$ENVIRONMENT workspace=$WORKSPACE stack=api-layer tf-command=apply"
139+
make terraform env=$ENVIRONMENT stack=api-layer tf-command=apply workspace=$WORKSPACE
125140
working-directory: ./infrastructure
126141

127142
- name: "Tag the deployment using incremental semantic versioning"
@@ -168,8 +183,7 @@ jobs:
168183
body: |
169184
Auto-release created during deployment.
170185
draft: false
171-
prerelease: ${{ inputs.environment == 'ref' }}
172-
186+
prerelease: ${{ inputs.environment == 'preprod' }}
173187

174188
# TODO: complete notify step
175189
# success:

infrastructure/modules/api_gateway/iam.tf

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,38 @@ resource "aws_iam_role" "api_gateway" {
1515
}
1616

1717
data "aws_iam_policy_document" "api_gateway_logging" {
18+
#checkov:skip=CKV_AWS_356: Wildcard permissions needed for global log event reads
1819
statement {
19-
sid = "AllowCloudWatchLogging"
20+
sid = "AllowCreateLogGroup"
21+
effect = "Allow"
22+
actions = [
23+
"logs:CreateLogGroup"
24+
]
25+
resources = [
26+
"arn:aws:logs:${var.region}:${data.aws_caller_identity.current.account_id}:*"
27+
]
28+
}
29+
statement {
30+
sid = "AllowLogStreamAndEvents"
2031
effect = "Allow"
2132
actions = [
22-
"logs:CreateLogGroup",
2333
"logs:CreateLogStream",
34+
"logs:PutLogEvents"
35+
]
36+
resources = [
37+
"arn:aws:logs:${var.region}:${data.aws_caller_identity.current.account_id}:log-group:/aws/apigateway/*"
38+
]
39+
}
40+
statement {
41+
sid = "AllowDescribeAndGet"
42+
effect = "Allow"
43+
actions = [
2444
"logs:DescribeLogGroups",
2545
"logs:DescribeLogStreams",
26-
"logs:PutLogEvents",
2746
"logs:GetLogEvents",
2847
"logs:FilterLogEvents"
2948
]
30-
resources = [aws_cloudwatch_log_group.api_gateway.arn]
49+
resources = ["*"]
3150
}
3251
}
3352

infrastructure/stacks/api-layer/api_gateway.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,14 @@ resource "aws_api_gateway_domain_name" "check_eligibility" {
9999
lifecycle {
100100
create_before_destroy = true
101101
}
102+
103+
depends_on = [
104+
aws_s3_object.pem_file,
105+
data.aws_acm_certificate.imported_cert,
106+
data.aws_acm_certificate.validation_cert,
107+
module.s3_truststore_bucket,
108+
module.eligibility_signposting_api_gateway
109+
]
102110
}
103111

104112
resource "aws_api_gateway_base_path_mapping" "eligibility-signposting-api" {

infrastructure/stacks/api-layer/data.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ data "aws_acm_certificate" "validation_cert" {
1616
}
1717

1818
data "aws_kms_alias" "networking_ssm_key" {
19-
name = "alias/dev-Networking-ssm-parameters"
19+
name = "alias/${var.environment}-Networking-ssm-parameters"
2020
}
2121

2222
data "aws_ssm_parameter" "mtls_api_client_cert" {

0 commit comments

Comments
 (0)