Skip to content

Greenfield-related workflows #121

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 85 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
a04e6e3
WIP workflows
bennavapbc May 22, 2025
c3c379e
WIP workflows
bennavapbc May 22, 2025
f570a34
Update test-gf
bennavapbc May 22, 2025
1144b1c
test
bennavapbc May 22, 2025
c103f75
Remove
bennavapbc May 22, 2025
1045567
Test
bennavapbc May 22, 2025
00e90f4
Fix typo
bennavapbc May 22, 2025
0058e64
Update ECR repo
bennavapbc May 22, 2025
bab868c
Include SHA in tag
bennavapbc May 23, 2025
4773393
Update promote-gf
bennavapbc May 23, 2025
c9c15fb
Temp
bennavapbc May 23, 2025
5eb1ea0
Revert
bennavapbc May 23, 2025
9824ce8
Fix role
bennavapbc May 23, 2025
43334d1
Test
bennavapbc May 23, 2025
ad647d7
Test
bennavapbc May 23, 2025
27ad528
Testing
bennavapbc May 23, 2025
4f300d2
Test
bennavapbc May 23, 2025
c311485
Test
bennavapbc May 23, 2025
072252e
Test
bennavapbc May 23, 2025
06ce1fe
Test
bennavapbc May 23, 2025
ba4749a
Test
bennavapbc May 23, 2025
ca8b783
Test
bennavapbc May 23, 2025
8542d49
Test
bennavapbc May 28, 2025
46b6c7b
Test
bennavapbc May 29, 2025
91330f5
Fix
bennavapbc May 29, 2025
f0574e2
Test
bennavapbc May 29, 2025
8d52ed9
Revert
bennavapbc May 29, 2025
69e204c
WIP
bennavapbc May 29, 2025
caac0d8
Fix
bennavapbc May 29, 2025
7f237b4
Test
bennavapbc May 30, 2025
0f19ea0
test
bennavapbc May 30, 2025
6613606
Remove on push
bennavapbc May 30, 2025
77a5910
Test
bennavapbc May 30, 2025
cdbbab8
test
bennavapbc May 30, 2025
93631d8
Fix permissions
bennavapbc May 30, 2025
a47e462
Add 'needs'
bennavapbc May 30, 2025
4db8d6f
Test
bennavapbc May 30, 2025
c45e7c9
test
bennavapbc May 31, 2025
c0ba725
Test
bennavapbc May 31, 2025
1ae2bcf
Test
bennavapbc Jun 2, 2025
10a4820
Test
bennavapbc Jun 2, 2025
5359c21
Tet
bennavapbc Jun 2, 2025
4754891
Test
bennavapbc Jun 2, 2025
850c579
test
bennavapbc Jun 2, 2025
a684411
test
bennavapbc Jun 2, 2025
3ff3e45
test
bennavapbc Jun 2, 2025
ebe39bb
Test
bennavapbc Jun 2, 2025
d9afb3f
Test
bennavapbc Jun 2, 2025
d2359d2
Remove >dev/null
bennavapbc Jun 2, 2025
cc98e82
Add
bennavapbc Jun 2, 2025
2c68849
Test
bennavapbc Jun 2, 2025
f36ae51
Fix prefix
bennavapbc Jun 2, 2025
0fcb247
Test
bennavapbc Jun 2, 2025
d613433
Fix
bennavapbc Jun 2, 2025
79d6cbf
Fix
bennavapbc Jun 2, 2025
aabdd76
Revert
bennavapbc Jun 2, 2025
e099ed8
Rename
bennavapbc Jun 2, 2025
19b8269
Testing
bennavapbc Jun 2, 2025
ad18c5c
Test
bennavapbc Jun 2, 2025
c6058b0
Fix
bennavapbc Jun 2, 2025
128704d
Test
bennavapbc Jun 2, 2025
26f7e72
Fix
bennavapbc Jun 2, 2025
8865c70
Test
bennavapbc Jun 2, 2025
9878400
Fix
bennavapbc Jun 2, 2025
ce5b0c3
Test
bennavapbc Jun 2, 2025
1ab220f
Add summary
bennavapbc Jun 2, 2025
e23cbbf
Fix
bennavapbc Jun 2, 2025
5decad2
Text
bennavapbc Jun 2, 2025
4953c39
Formatting
bennavapbc Jun 3, 2025
9b1bd60
Tset
bennavapbc Jun 3, 2025
606e769
Test
bennavapbc Jun 3, 2025
fd1dd4f
Fix
bennavapbc Jun 3, 2025
1a20f14
Test
bennavapbc Jun 3, 2025
8b8b628
Update summary
bennavapbc Jun 4, 2025
c563c3e
Update event client to 3.3.6-gf-SNAPSHOT
bennavapbc Jun 10, 2025
30e4df0
Fix ab2d branch
bennavapbc Jun 11, 2025
d35525d
Comment out step
bennavapbc Jun 11, 2025
85084d2
Comment out step
bennavapbc Jun 11, 2025
6f5a512
Update run-name
bennavapbc Jun 11, 2025
1fb95dd
Fix promote-gf
bennavapbc Jun 11, 2025
cd72a8e
Finalize workflows
bennavapbc Jun 16, 2025
079d61f
Finalize workflows
bennavapbc Jun 16, 2025
52223ed
Revert
bennavapbc Jun 16, 2025
be854fa
fix
bennavapbc Jun 17, 2025
c2fdd6f
Fix
bennavapbc Jun 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions .github/workflows/build-gf.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Build-gf
run-name: build-gf

