Skip to content
Open

Cicd #52

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
164 commits
Select commit Hold shift + click to select a range
f2c5067
added to .gitignore
XianJianZhang Feb 24, 2025
f475663
moved to workflow folder
XianJianZhang Feb 24, 2025
85b6104
added ps1 script to add secrets from config.yaml and add params for d…
XianJianZhang Feb 24, 2025
c3e4a12
created configmap from github secrets, applied config map in deploy s…
XianJianZhang Feb 24, 2025
c9bcbdd
added more github secrets for aws login
XianJianZhang Feb 24, 2025
f74a012
updated script, fixed syntax error in param naming in configuration s…
XianJianZhang Feb 24, 2025
0b0cfaf
changed backed
XianJianZhang Feb 24, 2025
1fccff8
added aws account id
XianJianZhang Feb 24, 2025
4dc7c5b
added aws account id
XianJianZhang Feb 24, 2025
1381b9d
modified tagging/image pushing process with custom repos
XianJianZhang Feb 24, 2025
dc0e190
added dir
XianJianZhang Feb 24, 2025
3d943ac
indentation
XianJianZhang Feb 24, 2025
0c730df
syntax + removed script file
XianJianZhang Feb 24, 2025
c7933a6
added steps to install docker compose
XianJianZhang Feb 24, 2025
ecc1ebf
added .yaml to file ending
XianJianZhang Feb 24, 2025
d4b75c5
added dir to docker-compose step
XianJianZhang Feb 24, 2025
932c93b
added file dir checking and removed docker compose
XianJianZhang Feb 24, 2025
073f3ac
added docker build step
XianJianZhang Feb 24, 2025
b6b8068
Changed path for dockerfile
XianJianZhang Feb 24, 2025
0b4a16c
added make gen
XianJianZhang Feb 24, 2025
deb8e91
changed path
XianJianZhang Feb 24, 2025
ef7df18
changed syntax
XianJianZhang Feb 25, 2025
25c7e89
added debugging statements
XianJianZhang Feb 25, 2025
1e006b5
changed path and make gen to be on same line
XianJianZhang Feb 25, 2025
7394119
installed protocol buffers
XianJianZhang Feb 25, 2025
cfcbf33
added go and protoc-gen-go
XianJianZhang Feb 25, 2025
75ab7d3
removed protoc-gen-go
XianJianZhang Feb 25, 2025
e1e9655
fixed path
XianJianZhang Feb 25, 2025
4d6e31e
added debugging statements
XianJianZhang Feb 25, 2025
2acddb1
change protoc-gen-go path
XianJianZhang Feb 25, 2025
b9e305f
add grpc download
XianJianZhang Feb 25, 2025
cdb98d9
add abs path
XianJianZhang Feb 25, 2025
22220ac
fixed up dir
XianJianZhang Feb 25, 2025
e4b97b8
added script to create .env
XianJianZhang Feb 25, 2025
4c221d9
syntax
XianJianZhang Feb 25, 2025
77df8dd
added debugging statements to check env file gen
XianJianZhang Mar 3, 2025
39b9dd2
added config folder
XianJianZhang Mar 3, 2025
3ebc205
inject env into bash environment to generate .env
XianJianZhang Mar 3, 2025
9adedd3
added update kubeconfig, removed debugging steps
XianJianZhang Mar 3, 2025
1ef6939
added debugging statements
XianJianZhang Mar 4, 2025
a9da19d
Merge branch 'staging' of https://github.com/CC-0000/Indeq into cicd
XianJianZhang Mar 4, 2025
3779deb
feat: added new image + deployment file for direct EC2 deployment
XianJianZhang Mar 6, 2025
2dd6db8
feat: removed references to EKS cluster
XianJianZhang Mar 6, 2025
8d45a5d
feat: added deployment
XianJianZhang Mar 7, 2025
c0e59ce
fix: added step to create .pem file
XianJianZhang Mar 7, 2025
5b07529
fix: added chmod
XianJianZhang Mar 7, 2025
21a7c18
test: testing ssh
XianJianZhang Mar 7, 2025
8367032
test: added aws login credentials
XianJianZhang Mar 7, 2025
bf29a3e
feat: trying appleboy
XianJianZhang Mar 7, 2025
0e67dfa
feat: added setsecrets.ps1 instruction to readme, readded pem keys w/…
XianJianZhang Mar 7, 2025
e5ec99e
fix: removed appleboy
XianJianZhang Mar 7, 2025
6bf5020
fix: added debugging
XianJianZhang Mar 7, 2025
0e87f03
fix: syntax
XianJianZhang Mar 7, 2025
f139349
fix: added line to return \r
XianJianZhang Mar 7, 2025
0f1afc9
fix: changed var name
XianJianZhang Mar 7, 2025
2f4be08
fix: debugging
XianJianZhang Mar 7, 2025
a53468f
fix: tried removing quotes
XianJianZhang Mar 7, 2025
9b9e7c7
fix: check file length
XianJianZhang Mar 7, 2025
cfa0c72
fix: added clean command for pem key for libcrypto
XianJianZhang Mar 8, 2025
4fb0c9d
fix: injected a cleaned pem file format version
XianJianZhang Mar 8, 2025
45e763f
fix: syntax error
XianJianZhang Mar 8, 2025
1de797e
fix: syntax
XianJianZhang Mar 8, 2025
060c80a
fix: syntax
XianJianZhang Mar 8, 2025
37d2dc3
feat: only push key contents to secret, reconstruct file correctly in…
XianJianZhang Mar 8, 2025
166a4b7
fix: reverted file back, can't trigger pipeline run
XianJianZhang Mar 8, 2025
5e3d192
fix: testing cicd
XianJianZhang Mar 8, 2025
37f6c77
fix: syntax
XianJianZhang Mar 8, 2025
fae25a9
feat: added step to install docker
XianJianZhang Mar 8, 2025
3296243
feat: removed quotes from EOF and added lines to rm old containers
XianJianZhang Mar 8, 2025
c460a26
feat: added image pull step
XianJianZhang Mar 8, 2025
517d182
feat: added IAM role to container, now retrying pulling ...
XianJianZhang Mar 8, 2025
8351a97
feat: changed pipeline name, add steps to scp docker-compose file
XianJianZhang Mar 8, 2025
fd3aa2c
fix: syntax
XianJianZhang Mar 8, 2025
af17e43
fix: syntax
XianJianZhang Mar 8, 2025
b9a072c
fix: debugging statements
XianJianZhang Mar 8, 2025
79704d7
fix: debugging
XianJianZhang Mar 8, 2025
3ea34c2
fix: added stricthostkeychecking to no and commented out images for f…
XianJianZhang Mar 8, 2025
e62c407
fix: added docker-compose command correctly
XianJianZhang Mar 8, 2025
6d8bb0d
fix: debug syntax
XianJianZhang Mar 8, 2025
40a5248
feat: added checks for container removal and docker compose installation
XianJianZhang Mar 8, 2025
c7e8aaf
fix: syntax
XianJianZhang Mar 8, 2025
431ddf7
fix: modified docker compose path installation
XianJianZhang Mar 8, 2025
6711629
fix: added -f flag
XianJianZhang Mar 8, 2025
80a9ca9
feat: added .env creation step and scp
XianJianZhang Mar 8, 2025
66dc428
fix: fixed .env path
XianJianZhang Mar 8, 2025
ec90a9c
feat: added step to create dir
XianJianZhang Mar 8, 2025
f5868da
feat: removed waitlist instance from aws deployment, added model down…
XianJianZhang Mar 10, 2025
9d709a2
feat: added build steps and now testing whole cicd pipeline
XianJianZhang Mar 10, 2025
bbea099
fix: added step to move .env to right folder
XianJianZhang Mar 10, 2025
13bdab9
fix: changed .env path for scp
XianJianZhang Mar 10, 2025
1d155de
fix: added command to clean up leftover resources to free up space
XianJianZhang Mar 10, 2025
322f838
fix: debugging cleanup
XianJianZhang Mar 10, 2025
95305c1
fix: moved cleaning command to earlier step and increased debugging …
XianJianZhang Mar 10, 2025
1397547
fix: split up commands into multiple tasks with debugging statements
XianJianZhang Mar 10, 2025
4bcb4c3
fix: syntax
XianJianZhang Mar 10, 2025
a6f99c9
fix: syntax
XianJianZhang Mar 10, 2025
716c296
fix: removed verbose option
XianJianZhang Mar 10, 2025
fbcbfd2
fix: commented out model download statement
XianJianZhang Mar 10, 2025
f4029da
fix: removed ollama
XianJianZhang Mar 10, 2025
c0105da
Merge branch 'staging' into cicd
XianJianZhang Mar 11, 2025
4fbb4c7
fix: added back vercel analytics
XianJianZhang Mar 11, 2025
f8b80b7
fix: merged origin cicd
XianJianZhang Mar 11, 2025
2f81aaf
fix: debugging ssh deployment
XianJianZhang Mar 11, 2025
fa1dd82
fix: added -f flag to not have to press y
XianJianZhang Mar 11, 2025
d88db7f
fix: removed -a
XianJianZhang Mar 11, 2025
fc143a2
fix: merge conflict, staging into cicd
XianJianZhang Apr 22, 2025
575f914
feat: added new images
XianJianZhang Apr 22, 2025
b23e53c
feat: revised .env
XianJianZhang Apr 22, 2025
6d1ad87
feat: added images to EC2
XianJianZhang Apr 22, 2025
95b137f
feat: added all images to proper yaml
XianJianZhang Apr 22, 2025
c3af60e
fix: debugging ssh connection
XianJianZhang Apr 22, 2025
7d516f1
fix: testing
XianJianZhang Apr 22, 2025
e77ec67
fix: set fixed images
XianJianZhang Apr 22, 2025
8c9ec34
fix: added back checkout
XianJianZhang Apr 22, 2025
1c6f6c7
fix: added verbosity flag
XianJianZhang Apr 22, 2025
c59821d
fix: debugging
XianJianZhang Apr 22, 2025
ecf51bb
fix: debugging, adding docker compose v2
XianJianZhang Apr 22, 2025
7fc08fa
fix: debugging, trying to set aws creds
XianJianZhang Apr 22, 2025
e10f91b
fix: debugging, trying docker compose command
XianJianZhang Apr 22, 2025
f1bdb6e
fix: added .env compilation process
XianJianZhang Apr 22, 2025
712205f
fix: added updated docker-compose
XianJianZhang Apr 22, 2025
392ac70
fix: debugging w/o vvv flag
XianJianZhang Apr 22, 2025
1336779
fix: testing end to end
XianJianZhang Apr 22, 2025
2b53e1e
fix: removed comment
XianJianZhang Apr 22, 2025
0807598
fix: added commenting for sped up debugging
XianJianZhang Apr 22, 2025
79eb837
fix: upgraded ec2 instance
XianJianZhang Apr 22, 2025
83a8391
fix: -vvv flag
XianJianZhang Apr 22, 2025
a6c5cfc
fix: added docker installation instructions
XianJianZhang Apr 22, 2025
9637023
fix: removed docker compose installation step
XianJianZhang Apr 22, 2025
0a5e45c
fix: removed commenting for aws cred configuration
XianJianZhang Apr 22, 2025
40ccb34
fix: debugging
XianJianZhang Apr 22, 2025
e045451
fix: docker compose installation
XianJianZhang Apr 22, 2025
7313f91
fix: another instance upgrade
XianJianZhang Apr 22, 2025
9c65aa4
fix: another instance upgrade
XianJianZhang Apr 22, 2025
c47340e
fix: changed installation
XianJianZhang Apr 22, 2025
4d1e643
fix: new instance
XianJianZhang Apr 22, 2025
36c27b7
fix: upgraded to XL
XianJianZhang Apr 22, 2025
f939adb
fix: downgrade to L, increase volume size
XianJianZhang Apr 22, 2025
8e0564f
fix: added new .env, remove/updated cicd and powershell scripts
XianJianZhang Apr 22, 2025
bcbc5c0
fix: syntax
XianJianZhang Apr 22, 2025
8dd50e5
fix: syntax
XianJianZhang Apr 22, 2025
df13813
fix: syntax
XianJianZhang Apr 22, 2025
fc09de8
fix: syntax
XianJianZhang Apr 22, 2025
835e0c6
fix: syntax
XianJianZhang Apr 22, 2025
3a379af
fix: syntax
XianJianZhang Apr 22, 2025
598a571
fix: syntax
XianJianZhang Apr 22, 2025
26f7354
fix: variable
XianJianZhang Apr 22, 2025
bd1835c
fix: variable
XianJianZhang Apr 22, 2025
5ca75fe
fix: variable
XianJianZhang Apr 22, 2025
ac44db7
fix: variable
XianJianZhang Apr 22, 2025
cd2310d
fix: variable
XianJianZhang Apr 22, 2025
5304ae8
fix: debugging
XianJianZhang Apr 22, 2025
f336690
fix: syntax
XianJianZhang Apr 22, 2025
30287f7
fix: debugging
XianJianZhang Apr 22, 2025
b7d8c0b
fix: testing end to end
XianJianZhang Apr 22, 2025
83b8ab8
fix: moved scp/env file creation up to front for easier testing
XianJianZhang Apr 22, 2025
be6e623
fix: added step to move env file to ec2
XianJianZhang Apr 22, 2025
95f3a56
fix: testing deployment
XianJianZhang Apr 22, 2025
4d2a267
fix: syntax
XianJianZhang Apr 22, 2025
f685b6d
fix: variable
XianJianZhang Apr 22, 2025
b4ab47c
fix: added ec2 env path for docker compose
XianJianZhang Apr 22, 2025
833ac03
fix: manual cicd retrigger
XianJianZhang Apr 22, 2025
1e0347d
fix: seperated build/deploy
XianJianZhang Apr 22, 2025
aee0475
fix: synatx
XianJianZhang Apr 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
303 changes: 303 additions & 0 deletions .github/deploy.yaml

