Skip to content

Build PVPuller service #5

Build PVPuller service

Build PVPuller service #5

name: Build PVPuller service
permissions:
contents: write
id-token: write
on:
workflow_dispatch:
inputs:
environment:
description: Choose the environment to build
type: environment
# code_branch:
# description: Branch to build validation
# required: false
trivy_test_scan_pvpuller:
description: "Run Trivy Test Scan"
required: true
type: boolean
default: false
jobs:
build-pvpuller:
name: Build pvpuller image
runs-on: ubuntu-latest
environment: ${{ inputs.environment }}
env:
ECR_REPO_PVPULLER: "crdc-hub-pvpuller"
REGION: "us-east-1"
# CODE_BRANCH: "${{ github.event.inputs.code_branch }}"
AWS_ROLE_TO_ASSUME: ${{ secrets.AWS_ROLE_TO_ASSUME }}
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
steps:
- name: Checkout Code Repository
uses: actions/checkout@v4
with:
# ref: ${{ env.CODE_BRANCH }}
ref: ${{ github.ref_name }}
submodules: true
- name: Extract branch name
id: extract_branch
run: |
BRANCH_NAME=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}
echo "branch=$BRANCH_NAME" >> "$GITHUB_ENV"
echo "Current branch is: $BRANCH_NAME"
- name: Build Pv Puller Docker Image
id: build-image
env:
REGISTRY_URL: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com
#PV_PULLER_IMAGE_NAME: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPO_PVPULLER }}:${{ env.CODE_BRANCH }}.${{ github.run_number }}
PV_PULLER_IMAGE_NAME: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPO_PVPULLER }}:${{ env.branch }}.${{ github.run_number }}
run: |
echo "Building: $PV_PULLER_IMAGE_NAME"
docker build --no-cache -t $PV_PULLER_IMAGE_NAME -f pv_puller.dockerfile .
- name: Run Trivy test scan for PV Puller Docker Image
id: trivy-scan-pvpuller
if: github.event.inputs.trivy_test_scan_pvpuller == 'true'
env:
REGISTRY_URL: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com
#PV_PULLER_IMAGE_NAME: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPO_PVPULLER }}:${{ env.CODE_BRANCH }}.${{ github.run_number }}
PV_PULLER_IMAGE_NAME: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPO_PVPULLER }}:${{ env.branch }}.${{ github.run_number }}
uses: aquasecurity/trivy-action@master
with:
image-ref: '${{ env.PV_PULLER_IMAGE_NAME }}'
format: 'table'
exit-code: 1
severity: 'CRITICAL,HIGH'
- name: Configure AWS Role to assume using OIDC authentication
uses: aws-actions/configure-aws-credentials@v4
with:
aws-region: ${{ secrets.AWS_REGION }}
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
- name: Login to Amazon ECR
id: login-ecr
env:
REGISTRY_URL: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com
run: |
aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin $REGISTRY_URL
- name: Push docker Image for PV Puller
if: success()
env:
REGISTRY_URL: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.REGION }}.amazonaws.com
#PV_PULLER_IMAGE_NAME: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPO_PVPULLER }}:${{ env.CODE_BRANCH }}.${{ github.run_number }}
PV_PULLER_IMAGE_NAME: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPO_PVPULLER }}:${{ env.branch }}.${{ github.run_number }}
run: |
echo "Pushing: $PV_PULLER_IMAGE_NAME"
docker push $PV_PULLER_IMAGE_NAME
#1st try - name: scan docker image with AWS inspector
# id: scan-inspector
# env:
# REGISTRY_URL: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.REGION }}.amazonaws.com
# PV_PULLER_IMAGE_NAME: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPO_PVPULLER }}:${{ env.CODE_BRANCH }}.${{ github.run_number }}
# run: |
# echo "AWS Inspector scan for image: $PV_PULLER_IMAGE_NAME"
# SCAN_ID=$(aws inspector2 start-scan --resource-group-arn arn:aws:inspector2:${{ secrets.AWS_REGION }}:${{ secrets.AWS_ACCOUNT_ID }}:resourcegroup/default \
# -image-arn arn:aws:ecr:${{ secrets.AWS_REGION }}:${{ secrets.AWS_ACCOUNT_ID }}:repository/$ECR_REPO)
# echo "Scan started: $SCAN_ID"
# - name: wait for scan results
# run: |
# echo "Waiting for scan results..."
# sleep 60
# - name: get scan findings
# env:
# AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
# run: |
# aws inspector2 list-findings --filter '{
# "awsAccountId": { "equals": ["'$AWS_ACCOUNT_ID'"] },
# "severity": { "equals": ["HIGH", "CRITICAL"] }
# }' > findings.json
# cat findings.json
# - name: Fail if vulnerabilities are found
# if: github.event.inputs.trivy_test_scan_file_validation == 'true'
# run: |
# CRITICAL_COUNT=$(jq '.findings | map(select(.severity == "CRITICAL")) | length' findings.json)
# HIGH_COUNT=$(jq '.findings | map(select(.severity == "HIGH")) | length' findings.json)
# if [[ $CRITICAL_COUNT -gt 0 || $HIGH_COUNT -gt 0 ]]; then
# echo "Securities vuls found"
# exit 1
# else
# echo "Pass"
# fi