Skip to content

Fixed oauth2 enhance token - build authentication-service, build node… #268

Fixed oauth2 enhance token - build authentication-service, build node…

Fixed oauth2 enhance token - build authentication-service, build node… #268

# This is a basic workflow to help you get started with Actions
name: CI - Build and push Docker images - Person Service
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ master ]
# Environment variables available to all jobs and steps in this workflow
env:
GKE_PROJECT: ${{ secrets.GKE_PROJECT }}
GKE_EMAIL: ${{ secrets.GKE_EMAIL }}
GITHUB_SHA: ${{ github.sha }}
GKE_ZONE: ${{ secrets.GKE_ZONE }}
GKE_CLUSTER: ${{ secrets.GKE_CLUSTER }}
GKE_KEY: ${{ secrets.GKE_KEY }}
IMAGE: person-service
AWS_REGION: ${{ secrets.AWS_REGION }}
ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY }}
ECS_SERVICE: "person-service"
ECS_CLUSTER: ${{ secrets.ECS_CLUSTER }}
ECS_TASK_DEFINITION: ".github/.aws/person-service-task-definition.json"
CONTAINER_NAME: "person-service"
SPRING_DATA_MONGODB_URI: ${{ secrets.SPRING_DATA_MONGODB_URI }}
COM_MICROSERVICE_AUTHENTICATION_JWT_KEY_VALUE: ${{ secrets.COM_MICROSERVICE_AUTHENTICATION_JWT_KEY_VALUE }}
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
if: contains(toJson(github), 'build person-service')
name: Build Jar/Docker Image and Publish to DockerHub
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout
uses: actions/checkout@v3
# Set up JDK
- name: JDK
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '25'
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
# Login to Dockerhub
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# - name: Configure AWS credentials
# uses: aws-actions/configure-aws-credentials@13d241b293754004c80624b5567555c4a39ffbe3
# with:
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# aws-region: ${{ env.AWS_REGION }}
#
# - name: Login to Amazon ECR
# id: login-ecr
# uses: aws-actions/amazon-ecr-login@aaf69d68aa3fb14c1d5a6be9ac61fe15b48453a2
# Build Docker image using docker:build
# - name: Install Custom Spring Data Common Jar
# run: |
# mvn install:install-file -Dfile=docs/spring-data-commons-3.2.1-SNAPSHOT.jar -DgroupId=org.springframework.data -DartifactId=spring-data-commons -Dversion=3.2.1-SNAPSHOT -Dpackaging=jar
- name: Create Custom settings.xml
uses: s4u/maven-settings-action@v3.0.0
with:
servers: |
[{
"id": "github",
"username": "${{ secrets.USERNAME_MAVEN_PKG }}",
"password": "${{ secrets.PASSWORD_MAVEN_PKG }}"
},{
"id": "github-sba",
"username": "${{ secrets.USERNAME_MAVEN_PKG }}",
"password": "${{ secrets.PASSWORD_MAVEN_PKG }}"
}]
# Build Docker image using docker:build
- name: Build Service using docker:build
run: |
SPRING_CLOUD_CONSUL_CONFIG_ENABLED=false mvn clean package -Ddocker.image-tag=${{ env.GITHUB_SHA }} -DskipTests -q -pl person-service -am -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn docker:build
- name: Push Image(amd64/arm64)
id: docker_build
uses: docker/build-push-action@v2
with:
context: ./person-service/target/docker/person-service/build
file: ./person-service/target/docker/person-service/build/Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: |
fielcapao/microservices-design-patterns-person-service:latest
${{ secrets.ECR_REPOSITORY }}/person-service:latest
${{ secrets.ECR_REPOSITORY }}/person-service:${{ env.GITHUB_SHA }}
# TODO - Replace Not Working
# - name: Replace secrets
# run: |
# sed -i 's/SPRING_DATA_MONGODB_URI_REPLACE\/${{ env.SPRING_DATA_MONGODB_URI }}/g' ${{ env.ECS_TASK_DEFINITION }}
# sed -i 's/COM_MICROSERVICE_AUTHENTICATION_JWT_KEY_VALUE_REPLACE\/${{ env.COM_MICROSERVICE_AUTHENTICATION_JWT_KEY_VALUE }}/g' ${{ env.ECS_TASK_DEFINITION }}
#
# - name: Fill in the new image ID in the Amazon ECS task definition
# id: task-def
# uses: aws-actions/amazon-ecs-render-task-definition@v1
# with:
# task-definition: ${{ env.ECS_TASK_DEFINITION }}
# container-name: ${{ env.CONTAINER_NAME }}
# image: ${{ secrets.ECR_REPOSITORY }}/person-service:latest
- name: Deploy Amazon ECS task definition
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
task-definition: ${{ env.ECS_TASK_DEFINITION }}
service: ${{ env.ECS_SERVICE }}
cluster: ${{ env.ECS_CLUSTER }}
wait-for-service-stability: true
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}
# Setup gcloud CLI
# - name: Setup Google Cloud
# uses: google-github-actions/setup-gcloud@master
# with:
# project_id: ${{ secrets.GKE_PROJECT }}
# service_account_key: ${{ secrets.GKE_KEY }}
# export_default_credentials: true
#
## Configure docker to use the gcloud command-line tool as a credential helper
# - name: Set up docker to authenticate
# run: |
# gcloud --quiet auth configure-docker
# gcloud info
## Release Tag to Google Cloud
# - name: Publish image to Google Cloud
# run: |
# docker tag $IMAGE:latest eu.gcr.io/$GKE_PROJECT/$IMAGE:$GITHUB_SHA
# docker push eu.gcr.io/$GKE_PROJECT/$IMAGE:$GITHUB_SHA