Skip to content

Commit b8228c7

Browse files
Add CI workflows for service image builds
1 parent 167f108 commit b8228c7

File tree

4 files changed

+248
-0
lines changed

4 files changed

+248
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: "Container Registry Login"
2+
description: "Reusable action for logging in to container registries using workflow inputs"
3+
inputs:
4+
registry_provider:
5+
required: false
6+
gcp_service_account_key:
7+
required: false
8+
registry_name:
9+
required: false
10+
registry_url:
11+
required: false
12+
registry_username:
13+
required: false
14+
registry_password:
15+
required: false
16+
github_token:
17+
required: false
18+
runs:
19+
using: "composite"
20+
steps:
21+
- run: |
22+
case "${{ inputs.registry_provider }}" in
23+
"gcp")
24+
echo "Using Google Container Registry"
25+
echo "${{ inputs.gcp_service_account_key }}" | base64 --decode > $HOME/gcloud-key.json
26+
gcloud auth activate-service-account --key-file=$HOME/gcloud-key.json
27+
gcloud auth configure-docker ${{ inputs.registry_name }}
28+
REGISTRY_URL=$(echo "${{ inputs.registry_url }}" | tr '[:upper:]' '[:lower:]')
29+
;;
30+
"azure" | "dockerhub")
31+
echo "Logging in to Container Registry"
32+
echo "${{ inputs.registry_password }}" | docker login ${{ inputs.registry_name }} \
33+
--username ${{ inputs.registry_username }} --password-stdin
34+
REGISTRY_URL=$(echo "${{ inputs.registry_url }}" | tr '[:upper:]' '[:lower:]')
35+
;;
36+
*)
37+
echo "Using GitHub Container Registry (GHCR)"
38+
REPO_NAME_LOWERCASE=$(echo "${GITHUB_REPOSITORY}" | tr '[:upper:]' '[:lower:]')
39+
echo "${{ inputs.github_token }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
40+
REGISTRY_URL="ghcr.io/$REPO_NAME_LOWERCASE"
41+
;;
42+
esac
43+
echo "REGISTRY_URL=${REGISTRY_URL}" >> $GITHUB_ENV
44+
shell: bash
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: Build and Push Content 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 3: Set up Login to Docker registry
26+
- name: Registry Login
27+
uses: ./.github/actions/registry-login
28+
with:
29+
registry_provider: ${{ vars.REGISTRY_PROVIDER }}
30+
gcp_service_account_key: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}
31+
registry_name: ${{ secrets.REGISTRY_NAME }}
32+
registry_url: ${{ secrets.REGISTRY_URL }}
33+
registry_username: ${{ secrets.REGISTRY_USERNAME }}
34+
registry_password: ${{ secrets.REGISTRY_PASSWORD }}
35+
github_token: ${{ secrets.GITHUB_TOKEN }}
36+
37+
# Step 4: Build the project
38+
- name: Build Content Service
39+
run: |
40+
mvn clean install -DskipTests=true \
41+
-DCLOUD_STORE_GROUP_ID=${{ vars.CLOUD_STORE_GROUP_ID }} \
42+
-DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \
43+
-DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }}
44+
45+
# Step 5: Package the project
46+
- name: Package Content Service
47+
run: |
48+
cd content-api
49+
mvn play2:dist -pl content-service \
50+
-DCLOUD_STORE_GROUP_ID=${{ vars.CLOUD_STORE_GROUP_ID }} \
51+
-DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \
52+
-DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }}
53+
54+
# Step 6: Build Docker image
55+
- name: Build Docker Image
56+
run: |
57+
IMAGE_NAME="content-service"
58+
IMAGE_TAG=$(echo "${{ github.ref_name }}_$(echo $GITHUB_SHA | cut -c1-7)" | tr '[:upper:]' '[:lower:]')
59+
docker build -f build/content-service/Dockerfile -t $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG} .
60+
61+
echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV
62+
echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_ENV
63+
64+
# Step 7: Push Docker Image
65+
- name: Push Docker Image
66+
run: |
67+
docker push $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG}
68+
echo "Pushed Docker image: $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG}"
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: Build and Push Search 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 3: Set up Login to Docker registry
26+
- name: Registry Login
27+
uses: ./.github/actions/registry-login
28+
with:
29+
registry_provider: ${{ vars.REGISTRY_PROVIDER }}
30+
gcp_service_account_key: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}
31+
registry_name: ${{ secrets.REGISTRY_NAME }}
32+
registry_url: ${{ secrets.REGISTRY_URL }}
33+
registry_username: ${{ secrets.REGISTRY_USERNAME }}
34+
registry_password: ${{ secrets.REGISTRY_PASSWORD }}
35+
github_token: ${{ secrets.GITHUB_TOKEN }}
36+
37+
# Step 4: Build the project
38+
- name: Build Search API Service
39+
run: |
40+
mvn clean install -DskipTests=true \
41+
-DCLOUD_STORE_GROUP_ID=${{ vars.CLOUD_STORE_GROUP_ID }} \
42+
-DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \
43+
-DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }}
44+
45+
# Step 5: Package the project
46+
- name: Package Search API Service
47+
run: |
48+
cd search-api
49+
mvn play2:dist -pl search-service \
50+
-DCLOUD_STORE_GROUP_ID=${{ vars.CLOUD_STORE_GROUP_ID }} \
51+
-DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \
52+
-DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }}
53+
54+
# Step 6: Build Docker image
55+
- name: Build Docker Image
56+
run: |
57+
IMAGE_NAME="search-api"
58+
IMAGE_TAG=$(echo "${{ github.ref_name }}_$(echo $GITHUB_SHA | cut -c1-7)" | tr '[:upper:]' '[:lower:]')
59+
docker build -f build/search-service/Dockerfile -t $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG} .
60+
61+
echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV
62+
echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_ENV
63+
64+
# Step 7: Push Docker Image
65+
- name: Push Docker Image
66+
run: |
67+
docker push $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG}
68+
echo "Pushed Docker image: $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG}"
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
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 3: Set up Login to Docker registry
26+
- name: Registry Login
27+
uses: ./.github/actions/registry-login
28+
with:
29+
registry_provider: ${{ vars.REGISTRY_PROVIDER }}
30+
gcp_service_account_key: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}
31+
registry_name: ${{ secrets.REGISTRY_NAME }}
32+
registry_url: ${{ secrets.REGISTRY_URL }}
33+
registry_username: ${{ secrets.REGISTRY_USERNAME }}
34+
registry_password: ${{ secrets.REGISTRY_PASSWORD }}
35+
github_token: ${{ secrets.GITHUB_TOKEN }}
36+
37+
# Step 4: Build the project
38+
- name: Build Taxonomy API Service
39+
run: |
40+
mvn clean install -DskipTests=true \
41+
-DCLOUD_STORE_GROUP_ID=${{ vars.CLOUD_STORE_GROUP_ID }} \
42+
-DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \
43+
-DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }}
44+
45+
# Step 5: Package the project
46+
- name: Package Taxonomy API Service
47+
run: |
48+
cd taxonomy-api
49+
mvn play2:dist -pl taxonomy-service \
50+
-DCLOUD_STORE_GROUP_ID=${{ vars.CLOUD_STORE_GROUP_ID }} \
51+
-DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \
52+
-DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }}
53+
54+
# Step 6: Build Docker image
55+
- name: Build Docker Image
56+
run: |
57+
IMAGE_NAME="taxonomy-api"
58+
IMAGE_TAG=$(echo "${{ github.ref_name }}_$(echo $GITHUB_SHA | cut -c1-7)" | tr '[:upper:]' '[:lower:]')
59+
docker build -f build/taxonomy-service/Dockerfile -t $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG} .
60+
61+
echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV
62+
echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_ENV
63+
64+
# Step 7: Push Docker Image
65+
- name: Push Docker Image
66+
run: |
67+
docker push $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG}
68+
echo "Pushed Docker image: $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG}"

0 commit comments

Comments
 (0)