Skip to content

vtd-be-java-order/refs/remotes/main~phu-teso #4115

vtd-be-java-order/refs/remotes/main~phu-teso

vtd-be-java-order/refs/remotes/main~phu-teso #4115

Workflow file for this run

name: vtd be java
on:
repository_dispatch:
types:
- vtd-be-java-**
env:
TRIGGERING_ACTOR: ${{ github.event.client_payload.triggering_actor}}
TRIGGERING_REF: ${{ github.event.client_payload.triggering_ref}}
TRIGGERING_REPOSITORY: ${{ github.event.client_payload.triggering_repo}}
TRIGGERING_SERVICE_NAME: ${{ github.event.client_payload.triggering_service_name}}
TRIGGERING_VERSION: ${{ github.event.client_payload.triggering_version}}
TRIGGERING_HASH: ${{ github.event.client_payload.triggering_hash}}
GCP_SERVICE_ACCOUNT_KEY: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}
GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
GKE_ZONE: ${{ secrets.GKE_ZONE }}
DEPLOYMENT_NAME: ${{ secrets.DEPLOYMENT_IMAGE_NAME }}${{ github.event.client_payload.triggering_service_name }}
GAR_HOST: ${{ secrets.GAR_HOST }}
IMAGE_NAME: ${{ secrets.DEPLOYMENT_IMAGE_NAME }}${{ github.event.client_payload.triggering_service_name }}
ENV_PROPERTIES: ${{secrets.ENV_PROPERTIES }}
SPRING_PROFILES_ACTIVE: ${{ github.event.client_payload.triggering_env }}
jobs:
setup-build-publish-deploy:
environment: ${{ github.event.client_payload.triggering_env }}
env:
GKE_CLUSTER: ${{ secrets.GKE_CLUSTER }}
GAR_NAME: ${{ secrets.GAR_NAME }}
name: Setup build publish deploy
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
repository: ${{ env.TRIGGERING_REPOSITORY }}
token: ${{ secrets.GH_PAT }}
ref: ${{ env.TRIGGERING_HASH }}
- name: Clone properties file
uses: actions/checkout@v4
with:
repository: ${{ secrets.VTD_REPOSITORY_ENV }}
sparse-checkout: v4-java/application-${{ github.event.client_payload.triggering_env }}.properties
path: temp/vtd-be-env/
token: ${{ secrets.GH_PAT }}
- name: Switch profile
run: |
sed -i "s|spring.profiles.active=local|spring.profiles.active=${{ github.event.client_payload.triggering_env }}|g" src/main/resources/application.properties
mv temp/vtd-be-env/v4-java/application-${{ github.event.client_payload.triggering_env }}.properties src/main/resources/application-${{ github.event.client_payload.triggering_env }}.properties
- name: Authen GCP
uses: "google-github-actions/auth@v2"
with:
credentials_json: "${{ env.GCP_SERVICE_ACCOUNT_KEY }}"
- name: Setup GCP
uses: google-github-actions/setup-gcloud@v2
- name: Configuration
run: |
# Get GKE credentials
gcloud components install gke-gcloud-auth-plugin
export USE_GKE_GCLOUD_AUTH_PLUGIN=True
gcloud container clusters get-credentials $GKE_CLUSTER --zone=$GKE_ZONE
# Configure Docker
gcloud auth configure-docker --quiet
gcloud auth configure-docker $GAR_HOST --quiet
- name: Setup java 21
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "21"
- name: Build and package project
run: mvn -B package -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE --file pom.xml -DskipTests -q
- name: Build Docker Image
run: docker build -t $IMAGE_NAME:$TRIGGERING_VERSION . && docker images
- name: Push Docker Image to Artifact Registry
run: |
docker tag $IMAGE_NAME:$TRIGGERING_VERSION $GAR_HOST/$GCP_PROJECT_ID/$GAR_NAME/$IMAGE_NAME:$TRIGGERING_VERSION
docker tag $IMAGE_NAME:$TRIGGERING_VERSION $GAR_HOST/$GCP_PROJECT_ID/$GAR_NAME/$IMAGE_NAME:$TRIGGERING_HASH
docker tag $IMAGE_NAME:$TRIGGERING_VERSION $GAR_HOST/$GCP_PROJECT_ID/$GAR_NAME/$IMAGE_NAME:latest
docker push $GAR_HOST/$GCP_PROJECT_ID/$GAR_NAME/$IMAGE_NAME:$TRIGGERING_VERSION
docker push $GAR_HOST/$GCP_PROJECT_ID/$GAR_NAME/$IMAGE_NAME:$TRIGGERING_HASH
docker push $GAR_HOST/$GCP_PROJECT_ID/$GAR_NAME/$IMAGE_NAME:latest
- name: Update Deployment image URL
run: |
sed -i "s|image: $GAR_HOST/$GCP_PROJECT_ID/$GAR_NAME/$IMAGE_NAME:.*|image: $GAR_HOST/$GCP_PROJECT_ID/$GAR_NAME/$IMAGE_NAME:$TRIGGERING_VERSION|g" overlays/${{ env.TRIGGERING_SERVICE_NAME }}/${{ env.SPRING_PROFILES_ACTIVE }}/*.yaml
- name: Deploy to GKE
run: |
kubectl apply -R -f overlays/${{ env.TRIGGERING_SERVICE_NAME }}/${{ env.SPRING_PROFILES_ACTIVE }}