Large diffs are not rendered by default.

293 changes: 293 additions & 0 deletions .github/workflows/EC2_deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,293 @@
name: Deploy to Amazon EC2

on:
push:
branches:
- cicd # Trigger deployment on the cicd branch

env:
AWS_REGION: us-east-1
ECR_REPOSITORY_NAMESPACE: indeq
IMAGE_TAG: ${{ github.run_id }}
# IMAGE_TAG: "14588128148"

jobs:
deploy:
runs-on: ubuntu-latest
permissions:
id-token: write # For OIDC auth (recommended)
contents: read

steps:
- name: Checkout Repository
uses: actions/checkout@v2

# comment out starting here
- name: Install Protocol Buffers Compiler
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler

- name: Install Go
run: |
sudo apt-get update
sudo apt-get install -y golang-go

- name: Install protoc-gen-go
run: |
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
echo "PATH=$PATH:$(go env GOPATH)/bin" >> $GITHUB_ENV

- name: Install protoc-gen-go-grpc
run: |
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
echo "PATH=$PATH:$(go env GOPATH)/bin" >> $GITHUB_ENV

- name: Check protoc-gen-go Installation
run: |
protoc-gen-go --version || echo "protoc-gen-go not found"
# comment out ending here

- name: Create .env file
run: |
# first delete the .env file
rm backend/common/config/.env

