12
12
paths :
13
13
- " generate/**"
14
14
- " rvc/**"
15
- - " start_brainrot_prod.sh"
16
- - " start_rvc_prod.sh"
15
+ - " start_docker_compose_prod.sh"
17
16
- " .github/workflows/deploy-ec2.yml"
18
17
19
18
jobs :
@@ -104,8 +103,9 @@ jobs:
104
103
username : ec2-user
105
104
key : ${{ secrets.EC2_SSH_KEY }}
106
105
port : " 22"
107
- source : " start_brainrot_prod .sh"
106
+ source : " start_docker_compose_prod .sh"
108
107
target : " /home/ec2-user/"
108
+ overwrite : true
109
109
110
110
# Step 9: Deploy to EC2 via SSH
111
111
- name : Deploy to EC2
@@ -131,13 +131,17 @@ jobs:
131
131
sudo usermod -aG docker ec2-user
132
132
fi
133
133
134
+ # Install Docker Compose if not already installed
135
+ if ! command -v docker-compose &> /dev/null; then
136
+ echo "Installing Docker Compose..."
137
+ sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
138
+ sudo chmod +x /usr/local/bin/docker-compose
139
+ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
140
+ fi
141
+
134
142
# Make sure Docker is running
135
143
sudo systemctl start docker
136
144
137
- # Clean up Docker resources to prevent "no space left on device" errors
138
- echo "Cleaning up Docker resources..."
139
- docker system prune -a -f --volumes
140
-
141
145
# Configure AWS credentials for ECR access
142
146
mkdir -p ~/.aws
143
147
cat > ~/.aws/credentials << EOL
@@ -154,9 +158,9 @@ jobs:
154
158
export AWS_ACCOUNT_ID=$AWS_ACCOUNT_ID
155
159
156
160
# Make the script executable and run it
157
- chmod +x /home/ec2-user/start_brainrot_prod .sh
158
- echo "Running brainrot deployment script with AWS_ACCOUNT_ID=$AWS_ACCOUNT_ID "
159
- /home/ec2-user/start_brainrot_prod .sh
161
+ chmod +x /home/ec2-user/start_docker_compose_prod .sh
162
+ echo "Running Docker Compose deployment script"
163
+ /home/ec2-user/start_docker_compose_prod .sh
160
164
161
165
build-rvc :
162
166
name : Build and Push RVC
@@ -244,65 +248,8 @@ jobs:
244
248
${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:latest
245
249
${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:${{ github.sha }}
246
250
247
- # Step 7: Copy deployment script to EC2
248
- - name : Copy deployment script
249
- uses : appleboy/scp-action@v0.1.4
250
- with :
251
- host : ${{ secrets.EC2_HOST_IP }}
252
- username : ec2-user
253
- key : ${{ secrets.EC2_SSH_KEY }}
254
- port : " 22"
255
- source : " start_rvc_prod.sh"
256
- target : " /home/ec2-user/"
257
- overwrite : true
258
-
259
- # Step 8: Deploy to EC2 via SSH
260
- - name : Deploy to EC2
261
- uses : appleboy/ssh-action@v1.0.0
262
- env :
263
- AWS_ACCOUNT_ID : ${{ secrets.AWS_ACCOUNT_ID }}
264
- AWS_ACCESS_KEY : ${{ secrets.ACTIONS_AWS_ACCESS_KEY_ID }}
265
- AWS_SECRET_KEY : ${{ secrets.ACTIONS_AWS_SECRET_ACCESS_KEY }}
266
- with :
267
- host : ${{ secrets.EC2_HOST_IP }}
268
- port : " 22"
269
- username : ec2-user
270
- key : ${{ secrets.EC2_SSH_KEY }}
271
- envs : AWS_ACCOUNT_ID,AWS_ACCESS_KEY,AWS_SECRET_KEY
272
- script : |
273
- # Install Docker if not already installed
274
- if ! command -v docker &> /dev/null; then
275
- echo "Installing Docker..."
276
- sudo yum update -y
277
- sudo yum install -y docker
278
- sudo systemctl enable docker
279
- sudo systemctl start docker
280
- sudo usermod -aG docker ec2-user
281
- fi
282
-
283
- # Make sure Docker is running
284
- sudo systemctl start docker
285
-
286
- # Clean up Docker resources to prevent "no space left on device" errors
287
- echo "Cleaning up Docker resources..."
288
- docker system prune -a -f --volumes
289
-
290
- # Configure AWS credentials for ECR access
291
- mkdir -p ~/.aws
292
- cat > ~/.aws/credentials << EOL
293
- [default]
294
- aws_access_key_id=$AWS_ACCESS_KEY
295
- aws_secret_access_key=$AWS_SECRET_KEY
296
- region=us-east-1
297
- EOL
298
-
299
- # Set AWS environment variables for this session
300
- export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY
301
- export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY
302
- export AWS_DEFAULT_REGION=us-east-1
303
- export AWS_ACCOUNT_ID=$AWS_ACCOUNT_ID
251
+ # Step 7: Copy deployment script to EC2 - This step is no longer needed as we're using the combined script
252
+ # We'll keep this job for building and pushing the RVC image, but we won't deploy it separately
304
253
305
- # Make the script executable and run it
306
- chmod +x /home/ec2-user/start_rvc_prod.sh
307
- echo "Running RVC deployment script with AWS_ACCOUNT_ID=$AWS_ACCOUNT_ID"
308
- /home/ec2-user/start_rvc_prod.sh
254
+ # Step 8: Deploy to EC2 via SSH - This step is no longer needed as we're using the combined script
255
+ # The deployment will happen in the build-brainrot job
0 commit comments