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