# Use cat with heredoc to prevent command interpretation
cat << 'EOL' > backend/common/config/.env
${{ secrets.ENV1 }}
${{ secrets.ENV2 }}
${{ secrets.ENV3 }}
${{ secrets.ENV4 }}
${{ secrets.ENV5 }}
${{ secrets.ENV6 }}
${{ secrets.ENV7 }}
EOL

# comment out starting here
- name: Generate Code
run: |
cd backend/common && make gen

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
# comment out ending here

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}


- name: Login to Amazon ECR
run: |
aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com

- name: Extract EC2 Key Pair
run: |
# Extract markers
BEGIN_MARKER="-----BEGIN RSA PRIVATE KEY-----"
END_MARKER="-----END RSA PRIVATE KEY-----"

# Create PEM file with proper formatting
echo "$BEGIN_MARKER" > private_key.pem
echo "${{ secrets.EC2_KEY_PAIR }}" | sed 's/.\{64\}/&\n/g' >> private_key.pem
echo "$END_MARKER" >> private_key.pem

chmod 600 private_key.pem

- name: Predeploy Cleanup
run: |

# showing private key
cat private_key.pem

# SSH into EC2 to create directories first for clean up
ssh -vvv -o StrictHostKeyChecking=no -i private_key.pem ec2-user@${{ secrets.EC2_PUBLIC_IP }} << 'EOF'

