Skip to content

Commit 8667a74

Browse files
committed
refactor: Replace Dockerfile.Github with multi-stage Dockerfile
- Use standard Dockerfile name for consistency with eagle-public - Multi-stage build: Node 22 builds Angular, nginx 1.27 serves - Embedded nginx config (no dependency on OpenShift-hosted base image) - Simplified workflows: just checkout, login, build/push - configEndpoint=true set during Docker build
1 parent df59a47 commit 8667a74

File tree

5 files changed

+196
-170
lines changed

5 files changed

+196
-170
lines changed

.github/workflows/deploy-to-dev.yaml

Lines changed: 8 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -19,71 +19,17 @@ env:
1919

2020
jobs:
2121
build:
22-
name: Build
22+
name: Build and Push Image
2323
runs-on: ubuntu-latest
24-
strategy:
25-
matrix:
26-
node-version: [22.x]
2724
outputs:
2825
SHORT_SHA: ${{ steps.short-sha.outputs.SHA }}
2926
steps:
3027
- name: Checkout repository
3128
uses: actions/checkout@v4
32-
with:
33-
fetch-depth: 2 # Need at least 2 commits to compare changes
34-
35-
- name: Enable Corepack
36-
run: corepack enable
37-
38-
- name: Use Node.js 22
39-
uses: actions/setup-node@v4
40-
with:
41-
node-version: ${{ matrix.node-version }}
42-
cache: "yarn"
43-
- run: yarn install --immutable
44-
45-
- name: Update env.js for dev environment
46-
run: |
47-
# Update env.js to enable configEndpoint and set ENVIRONMENT for dev
48-
sed -i "s|window.__env.configEndpoint = false;|window.__env.configEndpoint = true;|g" src/env.js
49-
sed -i "s|window.__env.ENVIRONMENT = 'local';|window.__env.ENVIRONMENT = 'dev';|g" src/env.js
50-
echo "Updated env.js for dev environment:"
51-
grep -E "configEndpoint|ENVIRONMENT" src/env.js
52-
53-
- name: Angular Build
54-
run: yarn build
55-
56-
- name: Install OpenShift CLI
57-
run: |
58-
curl -LO "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz"
59-
tar -xvzf openshift-client-linux.tar.gz
60-
sudo mv oc /usr/local/bin/
61-
rm -f openshift-client-linux.tar.gz
62-
63-
- name: Log into OpenShift
64-
uses: redhat-actions/oc-login@v1
65-
with:
66-
openshift_server_url: ${{ secrets.OPENSHIFT_URL }}
67-
openshift_token: ${{ secrets.OPENSHIFT_TOKEN }}
68-
namespace: ${{ env.OPENSHIFT_NAMESPACE }}
6929

70-
- name: Check if nginx config changed
71-
id: nginx-check
72-
run: |
73-
# Check if nginx-runtime config files changed in this commit
74-
if git diff --name-only HEAD~1 HEAD 2>/dev/null | grep -q "openshift/templates/nginx-runtime/"; then
75-
echo "Nginx config files changed"
76-
echo "changed=true" >> $GITHUB_OUTPUT
77-
else
78-
echo "No nginx config changes detected"
79-
echo "changed=false" >> $GITHUB_OUTPUT
80-
fi
81-
82-
- name: Rebuild nginx-runtime image
83-
if: steps.nginx-check.outputs.changed == 'true'
84-
run: |
85-
echo "Nginx config changed, rebuilding nginx-runtime image..."
86-
oc start-build eagle-admin-nginx-runtime -n ${{ env.OPENSHIFT_NAMESPACE }} --wait --follow
30+
- name: Get Short SHA
31+
id: short-sha
32+
run: echo "SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
8733

8834
- name: Login to OpenShift registry
8935
uses: docker/login-action@v3
@@ -92,17 +38,15 @@ jobs:
9238
username: ${{ secrets.OPENSHIFT_REPOSITORY_USERNAME }}
9339
password: ${{ secrets.OPENSHIFT_REPOSITORY_PASSWORD }}
9440

