Skip to content

Commit 46d2c35

Browse files
NAID-3322 - Review GitHub Actions NHS Best Practices (#310)
* NAID-3322 - Review GitGub Actions NHS Best Practices * Restrict permissions per job to ensure that only the least required permissions are granted in `build` workflow. * Use SHAs for GitHub Actions `actions` instead of versions to ensure we have control over exactly which version is being used in `build` workflow. * NAID-3322 - Review GitGub Actions NHS Best Practices * NAID-3322 - Review GitGub Actions NHS Best Practices * Update GitHub Action `actions` to use a named SHA rather than major version as suggested by best practices. * NAID-3322 - Review GitGub Actions NHS Best Practices * Removed unneeded in `input` for `publish` job.
1 parent 0294c7d commit 46d2c35

File tree

3 files changed

+28
-36
lines changed

3 files changed

+28
-36
lines changed

.github/workflows/build.yml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,20 @@ jobs:
1212
tests:
1313
name: Tests
1414
uses: ./.github/workflows/test.yml
15+
permissions:
16+
contents: read
1517

1618
generate-build-id:
1719
name: "Generate Build Id"
1820
needs: [ tests ]
1921
runs-on: ubuntu-latest
22+
permissions:
23+
contents: read
2024
outputs:
2125
build-id: ${{ steps.generate.outputs.buildId }}
2226
steps:
2327
- name: Checkout Repository
24-
uses: actions/checkout@v4
28+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
2529

2630
- id: generate
2731
working-directory: ./scripts
@@ -32,9 +36,9 @@ jobs:
3236
chmod +x ./create_build_id.sh
3337
3438
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
35-
GIT_BRANCH=PR
39+
GIT_BRANCH=PR
3640
elif [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" == "refs/heads/main" ]]; then
37-
GIT_BRANCH=main
41+
GIT_BRANCH=main
3842
fi
3943
4044
BUILD_ID=$(./create_build_id.sh $GIT_BRANCH ${{ github.run_number }} ${{ github.sha }})
@@ -44,12 +48,11 @@ jobs:
4448
publish-docker-image:
4549
name: "Publish docker image to ECR"
4650
needs: [ generate-build-id ]
47-
51+
permissions:
52+
contents: read
53+
id-token: write
4854
uses: ./.github/workflows/publish.yml
4955
with:
50-
directory: .
51-
repository: nhais
52-
build-context: .
5356
build-id: ${{ needs.generate-build-id.outputs.build-id }}
5457
secrets: inherit
5558

@@ -63,10 +66,9 @@ jobs:
6366
runs-on: ubuntu-latest
6467
steps:
6568
- name: Comment PR
66-
uses: thollander/actions-comment-pull-request@v3
69+
uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3.0.1
6770
with:
6871
message: |
6972
Images built and published to ECR using a Build Id of ${{ needs.generate-build-id.outputs.build-id }}
7073
comment-tag: images-built
71-
mode: upsert
72-
74+
mode: upsert

.github/workflows/publish.yml

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,6 @@ name: Publish Workflow
22
on:
33
workflow_call:
44
inputs:
5-
directory:
6-
required: true
7-
type: string
8-
repository:
9-
required: true
10-
type: string
11-
build-context:
12-
required: true
13-
type: string
145
build-id:
156
required: true
167
type: string
@@ -25,10 +16,10 @@ jobs:
2516

2617
steps:
2718
- name: Checkout Repository
28-
uses: actions/checkout@v4
19+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
2920

3021
- name: Configure AWS Credentials
31-
uses: aws-actions/configure-aws-credentials@v4
22+
uses: aws-actions/configure-aws-credentials@b47578312673ae6fa5b5096b330d9fbac3d116df #4.2.1
3223
with:
3324
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ROLE_TO_ASSUME }}
3425
role-session-name: gp2gp_github_action_build_workflow
@@ -37,11 +28,11 @@ jobs:
3728
- name: Build Docker Image
3829
run: |
3930
DOCKER_REGISTRY="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com"
40-
DOCKER_TAG="$DOCKER_REGISTRY/${{ inputs.repository }}:${{ inputs.build-id }}"
31+
DOCKER_TAG="$DOCKER_REGISTRY/nhais:${{ inputs.build-id }}"
4132
echo "DOCKER_TAG=$DOCKER_TAG" >> $GITHUB_ENV
4233
4334
# Build Image
44-
docker build -f ./${{ inputs.directory }}/Dockerfile -t $DOCKER_TAG ${{ inputs.build-context }}
35+
docker build -f ./Dockerfile -t $DOCKER_TAG .
4536
4637
- name: Login to AWS ECR
4738
run: |