# Print current directory and list contents
pwd

# Install Docker if not already installed
if ! command -v docker &> /dev/null; then
echo "Docker not found. Installing..."
sudo yum update -y
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker ec2-user
echo "Docker installed successfully"
fi

# Create necessary directories if they don't exist
if [ ! -d "/home/ec2-user/common/config" ]; then
mkdir -p /home/ec2-user/common/config
fi

# If directory exists, remove .env inside
if [ -f "/home/ec2-user/common/config/.env" ]; then
rm /home/ec2-user/common/config/.env
fi

# Stop and remove containers safely
if [ "$(docker ps -q)" ]; then
docker stop $(docker ps -q)
fi
if [ "$(docker ps -aq)" ]; then
docker rm $(docker ps -aq)
fi

docker image prune -f
docker network prune -f
EOF

- name: Copy env file to EC2
run: |
# Copy the env file to EC2
scp -o StrictHostKeyChecking=no -i private_key.pem backend/common/config/.env ec2-user@${{ secrets.EC2_PUBLIC_IP }}:/home/ec2-user/common/config/.env

- name: Build Docker Images
run: |
authImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/authentication:$IMAGE_TAG"
queryImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/query:$IMAGE_TAG"
gatewayImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/gateway:$IMAGE_TAG"
initImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/init:$IMAGE_TAG"
embeddingImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/embedding:$IMAGE_TAG"
retrievalImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/retrieval:$IMAGE_TAG"
vectorImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/vector:$IMAGE_TAG"
desktopImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/desktop:$IMAGE_TAG"
integrationImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/integration:$IMAGE_TAG"
crawlingImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/crawling:$IMAGE_TAG"
mqttImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/mqtt:$IMAGE_TAG"