95-
- name: Get Short SHA
96-
id: short-sha
97-
run: echo "SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
98-
9941
- name: Build and push Docker image
10042
uses: docker/build-push-action@v6
10143
with:
10244
context: .
10345
push: true
104-
tags: ${{ secrets.OPENSHIFT_REPOSITORY }}/${{ env.OPENSHIFT_NAMESPACE }}/${{ env.IMAGE_NAME }}:ci-latest
105-
file: Dockerfile.Github
46+
tags: |
47+
${{ secrets.OPENSHIFT_REPOSITORY }}/${{ env.OPENSHIFT_NAMESPACE }}/${{ env.IMAGE_NAME }}:dev
48+
${{ secrets.OPENSHIFT_REPOSITORY }}/${{ env.OPENSHIFT_NAMESPACE }}/${{ env.IMAGE_NAME }}:ci-latest
49+
${{ secrets.OPENSHIFT_REPOSITORY }}/${{ env.OPENSHIFT_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ steps.short-sha.outputs.SHA }}
10650
labels: |
10751
commit.author=${{ github.event.head_commit.author.email }}
10852
commit.id=${{ github.event.head_commit.id }}

.github/workflows/deploy-to-prod.yaml

Lines changed: 19 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -11,61 +11,31 @@ env:
1111

1212
jobs:
1313
build:
14-
name: Build
14+
name: Build and Push Image
1515
runs-on: ubuntu-latest
16-
strategy:
17-
matrix:
18-
node-version: [22.x]
1916
steps:
2017
- name: Checkout repository
2118
uses: actions/checkout@v4
2219

23-
- name: Enable Corepack
24-
run: corepack enable
20+
- name: Get Short SHA
21+
id: short-sha
22+
run: echo "SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
2523

26-
- name: Use Node.js 22
27-
uses: actions/setup-node@v4
24+
- name: Login to OpenShift registry
25+
uses: docker/login-action@v3
2826
with:
29-
node-version: ${{ matrix.node-version }}
30-
cache: "yarn"
31-
32-
- run: yarn install --immutable
33-
34-
- name: Update env.js for prod environment
35-
run: |
36-
# Update env.js to enable configEndpoint and set ENVIRONMENT for prod
37-
sed -i "s|window.__env.configEndpoint = false;|window.__env.configEndpoint = true;|g" src/env.js
38-
sed -i "s|window.__env.ENVIRONMENT = 'local';|window.__env.ENVIRONMENT = 'prod';|g" src/env.js
39-
echo "Updated env.js for prod environment:"
40-
grep -E "configEndpoint|ENVIRONMENT" src/env.js
41-
42-
- name: Angular Build
43-
run: yarn build
44-
45-
- name: Install OpenShift CLI
46-
run: |
47-
curl -LO "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz"
48-
tar -xvzf openshift-client-linux.tar.gz
49-
sudo mv oc /usr/local/bin/
50-
rm -f openshift-client-linux.tar.gz
51-
52-
- name: Log into OpenShift
53-
uses: redhat-actions/oc-login@v1
54-
with:
55-
openshift_server_url: ${{ secrets.OPENSHIFT_URL }}
56-
openshift_token: ${{ secrets.OPENSHIFT_TOKEN }}
57-
namespace: ${{ env.OPENSHIFT_NAMESPACE }}
27+
registry: ${{ secrets.OPENSHIFT_REPOSITORY }}
28+
username: ${{ secrets.OPENSHIFT_REPOSITORY_USERNAME }}
29+
password: ${{ secrets.OPENSHIFT_REPOSITORY_PASSWORD }}
5830

5931
- name: Build and push Docker image
60-
run: |
61-
# Build Docker image
62-
docker build -f Dockerfile.Github -t ${{ env.IMAGE_NAME }}:prod .
63-
64-
# Login to OpenShift registry
65-
docker login -u $(oc whoami) -p $(oc whoami -t) image-registry.apps.silver.devops.gov.bc.ca
66-
67-
# Tag and push to OpenShift registry
68-
docker tag ${{ env.IMAGE_NAME }}:prod image-registry.apps.silver.devops.gov.bc.ca/${{ env.OPENSHIFT_NAMESPACE }}/${{ env.IMAGE_NAME }}:prod
69-
docker push image-registry.apps.silver.devops.gov.bc.ca/${{ env.OPENSHIFT_NAMESPACE }}/${{ env.IMAGE_NAME }}:prod
70-
71-
echo "Image pushed. DeploymentConfig will auto-rollout new image."
32+
uses: docker/build-push-action@v6
33+
with:
34+
context: .
35+
push: true
36+
tags: |
37+
${{ secrets.OPENSHIFT_REPOSITORY }}/${{ env.OPENSHIFT_NAMESPACE }}/${{ env.IMAGE_NAME }}:prod
38+
${{ secrets.OPENSHIFT_REPOSITORY }}/${{ env.OPENSHIFT_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ steps.short-sha.outputs.SHA }}
39+
labels: |
40+
commit.id=${{ github.sha }}
41+
commit.timestamp=${{ github.event.head_commit.timestamp }}

