Skip to content

[Update] CI/CD scripts update #1 #6

[Update] CI/CD scripts update #1

[Update] CI/CD scripts update #1 #6

Workflow file for this run

name: Build Docker and Upload to S3
on:
push:
branches:
- main
jobs:
build-and-upload:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Create .env file
run: |
echo "DOCKER_HUB_USERNAME=${{ secrets.DOCKER_HUB_USERNAME }}" > .env
echo "NEXT_PUBLIC_SUPABASE_URL=${{secrets.NEXT_PUBLIC_SUPABASE_URL}}" >> .env
echo "NEXT_PUBLIC_SUPABASE_ANON_KEY=${{secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY}}" >> .env
- name: Login to DockerHub (Optional)
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Build and Push Docker Image
run: |
docker build -t ${{ secrets.DOCKER_HUB_USERNAME }}/gdgoc-solution-fe-app:latest .
docker run --rm ${{ secrets.DOCKER_HUB_USERNAME }}/gdgoc-solution-fe-app:latest ls -la /app
docker push ${{ secrets.DOCKER_HUB_USERNAME }}/gdgoc-solution-fe-app:latest
- name: Create Deployment Package
run: |
cp scripts/deploy.sh ./deploy.sh
zip -r deploy.zip .env docker-compose.yml deploy.sh appspec.yml \
Dockerfile package.json package-lock.json next.config.ts \
pages public .next
- name: Configure AWS credentials
run: |
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws configure set region ${{ secrets.AWS_REGION }}
- name: Upload Deployment Package to S3
run: |
aws s3 cp deploy.zip s3://${{ secrets.AWS_S3_BUCKET }}/solution-deploy.zip
- name: Trigger CodeDeploy (CLI)
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
run: |
aws deploy create-deployment \
--application-name ${{ secrets.AWS_CODEDEPLOY_APP }} \
--deployment-group-name ${{ secrets.AWS_CODEDEPLOY_GROUP }} \
--s3-location bucket=${{ secrets.S3_BUCKET }},bundleType=zip,key=solution-deploy.zip \
--file-exists-behavior OVERWRITE