on:
workflow_call:
workflow_dispatch:

jobs:
build:
runs-on: codebuild-ab2d-contracts-${{github.run_id}}-${{github.run_attempt}}
env:
ECR_REPO: ab2d-contracts
TAG_PREFIX: contracts-service
AWS_ACCOUNT: ${{ secrets.GF_NON_PROD_ACCOUNT }}
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b # v4.5.0
with:
distribution: 'adopt'
java-version: '17'

- uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2
with:
gradle-version: 8.4

- uses: cmsgov/ab2d-bcda-dpc-platform/actions/aws-params-env-action@main
with:
params: |
ARTIFACTORY_URL=/artifactory/url
ARTIFACTORY_USER=/artifactory/user
ARTIFACTORY_PASSWORD=/artifactory/password

- name: Assume role in target account
uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2
with:
aws-region: ${{ vars.AWS_REGION }}
role-to-assume: arn:aws:iam::${{ env.AWS_ACCOUNT }}:role/delegatedadmin/developer/ab2d-dev-github-actions

- name: Build libraries
run: |
gradle -b build.gradle bootJar -Dset.root.project.build.filename=true

- name: Build and push docker image
run: |
ECR_DOMAIN="$AWS_ACCOUNT.dkr.ecr.$AWS_REGION.amazonaws.com"
SHA_SHORT=$(git rev-parse --short HEAD)
aws ecr get-login-password | docker login --username AWS --password-stdin $ECR_DOMAIN
ECR_URI="$ECR_DOMAIN/$ECR_REPO"

if [ "$GITHUB_REF_NAME" == "main" ]; then
TAG_SHORT="$TAG_PREFIX-main-$SHA_SHORT"
else
TAG_SHORT="$TAG_PREFIX-$GITHUB_REF_NAME"
fi

docker build -t "$ECR_URI:$TAG_SHORT" .
docker push "$ECR_URI" --all-tags
echo "Published **$ECR_URI:$TAG_SHORT**" >> $GITHUB_STEP_SUMMARY
42 changes: 42 additions & 0 deletions .github/workflows/deploy-gf.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Deploy contracts GF
run-name: deploy-gf ${{ inputs.environment }} ${{ inputs.image_tag_suffix }}

on:
workflow_call:
inputs:
environment:
required: true
type: string
tag_suffix:
required: true
type: string
workflow_dispatch:
inputs:
environment:
description: AB2D environment
required: true
type: choice
options:
- dev
- test
- sandbox
- prod
image_tag_suffix:
description: Image tag suffix
required: false
type: string

jobs:
apply_tofu:
permissions:
contents: read
id-token: write
uses: cmsgov/ab2d/.github/workflows/terraform-microservices-gf.yml@main # TODO set to main
with:
environment: ${{ inputs.environment }}
contracts_service_image: contracts-service-${{ inputs.image_tag_suffix || github.ref }}
apply: true
ref: main
runner: codebuild-ab2d-contracts-${{github.run_id}}-${{github.run_attempt}}
secrets:
aws_account: ${{contains(fromJSON('["dev", "test"]'), inputs.environment) && secrets.GF_NON_PROD_ACCOUNT || secrets.GF_PROD_ACCOUNT}}
69 changes: 69 additions & 0 deletions .github/workflows/promote-gf.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: promote-gf
run-name: promote-gf ${{ inputs.image_tax_prefix }}

on:
workflow_call:
inputs:
tag_suffix:
required: true
type: string
workflow_dispatch:
inputs:
image_tag_suffix:
description: Docker tag suffix
required: false
type: string

permissions:
contents: read
id-token: write

jobs:
promote:
permissions:
contents: read
id-token: write
runs-on: codebuild-ab2d-contracts-${{github.run_id}}-${{github.run_attempt}}
env:
TAG_NAME: contracts-service-${{ inputs.image_tag_suffix || github.ref }}
SOURCE_REPO: ab2d-contracts
steps:
- name: Define destination repo
id: repos
run: |
echo "DEST_REPO=ab2d-contracts" >> $GITHUB_OUTPUT