.github/workflows/deploy-to-test.yaml

Lines changed: 19 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -11,61 +11,31 @@ env:
1111

1212
jobs:
1313
build:
14-
name: Build
14+
name: Build and Push Image
1515
runs-on: ubuntu-latest
16-
strategy:
17-
matrix:
18-
node-version: [22.x]
1916
steps:
2017
- name: Checkout repository
2118
uses: actions/checkout@v4
2219

23-
- name: Enable Corepack
24-
run: corepack enable
20+
- name: Get Short SHA
21+
id: short-sha
22+
run: echo "SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
2523

26-
- name: Use Node.js 22
27-
uses: actions/setup-node@v4
24+
- name: Login to OpenShift registry
25+
uses: docker/login-action@v3
2826
with:
29-
node-version: ${{ matrix.node-version }}
30-
cache: "yarn"
31-
32-
- run: yarn install --immutable
33-
34-
- name: Update env.js for test environment
35-
run: |
36-
# Update env.js to enable configEndpoint and set ENVIRONMENT for test
37-
sed -i "s|window.__env.configEndpoint = false;|window.__env.configEndpoint = true;|g" src/env.js
38-
sed -i "s|window.__env.ENVIRONMENT = 'local';|window.__env.ENVIRONMENT = 'test';|g" src/env.js
39-
echo "Updated env.js for test environment:"
40-
grep -E "configEndpoint|ENVIRONMENT" src/env.js
41-
42-
- name: Angular Build
43-
run: yarn build
44-
45-
- name: Install OpenShift CLI
46-
run: |
47-
curl -LO "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz"
48-
tar -xvzf openshift-client-linux.tar.gz
49-
sudo mv oc /usr/local/bin/
50-
rm -f openshift-client-linux.tar.gz
51-
52-
- name: Log into OpenShift
53-
uses: redhat-actions/oc-login@v1
54-
with:
55-
openshift_server_url: ${{ secrets.OPENSHIFT_URL }}
56-
openshift_token: ${{ secrets.OPENSHIFT_TOKEN }}
57-
namespace: ${{ env.OPENSHIFT_NAMESPACE }}
27+
registry: ${{ secrets.OPENSHIFT_REPOSITORY }}
28+
username: ${{ secrets.OPENSHIFT_REPOSITORY_USERNAME }}
29+
password: ${{ secrets.OPENSHIFT_REPOSITORY_PASSWORD }}
5830

5931
- name: Build and push Docker image
60-
run: |
61-
# Build Docker image
62-
docker build -f Dockerfile.Github -t ${{ env.IMAGE_NAME }}:test .
63-
64-
# Login to OpenShift registry
65-
docker login -u $(oc whoami) -p $(oc whoami -t) image-registry.apps.silver.devops.gov.bc.ca
66-
67-
# Tag and push to OpenShift registry
68-
docker tag ${{ env.IMAGE_NAME }}:test image-registry.apps.silver.devops.gov.bc.ca/${{ env.OPENSHIFT_NAMESPACE }}/${{ env.IMAGE_NAME }}:test
69-
docker push image-registry.apps.silver.devops.gov.bc.ca/${{ env.OPENSHIFT_NAMESPACE }}/${{ env.IMAGE_NAME }}:test
70-
71-
echo "Image pushed. DeploymentConfig will auto-rollout new image."
32+
uses: docker/build-push-action@v6
33+
with:
34+
context: .
35+
push: true
36+
tags: |
37+
${{ secrets.OPENSHIFT_REPOSITORY }}/${{ env.OPENSHIFT_NAMESPACE }}/${{ env.IMAGE_NAME }}:test
38+
${{ secrets.OPENSHIFT_REPOSITORY }}/${{ env.OPENSHIFT_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ steps.short-sha.outputs.SHA }}
39+
labels: |
40+
commit.id=${{ github.sha }}
41+
commit.timestamp=${{ github.event.head_commit.timestamp }}

0 commit comments

Comments
 (0)