Skip to content

Commit 30d105e

Browse files
committed
Updated github actions. Avoiding duplication of docker login step. Added a composite reusable action. Updated Readme.
1 parent 13afee5 commit 30d105e

File tree

5 files changed

+90
-88
lines changed

5 files changed

+90
-88
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

.github/workflows/content-service.yml

Lines changed: 16 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,27 @@ jobs:
2222
java-version: '11'
2323
cache: 'maven'
2424

25-
# Step 3: Build the project
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
2638
- name: Build Content Service
2739
run: |
2840
mvn clean install -DskipTests=true \
2941
-DCLOUD_STORE_GROUP_ID=${{ vars.CLOUD_STORE_GROUP_ID }} \
3042
-DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \
3143
-DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }}
3244
33-
# Step 4: Package the project
45+
# Step 5: Package the project
3446
- name: Package Content Service
3547
run: |
3648
cd content-api
@@ -39,33 +51,6 @@ jobs:
3951
-DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \
4052
-DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }}
4153
42-
# Step 5: Set up Login to Docker registry
43-
- name: Determine registry and login
44-
run: |
45-
case "${{ vars.REGISTRY_PROVIDER }}" in
46-
"gcp")
47-
echo "Using Google Container Registry"
48-
echo "${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}" | base64 --decode > $HOME/gcloud-key.json
49-
gcloud auth activate-service-account --key-file=$HOME/gcloud-key.json
50-
gcloud auth configure-docker ${{ secrets.REGISTRY_NAME }}
51-
REGISTRY_URL=$(echo "${{ secrets.REGISTRY_URL }}" | tr '[:upper:]' '[:lower:]')
52-
;;
53-
"azure" | "dockerhub")
54-
echo "Logging in to Container Registry"
55-
echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login ${{ secrets.REGISTRY_NAME }} \
56-
--username ${{ secrets.REGISTRY_USERNAME }} --password-stdin
57-
REGISTRY_URL=$(echo "${{ secrets.REGISTRY_URL }}" | tr '[:upper:]' '[:lower:]')
58-
;;
59-
*)
60-
echo "Using GitHub Container Registry (GHCR)"
61-
REPO_NAME_LOWERCASE=$(echo "${GITHUB_REPOSITORY}" | tr '[:upper:]' '[:lower:]')
62-
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
63-
REGISTRY_URL="ghcr.io/$REPO_NAME_LOWERCASE"
64-
;;
65-
esac
66-
67-
echo "REGISTRY_URL=${REGISTRY_URL}" >> $GITHUB_ENV
68-
6954
# Step 6: Build Docker image
7055
- name: Build Docker Image
7156
run: |
@@ -75,7 +60,8 @@ jobs:
7560
7661
echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV
7762
echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_ENV
78-
63+
64+
# Step 7: Push Docker Image
7965
- name: Push Docker Image
8066
run: |
8167
docker push $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG}

.github/workflows/search-service.yml

Lines changed: 14 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,18 @@ jobs:
2222
java-version: '11'
2323
cache: 'maven'
2424

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+
2537
# Step 4: Build the project
2638
- name: Build Search API Service
2739
run: |
@@ -39,34 +51,7 @@ jobs:
3951
-DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \
4052
-DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }}
4153
42-
# Step 6: Set up Login to Docker registry
43-
- name: Determine registry and login
44-
run: |
45-
case "${{ vars.REGISTRY_PROVIDER }}" in
46-
"gcp")
47-
echo "Using Google Container Registry"
48-
echo "${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}" | base64 --decode > $HOME/gcloud-key.json
49-
gcloud auth activate-service-account --key-file=$HOME/gcloud-key.json
50-
gcloud auth configure-docker ${{ secrets.REGISTRY_NAME }}
51-
REGISTRY_URL=$(echo "${{ secrets.REGISTRY_URL }}" | tr '[:upper:]' '[:lower:]')
52-
;;
53-
"azure" | "dockerhub")
54-
echo "Logging in to Container Registry"
55-
echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login ${{ secrets.REGISTRY_NAME }} \
56-
--username ${{ secrets.REGISTRY_USERNAME }} --password-stdin
57-
REGISTRY_URL=$(echo "${{ secrets.REGISTRY_URL }}" | tr '[:upper:]' '[:lower:]')
58-
;;
59-
*)
60-
echo "Using GitHub Container Registry (GHCR)"
61-
REPO_NAME_LOWERCASE=$(echo "${GITHUB_REPOSITORY}" | tr '[:upper:]' '[:lower:]')
62-
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
63-
REGISTRY_URL="ghcr.io/$REPO_NAME_LOWERCASE"
64-
;;
65-
esac
66-
67-
echo "REGISTRY_URL=${REGISTRY_URL}" >> $GITHUB_ENV
68-
69-
# Step 7: Build Docker image
54+
# Step 6: Build Docker image
7055
- name: Build Docker Image
7156
run: |
7257
IMAGE_NAME="search-api"
@@ -76,7 +61,7 @@ jobs:
7661
echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV
7762
echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_ENV
7863
79-
# Step 8: Push Docker Image
64+
# Step 7: Push Docker Image
8065
- name: Push Docker Image
8166
run: |
8267
docker push $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG}

