1+ name : Build and Push Taxonomy Service Image
2+
3+ on :
4+ push :
5+ tags :
6+ - ' *'
7+
8+ jobs :
9+ build-and-push :
10+ runs-on : ubuntu-latest
11+
12+ steps :
13+ # Step 1: Checkout the code
14+ - name : Checkout code
15+ uses : actions/checkout@v2
16+
17+ # Step 2: Set up JDK 11 and Maven
18+ - name : Set up JDK 11 and Maven
19+ uses : actions/setup-java@v3
20+ with :
21+ distribution : ' temurin'
22+ java-version : ' 11'
23+ cache : ' maven'
24+
25+ # Step 4: Build the project
26+ - name : Build Taxonomy API Service
27+ run : |
28+ mvn clean install -DskipTests=true \
29+ -DCLOUD_STORE_GROUP_ID=${{ vars.CLOUD_STORE_GROUP_ID }} \
30+ -DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \
31+ -DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }}
32+
33+ # Step 5: Package the project
34+ - name : Package Taxonomy API Service
35+ run : |
36+ cd taxonomy-api
37+ mvn play2:dist -pl taxonomy-service \
38+ -DCLOUD_STORE_GROUP_ID=${{ vars.CLOUD_STORE_GROUP_ID }} \
39+ -DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \
40+ -DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }}
41+
42+ # Step 6: Set up Login to Docker registry
43+ - name : Determine registry and login
44+ run : |
45+ if [[ -n "${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}" ]]; then
46+ echo "Using Google Container Registry"
47+ echo "${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}" | base64 --decode > $HOME/gcloud-key.json
48+ gcloud auth activate-service-account --key-file=$HOME/gcloud-key.json
49+ gcloud auth configure-docker ${{ secrets.REGISTRY_NAME }}
50+ REGISTRY_URL=$(echo "${{ secrets.REGISTRY_URL }}" | tr '[:upper:]' '[:lower:]')
51+
52+ elif [[ -n "${{ secrets.REGISTRY_USERNAME }}" && -n "${{ secrets.REGISTRY_PASSWORD }}" ]]; then
53+ echo "Logging in to custom Docker registry"
54+ echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login ${{ secrets.REGISTRY_NAME }} \
55+ --username ${{ secrets.REGISTRY_USERNAME }} --password-stdin
56+ REGISTRY_URL=$(echo "${{ secrets.REGISTRY_URL }}" | tr '[:upper:]' '[:lower:]')
57+
58+ else
59+ echo "Using GitHub Container Registry (GHCR)"
60+ REPO_NAME_LOWERCASE=$(echo "${GITHUB_REPOSITORY}" | tr '[:upper:]' '[:lower:]')
61+ echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
62+ REGISTRY_URL="ghcr.io/$REPO_NAME_LOWERCASE"
63+ fi
64+
65+ echo "REGISTRY_URL=${REGISTRY_URL}" >> $GITHUB_ENV
66+
67+ # Step 7: Build Docker image
68+ - name : Build Docker Image
69+ run : |
70+ IMAGE_NAME="taxonomy-api"
71+ IMAGE_TAG=$(echo "${{ github.ref_name }}_$(echo $GITHUB_SHA | cut -c1-7)" | tr '[:upper:]' '[:lower:]')
72+ docker build -f build/taxonomy-service/Dockerfile -t $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG} .
73+
74+ echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV
75+ echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_ENV
76+
77+ # Step 8: Push Docker Image
78+ - name : Push Docker Image
79+ run : |
80+ docker push $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG}
0 commit comments