Skip to content

Commit 795244f

Browse files
authored
Merge pull request #325 from undp/phase_2
Phase 2 changes
2 parents 9259cc0 + 427fe79 commit 795244f

File tree

1,219 files changed

+189036
-16972
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,219 files changed

+189036
-16972
lines changed
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
name: Carbon Registry Demo Deployment
2+
on:
3+
push:
4+
branches:
5+
- "main"
6+
paths:
7+
- web/**
8+
- backend/**
9+
- .github/workflows/deployment*
10+
11+
jobs:
12+
changes:
13+
name: Deploy Pre Check
14+
runs-on: ubuntu-latest
15+
outputs:
16+
backend-changes: ${{ steps.changes.outputs.backend-changes }}
17+
all-changes: ${{ steps.changes.outputs.all-changes }}
18+
workflows-changes: ${{ steps.changes.outputs.workflows-changes }}
19+
frontend-changes: ${{ steps.changes.outputs.frontend-changes }}
20+
steps:
21+
- uses: actions/checkout@v3
22+
with:
23+
fetch-depth: 0
24+
ref: ${{ github.event.inputs.branch_name || github.ref }}
25+
- name: Use Node.js ${{ matrix.node-version }}
26+
uses: actions/setup-node@v3
27+
with:
28+
node-version: ${{ matrix.node-version }}
29+
- name: Determine changed services
30+
id: changes
31+
run: |
32+
CHANGED_FILES=$(git diff --name-only HEAD^ HEAD)
33+
34+
if echo "$CHANGED_FILES" | grep -q "docker-"; then
35+
echo "All changes detected."
36+
echo "all-changes=true" >> $GITHUB_OUTPUT
37+
else
38+
echo "No All changes detected."
39+
echo "all-changes=false" >> $GITHUB_OUTPUT
40+
fi
41+
42+
if echo "$CHANGED_FILES" | grep -q ".github/workflows/"; then
43+
echo "Workflow changes detected."
44+
echo "workflows-changes=true" >> $GITHUB_OUTPUT
45+
else
46+
echo "No Workflow changes detected."
47+
echo "workflows-changes=false" >> $GITHUB_OUTPUT
48+
fi
49+
50+
if echo "$CHANGED_FILES" | grep -q "web/"; then
51+
echo "Frontend changes detected."
52+
echo "frontend-changes=true" >> $GITHUB_OUTPUT
53+
else
54+
echo "No Frontend changes detected."
55+
echo "frontend-changes=false" >> $GITHUB_OUTPUT
56+
fi
57+
58+
if echo "$CHANGED_FILES" | grep -q "backend/"; then
59+
echo "Backend changes detected."
60+
echo "backend-changes=true" >> $GITHUB_OUTPUT
61+
else
62+
echo "No Backend changes detected."
63+
echo "backend-changes=false" >> $GITHUB_OUTPUT
64+
fi
65+
66+
deploy_frontend:
67+
name: Carbon Registry Frontend Deploy
68+
needs: changes
69+
if: needs.changes.outputs.frontend-changes == 'true' || needs.changes.outputs.workflows-changes == 'true' || needs.changes.outputs.all-changes == 'true'
70+
runs-on: ubuntu-latest
71+
concurrency:
72+
group: ${{ github.workflow }}-${{ github.ref }}-'frontend'
73+
cancel-in-progress: true
74+
steps:
75+
- uses: actions/checkout@v3
76+
with:
77+
fetch-depth: 5
78+
- name: Check Docker variable changes
79+
run: |
80+
echo "docker-compose file Change...."
81+
git diff HEAD~ -- HEAD -z ./docker-compose*
82+
- name: Cache modules
83+
uses: actions/cache@v3
84+
id: yarn-cache
85+
with:
86+
path: node_modules
87+
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
88+
restore-keys: ${{ runner.os }}-yarn-
89+
- name: Configure AWS credentials
90+
uses: aws-actions/configure-aws-credentials@v1
91+
with:
92+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
93+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
94+
aws-region: us-east-1
95+
- name: Use Node.js ${{ matrix.node-version }}
96+
uses: actions/setup-node@v3
97+
with:
98+
node-version: ${{ matrix.node-version }}
99+
- name: Login to Amazon ECR
100+
id: login-ecr
101+
uses: aws-actions/amazon-ecr-login@v1
102+
- name: Build, tag, and push the image to Amazon ECR
103+
id: build-image
104+
env:
105+
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
106+
ECR_REPOSITORY: carbon-web
107+
IMAGE_TAG: ${{ github.head_ref || github.ref_name }}
108+
run: |
109+
# Build a docker container and push it to ECR
110+
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG -f web/Dockerfile . --build-arg PORT=3030 --build-arg VITE_APP_BACKEND=http://localhost:3000 --build-arg VITE_APP_COUNTRY_NAME="CountryX" --build-arg VITE_APP_REGISTRY_NAME="CountryXRegistry" --build-arg VITE_APP_MAP_TYPE="Mapbox" --build-arg VITE_APP_MAPBOXGL_ACCESS_TOKEN=${{ secrets.MAPBOXGL_ACCESS_TOKEN }} --build-arg VITE_APP_MAXIMUM_FILE_SIZE=5242880 --build-arg COUNTRY_FLAG_URL="https://carbon-common-dev.s3.amazonaws.com/flag.png"
111+
echo "Pushing image to ECR..."
112+
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
113+
echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
114+
- name: Deploy docker image to Amazon EC2
115+
if: github.ref == 'refs/heads/main'
116+
env:
117+
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
118+
ECR_REPOSITORY: carbon-web
119+
IMAGE_TAG: ${{ github.head_ref || github.ref_name }}
120+
PRIVATE_KEY: ${{ secrets.AWS_SSH_KEY_PRIVATE_DEMO }}
121+
HOSTNAME: ${{secrets.HOST_IP_DEMO }}
122+
USER_NAME: ec2-user
123+
run: |
124+
echo "$PRIVATE_KEY" > private_key && chmod 600 private_key
125+
ssh -o StrictHostKeyChecking=no -i private_key ${USER_NAME}@${HOSTNAME} '
126+
carbon/prod_frontend_deploy.sh '
127+
128+
deploy_backend:
129+
name: Carbon Registry Backend Deploy
130+
needs: changes
131+
if: needs.changes.outputs.backend-changes == 'true' || needs.changes.outputs.workflows-changes == 'true' || needs.changes.outputs.all-changes == 'true'
132+
runs-on: ubuntu-latest
133+
concurrency:
134+
group: ${{ github.workflow }}-${{ github.ref }}-'backend'
135+
cancel-in-progress: true
136+
steps:
137+
- uses: actions/checkout@v3
138+
with:
139+
fetch-depth: 5
140+
- name: Check Docker variable changes
141+
run: |
142+
echo "docker-compose file Change...."
143+
git diff HEAD~ -- HEAD -z ./docker-compose*
144+
- name: Use Node.js ${{ matrix.node-version }}
145+
uses: actions/setup-node@v3
146+
with:
147+
node-version: ${{ matrix.node-version }}
148+
- name: Configure AWS credentials
149+
uses: aws-actions/configure-aws-credentials@v1
150+
with:
151+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
152+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
153+
aws-region: us-east-1
154+
- name: Login to Amazon ECR
155+
id: login-ecr
156+
uses: aws-actions/amazon-ecr-login@v1
157+
- name: Build, tag, and push the image to Amazon ECR
158+
id: build-image
159+
env:
160+
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
161+
ECR_REPOSITORY: carbon-services
162+
IMAGE_TAG: ${{ github.head_ref || github.ref_name }}
163+
run: |
164+
# Build a docker container and push it to ECR
165+
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG -f backend/services/Dockerfile .
166+
echo "Pushing image to ECR..."
167+
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
168+
echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
169+
- name: Deploy docker image to Amazon EC2
170+
if: github.ref == 'refs/heads/main'
171+
env:
172+
PRIVATE_KEY: ${{ secrets.AWS_SSH_KEY_PRIVATE_DEMO }}
173+
HOSTNAME: ${{secrets.HOST_IP_DEMO }}
174+
USER_NAME: ec2-user
175+
run: |
176+
echo "$PRIVATE_KEY" > private_key && chmod 600 private_key
177+
ssh -o StrictHostKeyChecking=no -i private_key ${USER_NAME}@${HOSTNAME} '
178+
carbon/prod_backend_deploy.sh '
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
name: Carbon Registry Test Deployment
2+
on:
3+
push:
4+
branches:
5+
- '*'
6+
paths:
7+
- web/**
8+
- backend/**
9+
- .github/workflows/deployment*
10+
11+
jobs:
12+
changes:
13+
name: Deploy Pre Check
14+
runs-on: ubuntu-latest
15+
outputs:
16+
backend-changes: ${{ steps.changes.outputs.backend-changes }}
17+
all-changes: ${{ steps.changes.outputs.all-changes }}
18+
workflows-changes: ${{ steps.changes.outputs.workflows-changes }}
19+
frontend-changes: ${{ steps.changes.outputs.frontend-changes }}
20+
steps:
21+
- uses: actions/checkout@v3
22+
with:
23+
fetch-depth: 0
24+
ref: ${{ github.event.inputs.branch_name || github.ref }}
25+
- name: Use Node.js ${{ matrix.node-version }}
26+
uses: actions/setup-node@v3
27+
with:
28+
node-version: ${{ matrix.node-version }}
29+
- name: Determine changed services
30+
id: changes
31+
run: |
32+
CHANGED_FILES=$(git diff --name-only HEAD^ HEAD)
33+
34+
if echo "$CHANGED_FILES" | grep -q "docker-"; then
35+
echo "All changes detected."
36+
echo "all-changes=true" >> $GITHUB_OUTPUT
37+
else
38+
echo "No All changes detected."
39+
echo "all-changes=false" >> $GITHUB_OUTPUT
40+
fi
41+
42+
if echo "$CHANGED_FILES" | grep -q ".github/workflows/"; then
43+
echo "Workflow changes detected."
44+
echo "workflows-changes=true" >> $GITHUB_OUTPUT
45+
else
46+
echo "No Workflow changes detected."
47+
echo "workflows-changes=false" >> $GITHUB_OUTPUT
48+
fi
49+
50+
if echo "$CHANGED_FILES" | grep -q "web/"; then
51+
echo "Frontend changes detected."
52+
echo "frontend-changes=true" >> $GITHUB_OUTPUT
53+
else
54+
echo "No Frontend changes detected."
55+
echo "frontend-changes=false" >> $GITHUB_OUTPUT
56+
fi
57+
58+
if echo "$CHANGED_FILES" | grep -q "backend/"; then
59+
echo "Backend changes detected."
60+
echo "backend-changes=true" >> $GITHUB_OUTPUT
61+
else
62+
echo "No Backend changes detected."
63+
echo "backend-changes=false" >> $GITHUB_OUTPUT
64+
fi
65+
66+
deploy_frontend:
67+
name: Carbon Registry Frontend Deploy
68+
needs: changes
69+
if: needs.changes.outputs.frontend-changes == 'true' || needs.changes.outputs.workflows-changes == 'true' || needs.changes.outputs.all-changes == 'true'
70+
runs-on: ubuntu-latest
71+
concurrency:
72+
group: ${{ github.workflow }}-${{ github.ref }}-'frontend'
73+
cancel-in-progress: true
74+
steps:
75+
- uses: actions/checkout@v3
76+
with:
77+
fetch-depth: 5
78+
- name: Check Docker variable changes
79+
run: |
80+
echo "docker-compose file Change...."
81+
git diff HEAD~ -- HEAD -z ./docker-compose*
82+
- name: Cache modules
83+
uses: actions/cache@v3
84+
id: yarn-cache
85+
with:
86+
path: node_modules
87+
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
88+
restore-keys: ${{ runner.os }}-yarn-
89+
- name: Configure AWS credentials
90+
uses: aws-actions/configure-aws-credentials@v1
91+
with:
92+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
93+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
94+
aws-region: us-east-1
95+
- name: Use Node.js ${{ matrix.node-version }}
96+
uses: actions/setup-node@v3
97+
with:
98+
node-version: ${{ matrix.node-version }}
99+
- name: Login to Amazon ECR
100+
id: login-ecr
101+
uses: aws-actions/amazon-ecr-login@v1
102+
- name: Build, tag, and push the image to Amazon ECR
103+
id: build-image
104+
env:
105+
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
106+
ECR_REPOSITORY: carbon-web
107+
IMAGE_TAG: ${{ github.head_ref || github.ref_name }}
108+
run: |
109+
# Build a docker container and push it to ECR
110+
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG -f web/Dockerfile . --build-arg PORT=3030 --build-arg VITE_APP_BACKEND=http://localhost:3000 --build-arg VITE_APP_COUNTRY_NAME="CountryX" --build-arg VITE_APP_REGISTRY_NAME="CountryXRegistry" --build-arg VITE_APP_MAP_TYPE="Mapbox" --build-arg VITE_APP_MAPBOXGL_ACCESS_TOKEN=${{ secrets.MAPBOXGL_ACCESS_TOKEN }} --build-arg VITE_APP_MAXIMUM_FILE_SIZE=5242880 --build-arg COUNTRY_FLAG_URL="https://carbon-common-dev.s3.amazonaws.com/flag.png"
111+
echo "Pushing image to ECR..."
112+
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
113+
echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
114+
- name: Deploy docker image to Amazon EC2
115+
if: github.ref == 'refs/heads/develop'
116+
env:
117+
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
118+
ECR_REPOSITORY: carbon-web
119+
IMAGE_TAG: ${{ github.head_ref || github.ref_name }}
120+
PRIVATE_KEY: ${{ secrets.AWS_SSH_KEY_PRIVATE_TEST }}
121+
HOSTNAME: ${{secrets.HOST_IP_TEST }}
122+
USER_NAME: ec2-user
123+
run: |
124+
echo "$PRIVATE_KEY" > private_key && chmod 600 private_key
125+
ssh -o StrictHostKeyChecking=no -i private_key ${USER_NAME}@${HOSTNAME} '
126+
carbon/dev_frontend_deploy.sh '
127+
128+
deploy_backend:
129+
name: Carbon Registry Backend Deploy
130+
needs: changes
131+
if: needs.changes.outputs.backend-changes == 'true' || needs.changes.outputs.workflows-changes == 'true' || needs.changes.outputs.all-changes == 'true'
132+
runs-on: ubuntu-latest
133+
concurrency:
134+
group: ${{ github.workflow }}-${{ github.ref }}-'backend'
135+
cancel-in-progress: true
136+
steps:
137+
- uses: actions/checkout@v3
138+
with:
139+
fetch-depth: 5
140+
- name: Check Docker variable changes
141+
run: |
142+
echo "docker-compose file Change...."
143+
git diff HEAD~ -- HEAD -z ./docker-compose*
144+
- name: Use Node.js ${{ matrix.node-version }}
145+
uses: actions/setup-node@v3
146+
with:
147+
node-version: ${{ matrix.node-version }}
148+
- name: Configure AWS credentials
149+
uses: aws-actions/configure-aws-credentials@v1
150+
with:
151+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
152+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
153+
aws-region: us-east-1
154+
- name: Login to Amazon ECR
155+
id: login-ecr
156+
uses: aws-actions/amazon-ecr-login@v1
157+
- name: Build, tag, and push the image to Amazon ECR
158+
id: build-image
159+
env:
160+
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
161+
ECR_REPOSITORY: carbon-services
162+
IMAGE_TAG: ${{ github.head_ref || github.ref_name }}
163+
run: |
164+
# Build a docker container and push it to ECR
165+
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG -f backend/services/Dockerfile .
166+
echo "Pushing image to ECR..."
167+
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
168+
echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
169+
- name: Deploy docker image to Amazon EC2
170+
if: github.ref == 'refs/heads/develop'
171+
env:
172+
PRIVATE_KEY: ${{ secrets.AWS_SSH_KEY_PRIVATE_TEST }}
173+
HOSTNAME: ${{secrets.HOST_IP_TEST }}
174+
USER_NAME: ec2-user
175+
run: |
176+
echo "$PRIVATE_KEY" > private_key && chmod 600 private_key
177+
ssh -o StrictHostKeyChecking=no -i private_key ${USER_NAME}@${HOSTNAME} '
178+
carbon/dev_backend_deploy.sh '

0 commit comments

Comments
 (0)