Merge pull request #73 from WizelineLabs/jackbravo-patch-1 #62
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: Build and Deploy to AWS Lightsail | |
on: | |
push: | |
branches: | |
- dev | |
env: | |
AWS_REGION: us-east-1 | |
AWS_LIGHTSAIL_SERVICE_NAME: dev-langai | |
DOCKER_IMAGE_NAME: erickdepavo/langai:latest-dev | |
jobs: | |
build_and_push: | |
name: Build and Push | |
runs-on: ubuntu-latest | |
environment: Dev | |
steps: | |
- name: Checkout branch | |
uses: actions/checkout@v3 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Set up Docker Compose | |
uses: ndeloof/[email protected] | |
- name: Login to Docker Hub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Set current directory | |
run: cd ${{ github.workspace }} | |
- name: Create .env file for build | |
uses: SpicyPizza/[email protected] | |
with: | |
directory: . | |
SKIP_ENV_VALIDATION: "true" | |
- name: Read current directory | |
run: ls | |
- name: Build Docker Compose service | |
run: docker compose -f "${{ github.workspace }}/docker-compose.yml" build prod --progress plain | |
- name: Tag Docker Image | |
run: docker tag langai-prod ${{ env.DOCKER_IMAGE_NAME }} | |
- name: Push Docker Image | |
run: docker push ${{ env.DOCKER_IMAGE_NAME }} | |
deploy: | |
name: Deploy | |
needs: build_and_push | |
runs-on: ubuntu-latest | |
environment: Dev | |
steps: | |
- name: Install Utilities | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y jq unzip | |
- name: Install AWS Client | |
run: | | |
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" | |
unzip awscliv2.zip | |
sudo ./aws/install || true | |
aws --version | |
curl "https://s3.us-west-2.amazonaws.com/lightsailctl/latest/linux-amd64/lightsailctl" -o "lightsailctl" | |
sudo mv "lightsailctl" "/usr/local/bin/lightsailctl" | |
sudo chmod +x /usr/local/bin/lightsailctl | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-region: ${{ env.AWS_REGION }} | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
- name: Create Lightsail Deployment | |
run: | | |
aws lightsail create-container-service-deployment \ | |
--service-name ${{ env.AWS_LIGHTSAIL_SERVICE_NAME }} \ | |
--containers ' | |
{ | |
"langai": { | |
"image": "${{ env.DOCKER_IMAGE_NAME }}", | |
"environment": { | |
"APP_ENV": "release", | |
"DATABASE_URL": "${{ secrets.DATABASE_URL }}", | |
"NEXTAUTH_SECRET": "${{ secrets.NEXTAUTH_SECRET }}", | |
"NEXTAUTH_URL": "${{ secrets.NEXTAUTH_URL }}", | |
"AWS_S3_BUCKET": "${{ secrets.AWS_S3_BUCKET }}", | |
"AWS_ACCESS_KEY_ID": "${{ secrets.AWS_ACCESS_KEY_ID }}", | |
"AWS_SECRET_ACCESS_KEY": "${{ secrets.AWS_SECRET_ACCESS_KEY }}", | |
"GOOGLE_CLIENT_ID": "${{ secrets.GOOGLE_CLIENT_ID }}", | |
"GOOGLE_CLIENT_SECRET": "${{ secrets.GOOGLE_CLIENT_SECRET }}", | |
"AUTH0_BASE_URL": "${{ secrets.AUTH0_BASE_URL }}", | |
"AUTH0_ISSUER": "${{ secrets.AUTH0_ISSUER }}", | |
"AUTH0_CLIENT_ID": "${{ secrets.AUTH0_CLIENT_ID }}", | |
"AUTH0_CLIENT_SECRET": "${{ secrets.AUTH0_CLIENT_SECRET }}", | |
"OPENAI_API_KEY": "${{ secrets.OPENAI_API_KEY }}", | |
"AWS_DEFAULT_REGION": "${{ env.AWS_DEFAULT_REGION }}" | |
}, | |
"ports": { | |
"3000": "HTTP" | |
} | |
} | |
}' \ | |
--public-endpoint ' | |
{ | |
"containerName": "langai", | |
"containerPort": 3000, | |
"healthCheck": { | |
"healthyThreshold": 2, | |
"unhealthyThreshold": 2, | |
"timeoutSeconds": 5, | |
"intervalSeconds": 10, | |
"path": "/", | |
"successCodes": "200-499" | |
} | |
}' |