.github/workflows/taxonomy-service.yml

Lines changed: 14 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,18 @@ jobs:
2222
java-version: '11'
2323
cache: 'maven'
2424

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+
2537
# Step 4: Build the project
2638
- name: Build Taxonomy API Service
2739
run: |
@@ -39,34 +51,7 @@ jobs:
3951
-DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \
4052
-DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }}
4153
42-
# Step 6: Set up Login to Docker registry
43-
- name: Determine registry and login
44-
run: |
45-
case "${{ vars.REGISTRY_PROVIDER }}" in
46-
"gcp")
47-
echo "Using Google Container Registry"
48-
echo "${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}" | base64 --decode > $HOME/gcloud-key.json
49-
gcloud auth activate-service-account --key-file=$HOME/gcloud-key.json
50-
gcloud auth configure-docker ${{ secrets.REGISTRY_NAME }}
51-
REGISTRY_URL=$(echo "${{ secrets.REGISTRY_URL }}" | tr '[:upper:]' '[:lower:]')
52-
;;
53-
"azure" | "dockerhub")
54-
echo "Logging in to Container Registry"
55-
echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login ${{ secrets.REGISTRY_NAME }} \
56-
--username ${{ secrets.REGISTRY_USERNAME }} --password-stdin
57-
REGISTRY_URL=$(echo "${{ secrets.REGISTRY_URL }}" | tr '[:upper:]' '[:lower:]')
58-
;;
59-
*)
60-
echo "Using GitHub Container Registry (GHCR)"
61-
REPO_NAME_LOWERCASE=$(echo "${GITHUB_REPOSITORY}" | tr '[:upper:]' '[:lower:]')
62-
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
63-
REGISTRY_URL="ghcr.io/$REPO_NAME_LOWERCASE"
64-
;;
65-
esac
66-
67-
echo "REGISTRY_URL=${REGISTRY_URL}" >> $GITHUB_ENV
68-
69-
# Step 7: Build Docker image
54+
# Step 6: Build Docker image
7055
- name: Build Docker Image
7156
run: |
7257
IMAGE_NAME="taxonomy-api"
@@ -76,7 +61,7 @@ jobs:
7661
echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV
7762
echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_ENV
7863
79-
# Step 8: Push Docker Image
64+
# Step 7: Push Docker Image
8065
- name: Push Docker Image
8166
run: |
8267
docker push $REGISTRY_URL/${IMAGE_NAME}:${IMAGE_TAG}

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ To ensure the GitHub Actions workflows in this repository function correctly, th
212212
1. **Secrets Configuration**:
213213
- Ensure the secrets are configured in your GitHub repository, depending on the value of `REGISTRY_PROVIDER`. The workflow will push the image to the respective container registry if the required credentials are provided.
214214

215+
- Note: If No REGISTRY_PROVIDER is provided the image will be pushed to GHCR.
216+
215217
#### GCP (Google Cloud Platform)
216218
- `REGISTRY_PROVIDER`: Set to `gcp`
217219
- `GCP_SERVICE_ACCOUNT_KEY`: Base64-encoded service account key for GCP.

0 commit comments

Comments
 (0)