chore: Update AWS image upload root path to '/images' #30
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: 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 |