.github/workflows/test.yml

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ jobs:
88
runs-on: ubuntu-latest
99
steps:
1010
- name: Checkout Repository
11-
uses: actions/checkout@v4
11+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
1212

1313
- name: Setup Java 21
14-
uses: actions/setup-java@v4
14+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 #4.7.1
1515
with:
1616
java-version: 21
1717
distribution: temurin
@@ -26,7 +26,7 @@ jobs:
2626
cp -r ./build/reports ./artifacts
2727
2828
- name: Upload Artifacts
29-
uses: actions/upload-artifact@v4
29+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 #v4.6.2
3030
if: always()
3131
with:
3232
name: Unit Test Report
@@ -35,7 +35,7 @@ jobs:
3535

3636
- name: Test Job Summary
3737
if: always()
38-
uses: test-summary/action@v2
38+
uses: test-summary/action@31493c76ec9e7aa675f1585d3ed6f1da69269a86 #v2.4.0
3939
with:
4040
paths: ./build/test-results/test/TEST-*.xml
4141

@@ -47,10 +47,10 @@ jobs:
4747
runs-on: ubuntu-latest
4848
steps:
4949
- name: Checkout Repository
50-
uses: actions/checkout@v4
50+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
5151

5252
- name: Setup Java 21
53-
uses: actions/setup-java@v4
53+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 #4.7.1
5454
with:
5555
java-version: 21
5656
distribution: temurin
@@ -65,7 +65,7 @@ jobs:
6565
cp -r ./build/reports ./artifacts
6666
6767
- name: Upload Artifacts
68-
uses: actions/upload-artifact@v4
68+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 #v4.6.2
6969
if: always()
7070
with:
7171
name: Component Test Report
@@ -74,7 +74,7 @@ jobs:
7474

7575
- name: Test Job Summary
7676
if: always()
77-
uses: test-summary/action@v2
77+
uses: test-summary/action@31493c76ec9e7aa675f1585d3ed6f1da69269a86 #v2.4.0
7878
with:
7979
paths: ./build/test-results/componentTest/TEST-*.xml
8080

@@ -84,15 +84,14 @@ jobs:
8484
integration_tests:
8585
name: Integration Tests
8686
permissions:
87-
id-token: write
8887
contents: read
8988
runs-on: ubuntu-latest
9089
steps:
9190
- name: Checkout Repository
92-
uses: actions/checkout@v4
91+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
9392

9493
- name: Setup Java
95-
uses: actions/setup-java@v4
94+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 #4.7.1
9695
with:
9796
java-version: 21
9897
distribution: temurin
@@ -122,7 +121,7 @@ jobs:
122121
cp -r ./logs ./artifacts
123122
124123
- name: Upload Artifacts
125-
uses: actions/upload-artifact@v4
124+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 #v4.6.2
126125
if: always()
127126
with:
128127
name: Integration Test Report & Docker Logs
@@ -131,7 +130,7 @@ jobs:
131130

132131
- name: Test Job Summary
133132
if: always()
134-
uses: test-summary/action@v2
133+
uses: test-summary/action@31493c76ec9e7aa675f1585d3ed6f1da69269a86 #v2.4.0
135134
with:
136135
paths: ./build/test-results/integrationTest/TEST-*.xml
137136

0 commit comments

Comments
 (0)