docker build -t authentication:$IMAGE_TAG -f backend/authentication/Dockerfile backend
docker tag authentication:$IMAGE_TAG $authImage

docker build -t query:$IMAGE_TAG -f backend/query/Dockerfile backend
docker tag query:$IMAGE_TAG $queryImage

docker build -t gateway:$IMAGE_TAG -f backend/gateway/Dockerfile backend
docker tag gateway:$IMAGE_TAG $gatewayImage

docker build -t init:$IMAGE_TAG -f backend/init/Dockerfile backend
docker tag init:$IMAGE_TAG $initImage

docker build -t embedding:$IMAGE_TAG -f backend/embedding/Dockerfile backend
docker tag embedding:$IMAGE_TAG $embeddingImage

docker build -t retrieval:$IMAGE_TAG -f backend/retrieval/Dockerfile backend
docker tag retrieval:$IMAGE_TAG $retrievalImage

docker build -t vector:$IMAGE_TAG -f backend/vector/Dockerfile backend
docker tag vector:$IMAGE_TAG $vectorImage

docker build -t desktop:$IMAGE_TAG -f backend/desktop/Dockerfile backend
docker tag desktop:$IMAGE_TAG $desktopImage

docker build -t integration:$IMAGE_TAG -f backend/integration/Dockerfile backend
docker tag integration:$IMAGE_TAG $integrationImage

docker build -t crawling:$IMAGE_TAG -f backend/crawling/Dockerfile backend
docker tag crawling:$IMAGE_TAG $crawlingImage

docker build -t mqtt:$IMAGE_TAG -f backend/mqtt/Dockerfile backend
docker tag mqtt:$IMAGE_TAG $mqttImage

