uncomment the rest of the action #22
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Name of the GitHub Actions workflow - shown in the Actions tab | |
name: Build and Push to Amazon ECR | |
# Defines when this workflow will run | |
on: | |
push: | |
# Only run on pushes to main branch | |
branches: | |
- main | |
# Only trigger when files in generate/ directory change | |
# This prevents unnecessary deployments when other parts of the repo change | |
paths: | |
- 'generate/**' | |
- '.github/workflows/deploy-ecs.yml' | |
jobs: | |
# Define a single job named "build" | |
build: | |
name: Build and Push | |
# Use latest Ubuntu runner provided by GitHub | |
runs-on: ubuntu-latest | |
# Use "production" environment (helps with secrets management) | |
environment: production | |
steps: | |
# Step 1: Get the code | |
- name: Checkout | |
uses: actions/checkout@v3 | |
# Step 2: Set up Docker Buildx | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
# Step 3: Set up AWS credentials for the entire workflow | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ secrets.ACTIONS_AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: us-east-1 | |
# Step 4: Log into Amazon ECR | |
- name: Login to Amazon ECR | |
id: login-ecr | |
uses: aws-actions/amazon-ecr-login@v1 | |
# Step 5: Create .env file from secrets | |
- name: Create .env file | |
run: | | |
cd generate | |
cat << EOF > .env | |
JORDAN_PETERSON_VOICE_ID=${{ secrets.JORDAN_PETERSON_VOICE_ID }} | |
JOE_ROGAN_VOICE_ID=${{ secrets.JOE_ROGAN_VOICE_ID }} | |
BARACK_OBAMA_VOICE_ID=${{ secrets.BARACK_OBAMA_VOICE_ID }} | |
KAMALA_HARRIS_VOICE_ID=${{ secrets.KAMALA_HARRIS_VOICE_ID }} | |
BEN_SHAPIRO_VOICE_ID=${{ secrets.BEN_SHAPIRO_VOICE_ID }} | |
ANDREW_TATE_VOICE_ID=${{ secrets.ANDREW_TATE_VOICE_ID }} | |
JOE_BIDEN_VOICE_ID=${{ secrets.JOE_BIDEN_VOICE_ID }} | |
DONALD_TRUMP_VOICE_ID=${{ secrets.DONALD_TRUMP_VOICE_ID }} | |
GROQ_API_KEY=${{ secrets.GROQ_API_KEY }} | |
OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }} | |
NEETS_API_KEY=${{ secrets.NEETS_API_KEY }} | |
DB_HOST=${{ secrets.DB_HOST }} | |
DB_USER=${{ secrets.DB_USER }} | |
DB_PORT=${{ secrets.DB_PORT }} | |
DB_PASSWORD=${{ secrets.DB_PASSWORD }} | |
DB_URL=${{ secrets.DB_URL }} | |
DB_NAME=${{ secrets.DB_NAME }} | |
AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
EOF | |
# Step 6: Build and push the Docker image | |
- name: Build and push Docker image | |
env: | |
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | |
ECR_REPOSITORY: brainrot | |
uses: docker/build-push-action@v4 | |
with: | |
context: ./generate | |
platforms: linux/arm64 | |
push: true | |
tags: | | |
${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:latest | |
${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:${{ github.sha }} | |
# Step 7: Deploy to EC2 via SSH | |
- name: Deploy to EC2 | |
uses: appleboy/ssh-action@v1.0.0 | |
env: | |
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} | |
with: | |
host: "3.95.240.57" | |
port: "22" | |
username: ec2-user | |
key: ${{ secrets.EC2_SSH_KEY }} | |
envs: AWS_ACCOUNT_ID | |
script: | | |
chmod +x /home/ec2-user/start_prod.sh | |
/home/ec2-user/start_prod.sh |