Skip to content

chore: Update AWS image upload root path to '/images' #30

chore: Update AWS image upload root path to '/images'

chore: Update AWS image upload root path to '/images' #30

Workflow file for this run

name: Digital Ocean Strapi Deploy
on:
push:
paths:
- 'server/**'
branches:
- 'main'
workflow_dispatch:
jobs:
path_to_registry:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Create .env file
run: |
cat > server/.env << EOF
DATABASE_URL=${{ secrets.DATABASE_URL }}
JWT_SECRET=${{ secrets.JWT_SECRET }}
API_TOKEN_SALT=${{ secrets.API_TOKEN_SALT }}
APP_KEYS=${{ secrets.APP_KEYS }}
NODE_ENV=${{ secrets.NODE_ENV }}
AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_ACCESS_SECRET=${{ secrets.AWS_ACCESS_SECRET }}
AWS_BUCKET_NAME=${{ secrets.AWS_BUCKET_NAME }}
AWS_REGION=${{ secrets.AWS_REGION }}
DATABASE_USERNAME=${{ secrets.DATABASE_USERNAME }}
DATABASE_PASSWORD=${{ secrets.DATABASE_PASSWORD }}
DATABASE_NAME=${{ secrets.DATABASE_NAME }}
EOF
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Install Docker Compose
run: |
sudo apt-get update
sudo apt-get install -y docker-compose
- name: Build & push Docker image
run: |
echo --- Building Dokcer image ---
docker-compose -f server/docker-compose.yml build
docker-compose -f server/docker-compose.yml push
deploy_to_remote:
needs: path_to_registry
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up SSH key for remote access
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -t rsa ${{ secrets.SERVER_IP }} >> ~/.ssh/known_hosts
- name: Copy repository to remote server
run: |
ssh ${{ secrets.SERVER_USERNAME }}@${{ secrets.SERVER_IP }} << EOF
rm -rf ~/nextjs-portfolio
mkdir -p ~/nextjs-portfolio
EOF
scp -r server ${{ secrets.SERVER_USERNAME }}@${{ secrets.SERVER_IP }}:~/nextjs-portfolio/
- name: Create .env file on remote server
run: |
ssh ${{ secrets.SERVER_USERNAME }}@${{ secrets.SERVER_IP }} << EOF
cat > ~/nextjs-portfolio/server/.env << ENV_EOF
DATABASE_URL=${{ secrets.DATABASE_URL }}
JWT_SECRET=${{ secrets.JWT_SECRET }}
API_TOKEN_SALT=${{ secrets.API_TOKEN_SALT }}
APP_KEYS=${{ secrets.APP_KEYS }}
NODE_ENV=${{ secrets.NODE_ENV }}
AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_ACCESS_SECRET=${{ secrets.AWS_ACCESS_SECRET }}
AWS_BUCKET_NAME=${{ secrets.AWS_BUCKET_NAME }}
AWS_REGION=${{ secrets.AWS_REGION }}
DATABASE_USERNAME=${{ secrets.DATABASE_USERNAME }}
DATABASE_PASSWORD=${{ secrets.DATABASE_PASSWORD }}
DATABASE_NAME=${{ secrets.DATABASE_NAME }}
ENV_EOF
EOF
- name: Login to Docker Hub on remote server
run: |
ssh ${{ secrets.SERVER_USERNAME }}@${{ secrets.SERVER_IP }} << 'EOF'
echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
EOF
- name: Deploy to remote server
timeout-minutes: 10
run: |
ssh ${{ secrets.SERVER_USERNAME }}@${{ secrets.SERVER_IP }} << EOF
cd ~/nextjs-portfolio/server
docker compose -f docker-compose.yml pull
docker compose -f docker-compose.yml up -d
EOF