- name: Push Docker Images
run: |
authImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/authentication:$IMAGE_TAG"
queryImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/query:$IMAGE_TAG"
gatewayImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/gateway:$IMAGE_TAG"
initImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/init:$IMAGE_TAG"
embeddingImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/embedding:$IMAGE_TAG"
retrievalImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/retrieval:$IMAGE_TAG"
vectorImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/vector:$IMAGE_TAG"
desktopImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/desktop:$IMAGE_TAG"
integrationImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/integration:$IMAGE_TAG"
crawlingImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/crawling:$IMAGE_TAG"
mqttImage="${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY_NAMESPACE/mqtt:$IMAGE_TAG"

docker push $authImage
docker push $queryImage
docker push $gatewayImage
docker push $initImage
docker push $embeddingImage
docker push $retrievalImage
docker push $vectorImage
docker push $desktopImage
docker push $integrationImage
docker push $crawlingImage
docker push $mqttImage

# Replace placeholder image references with actual ECR URLs
sed -i "s|authImage|$authImage|g" backend/docker-compose-ec2.yaml
sed -i "s|queryImage|$queryImage|g" backend/docker-compose-ec2.yaml
sed -i "s|gatewayImage|$gatewayImage|g" backend/docker-compose-ec2.yaml
sed -i "s|initImage|$initImage|g" backend/docker-compose-ec2.yaml
sed -i "s|embeddingImage|$embeddingImage|g" backend/docker-compose-ec2.yaml
sed -i "s|retrievalImage|$retrievalImage|g" backend/docker-compose-ec2.yaml
sed -i "s|vectorImage|$vectorImage|g" backend/docker-compose-ec2.yaml
sed -i "s|desktopImage|$desktopImage|g" backend/docker-compose-ec2.yaml
sed -i "s|integrationImage|$integrationImage|g" backend/docker-compose-ec2.yaml
sed -i "s|crawlingImage|$crawlingImage|g" backend/docker-compose-ec2.yaml
sed -i "s|mqttImage|$mqttImage|g" backend/docker-compose-ec2.yaml

# Checking if the docker-compose.yaml file is updated
cat backend/docker-compose-ec2.yaml
echo "TESTING"

- name: Copy docker-compose file to EC2
run: |
# Copy the docker-compose file to EC2
# first echo file content
cat backend/docker-compose-ec2.yaml

scp -o StrictHostKeyChecking=no -i private_key.pem backend/docker-compose-ec2.yaml ec2-user@${{ secrets.EC2_PUBLIC_IP }}:/home/ec2-user/

- name: Deploy to EC2
run: |
# Install AWS CLI if not already installed
if ! command -v aws &> /dev/null; then
echo "AWS CLI not found. Installing..."
sudo apt-get update
sudo apt-get install -y awscli
fi

# SSH into the EC2 instance and run the Docker containers
ssh -v -o StrictHostKeyChecking=no -i private_key.pem ec2-user@${{ secrets.EC2_PUBLIC_IP }} << 'EOF'
# Install Docker if not already installed
if ! command -v docker &> /dev/null; then
echo "Docker not found. Installing..."
sudo yum update -y
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker ec2-user
echo "Docker installed successfully"
fi

# Install Docker Compose V2 if not present
if ! command -v docker-compose &> /dev/null && ! command -v docker compose &> /dev/null; then
echo "Installing Docker Compose V2..."
# For Amazon Linux 2023
sudo mkdir -p /usr/local/lib/docker/cli-plugins
sudo curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
fi

# Configure AWS CLI
aws configure set region us-east-1

# Verify IAM role
aws sts get-caller-identity

# Login to ECR without credentials (using IAM role)
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-east-1.amazonaws.com

# Run docker compose with absolute path
docker compose -f /home/ec2-user/docker-compose-ec2.yaml up -d
EOF
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@

# Environment variables
.env.local
backend-config.yaml
root_ca.crt

# Log files
*.log
Expand Down
Binary file modified backend/common/config/.env
Binary file not shown.
Loading
Loading