- name: Authenticate to source account (pull from test)
uses: aws-actions/[email protected]
with:
aws-region: ${{ vars.AWS_REGION }}
role-to-assume: arn:aws:iam::${{ secrets.GF_NON_PROD_ACCOUNT }}:role/delegatedadmin/developer/ab2d-dev-github-actions

- name: Pull image from test ECR
id: pull-image
run: |
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
SRC_ECR="$ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com"
docker login --username AWS --password-stdin $SRC_ECR <<< $(aws ecr get-login-password)
echo "Pulling $SRC_ECR/$SOURCE_REPO:$TAG_NAME"
docker pull "$SRC_ECR/$SOURCE_REPO:$TAG_NAME"
echo "IMAGE=$SRC_ECR/$SOURCE_REPO:$TAG_NAME" >> $GITHUB_OUTPUT

- name: Authenticate to destination account (push)
uses: aws-actions/[email protected]
with:
aws-region: ${{ vars.AWS_REGION }}
role-to-assume: |
arn:aws:iam::${{ secrets.GF_PROD_ACCOUNT }}:role/delegatedadmin/developer/ab2d-sandbox-github-actions

- name: Tag and push image to destination ECR
env:
DEST_REPO: ${{ steps.repos.outputs.DEST_REPO }}
IMAGE: ${{ steps.pull-image.outputs.IMAGE }}
run: |
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
DEST_ECR="$ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com"
docker login --username AWS --password-stdin $DEST_ECR <<< $(aws ecr get-login-password)
echo "Tagging and pushing image to $DEST_ECR/$DEST_REPO:$TAG_NAME"
docker tag "$IMAGE" "$DEST_ECR/$DEST_REPO:$TAG_NAME"
docker push "$DEST_ECR/$DEST_REPO:$TAG_NAME"
81 changes: 81 additions & 0 deletions .github/workflows/test-gf.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Unit tests and static analysis GF

on:
workflow_call:
workflow_dispatch: # Allow manual trigger

jobs:
test:
permissions:
contents: read
id-token: write
runs-on: codebuild-ab2d-contracts-${{github.run_id}}-${{github.run_attempt}}
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
Comment on lines +13 to +14
Copy link
Member

@mjburling mjburling Jun 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you know what action historically required this? I haven't looked extensively, but the external actions in use here appear to be modern node...


steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b # v4.5.0
with:
distribution: 'adopt'
java-version: '17'

- uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2
with:
gradle-version: 8.4

- uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2
with:
aws-region: ${{ vars.AWS_REGION }}
role-to-assume: arn:aws:iam::${{ secrets.GF_NON_PROD_ACCOUNT }}:role/delegatedadmin/developer/ab2d-test-github-actions

- uses: cmsgov/ab2d-bcda-dpc-platform/actions/aws-params-env-action@main
env:
AWS_REGION: ${{ vars.AWS_REGION }}
with:
params: |
ARTIFACTORY_URL=/artifactory/url
ARTIFACTORY_USER=/artifactory/user
ARTIFACTORY_PASSWORD=/artifactory/password
SONAR_HOST_URL=/sonarqube/url
SONAR_TOKEN=/sonarqube/token

- uses: aws-actions/aws-secretsmanager-get-secrets@fbd65ea98e018858715f591f03b251f02b2316cb #v2.0.8
with:
secret-ids: |
HPMS_AUTH_KEY_ID, ab2d/ab2d-east-impl/module/db/ab2d_hpms_auth_key_id/2020-01-02-09-15-01
HPMS_AUTH_KEY_SECRET, ab2d/ab2d-east-impl/module/db/ab2d_hpms_auth_key_secret/2020-01-02-09-15-01
Comment on lines +47 to +51
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've got to eliminate usages of secrets manager like this.


- name: Build files
run: |
gradle build -x test --info

- name: Do tests
run: |
gradle clean test --info build

- name: Build Jar
run: |
gradle jar --info build

- name: Gradle task
run: |
gradle task

- name: SonarQube Analysis
run: |
gradle sonar \
-Dsonar.projectKey=ab2d-contracts \
-Dsonar.host.url=https://sonarqube.cloud.cms.gov \
-Dsonar.login=$SONAR_TOKEN

- name: Quality Gate
id: sonarqube-quality-gate-check
uses: sonarsource/sonarqube-quality-gate-action@master
with:
scanMetadataReportFile: build/sonar/report-task.txt
timeout-minutes: 10
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ ext {
allprojects {
apply plugin: "org.cyclonedx.bom"
dependencies {
implementation 'gov.cms.ab2d:ab2d-events-client:3.3.5'
implementation 'gov.cms.ab2d:ab2d-events-client:3.3.6'
implementation 'gov.cms.ab2d:ab2d-contracts-client:2.1.0'
implementation 'gov.cms.ab2d:ab2d-properties-client:2.1.0'
implementation "io.awspring.cloud:spring-cloud-aws:${springCloudAwsVersion}"
Expand Down
Loading