Skip to content

Commit 1b58bc5

Browse files
committed
initial commit
0 parents  commit 1b58bc5

543 files changed

Lines changed: 81210 additions & 0 deletions

File tree

Some content is hidden

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

.editorconfig

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
indent_style = space
6+
indent_size = 4
7+
end_of_line = lf
8+
insert_final_newline = true
9+
trim_trailing_whitespace = true
10+
11+
[Dogefile]
12+
indent_size = 2
13+
14+
[Makefile]
15+
indent_style = tab

.formatignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
**/templates
2+
**/migrations

.github/dependabot.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# To get started with Dependabot version updates, you'll need to specify which
2+
# package ecosystems to update and where the package manifests are located.
3+
# Please see the documentation for all configuration options:
4+
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5+
6+
version: 2
7+
updates:
8+
- package-ecosystem: "github-actions"
9+
directory: "/"
10+
schedule:
11+
interval: "weekly"
12+
- package-ecosystem: "pip"
13+
directory: "/back"
14+
schedule:
15+
interval: "daily"
16+
- package-ecosystem: "npm"
17+
directory: "/widget"
18+
schedule:
19+
interval: "daily"
Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
name: Build, Push and Deploy to ECS on DEV
2+
3+
on:
4+
push:
5+
# paths:
6+
# - "back/**"
7+
# - "widget/**"
8+
# - "sdk/**"
9+
10+
tags:
11+
- "v*.*.*-dev"
12+
13+
permissions:
14+
id-token: write # This is required for requesting the JWT
15+
contents: read # This is required for actions/checkout
16+
17+
jobs:
18+
default:
19+
strategy:
20+
fail-fast: false
21+
matrix:
22+
target-folder:
23+
[
24+
"back",
25+
"widget",
26+
"sdk"
27+
]
28+
runs-on: ubuntu-latest
29+
environment: dev
30+
31+
name: Build Image, Push to ECR, Deploy to ECS
32+
33+
steps:
34+
- name: Check out code
35+
uses: actions/checkout@v3
36+
37+
- name: filter path
38+
uses: dorny/paths-filter@v2
39+
id: filter
40+
with:
41+
filters: |
42+
folder:
43+
- './${{ matrix.target-folder }}/**'
44+
- name: Configure AWS credentials
45+
id: aws-credentials
46+
uses: aws-actions/configure-aws-credentials@v2
47+
with:
48+
#TODO add account_id as variable
49+
role-to-assume: arn:aws:iam::756378459524:role/GithubDeployRole
50+
#{{ vars.AWS_ACCOUNT_ID }}
51+
role-session-name: GitHub_to_AWS_via_FederatedOIDC_for_${{ matrix.target-folder }}
52+
aws-region: ${{ vars.AWS_REGION }}
53+
mask-aws-account-id: false
54+
55+
- name: Login to Amazon ECR
56+
id: login-ecr
57+
uses: aws-actions/amazon-ecr-login@v1
58+
with:
59+
registries: ${{ vars.AWS_ECR_ACCOUNT_ID }}
60+
61+
- name: Build, tag, and push image to Amazon ECR
62+
id: build-image
63+
working-directory: ./${{ matrix.target-folder }}
64+
env:
65+
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
66+
IMAGE_TAG: ${{ github.ref_name }}
67+
DOCKER_TAG_TO_DEPLOY: ${{ vars.DOCKER_TAG_TO_DEPLOY }}
68+
ECR_REPOSITORY: "chatfaq-${{ matrix.target-folder }}"
69+
#"steps.filter.outputs.folder == 'true'
70+
run: |
71+
# Choose Dockerfile based on the target folder
72+
if [ "${{ matrix.target-folder }}" == "back" ]; then
73+
DOCKERFILE=gpu.Dockerfile
74+
else
75+
DOCKERFILE=Dockerfile
76+
fi
77+
# Build a docker container and apply two tags
78+
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG -t $ECR_REGISTRY/$ECR_REPOSITORY:$DOCKER_TAG_TO_DEPLOY -f $DOCKERFILE .
79+
# Push both tags to ECR
80+
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
81+
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$DOCKER_TAG_TO_DEPLOY
82+
echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT
83+
echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
84+
85+
- name: Fetch latest task definition if back for migrate
86+
id: get-last-def-migrate
87+
run: |
88+
if [[ "${{ matrix.target-folder }}" == "back" ]]; then
89+
latest_task_def=$(aws ecs list-task-definitions --family-prefix chatfaq-${{ matrix.target-folder }}-migrate --sort DESC --max-items 1 | jq -r ".taskDefinitionArns[0]")
90+
echo $latest_task_def
91+
aws ecs describe-task-definition --task-definition $latest_task_def --query taskDefinition > task-definition-migrate.json
92+
cat task-definition-migrate.json
93+
echo "::set-output name=exists::true"
94+
fi
95+
exit 0
96+
97+
- name: Fill in the new image ID in the Amazon ECS task definition if back for migrate
98+
if: steps.get-last-def-migrate.outputs.exists == 'true'
99+
id: task-def-migrate
100+
uses: aws-actions/amazon-ecs-render-task-definition@v1
101+
with:
102+
task-definition: task-definition-migrate.json
103+
container-name: main
104+
image: ${{ steps.build-image.outputs.image }}
105+
106+
- name: Deploy Amazon ECS task definition for migrate
107+
id: task-def-new-version-migrate
108+
if: steps.get-last-def-migrate.outputs.exists == 'true'
109+
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
110+
with:
111+
task-definition: ${{ steps.task-def-migrate.outputs.task-definition }}
112+
cluster: ${{ vars.ECS_CLUSTER_NAME }}
113+
114+
- name: Run ECS Task for migrate
115+
if: steps.get-last-def-migrate.outputs.exists == 'true'
116+
uses: researchsquare/run-ecs-task-action@v1
117+
with:
118+
task-definition-arn: ${{ steps.task-def-new-version-migrate.outputs.task-definition-arn }}
119+
cluster: ${{ vars.ECS_CLUSTER_NAME }}
120+
wait-for-task-completion: true
121+
count: 1
122+
123+
124+
125+
- name: Fetch latest task definition if back for celery
126+
id: get-last-def-celery
127+
run: |
128+
if [[ "${{ matrix.target-folder }}" == "back" ]]; then
129+
latest_task_def=$(aws ecs list-task-definitions --family-prefix chatfaq-${{ matrix.target-folder }}-celery --sort DESC --max-items 1 | jq -r ".taskDefinitionArns[0]")
130+
echo $latest_task_def
131+
aws ecs describe-task-definition --task-definition $latest_task_def --query taskDefinition > task-definition-celery.json
132+
cat task-definition-celery.json
133+
echo "::set-output name=exists::true"
134+
fi
135+
exit 0
136+
137+
- name: Fill in the new image ID in the Amazon ECS task definition if back for celery
138+
if: steps.get-last-def-celery.outputs.exists == 'true'
139+
id: task-def-celery
140+
uses: aws-actions/amazon-ecs-render-task-definition@v1
141+
with:
142+
task-definition: task-definition-celery.json
143+
container-name: main
144+
image: ${{ steps.build-image.outputs.image }}
145+
146+
- name: Deploy Amazon ECS task definition for celery
147+
id: task-def-new-version-celery
148+
if: steps.get-last-def-celery.outputs.exists == 'true'
149+
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
150+
with:
151+
task-definition: ${{ steps.task-def-celery.outputs.task-definition }}
152+
cluster: ${{ vars.ECS_CLUSTER_NAME }}
153+
154+
- name: Run ECS Task for celery
155+
if: steps.get-last-def-celery.outputs.exists == 'true'
156+
uses: researchsquare/run-ecs-task-action@v1
157+
with:
158+
task-definition-arn: ${{ steps.task-def-new-version-celery.outputs.task-definition-arn }}
159+
cluster: ${{ vars.ECS_CLUSTER_NAME }}
160+
service: chatfaq-celery-service
161+
wait-for-service-stability: false
162+
163+
164+
165+
- name: Fetch latest task definition
166+
run: |
167+
latest_task_def=$(aws ecs list-task-definitions --family-prefix chatfaq-${{ matrix.target-folder }} --sort DESC --max-items 1 | jq -r ".taskDefinitionArns[0]")
168+
echo $latest_task_def
169+
aws ecs describe-task-definition --task-definition $latest_task_def --query taskDefinition > task-definition.json
170+
cat task-definition.json
171+
172+
- name: Fill in the new image ID in the Amazon ECS task definition
173+
id: task-def
174+
uses: aws-actions/amazon-ecs-render-task-definition@v1
175+
with:
176+
task-definition: task-definition.json
177+
container-name: main
178+
image: ${{ steps.build-image.outputs.image }}
179+
180+
- name: Deploy Amazon ECS task definition
181+
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
182+
with:
183+
task-definition: ${{ steps.task-def.outputs.task-definition }}
184+
cluster: ${{ vars.ECS_CLUSTER_NAME }}
185+
service: chatfaq-${{ matrix.target-folder }}-service
186+
wait-for-service-stability: false

.github/workflows/deploy.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
name: ChatFAQ
3+
4+
on:
5+
push:
6+
paths:
7+
- "back/**"
8+
- "widget/**"
9+
- "sdk/**"
10+
- "Dogefile"
11+
branches:
12+
- "master"
13+
- "develop"
14+
- "feature/**caps**"
15+
- "feature/**withmadrid**"
16+
workflow_dispatch:
17+
18+
jobs:
19+
deploy:
20+
runs-on: ubuntu-latest
21+
22+
steps:
23+
- name: Checkout code
24+
uses: actions/checkout@v3
25+
with:
26+
fetch-depth: 0
27+
28+
- name: Deploy via DogeOps
29+
uses: WithAgency/dogeops-action@v1
30+
with:
31+
api_url: ${{ vars.DOGEOPS_API_URL }}
32+
api_key: ${{ secrets.DOGEOPS_API_KEY }}

0 commit comments

Comments
 (0)