Digital Ocean Strapi Deploy #25
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: Test Workflow | |
on: | |
push: | |
paths: | |
- 'backend/**' | |
branches: | |
# - 'main' | |
- 'update/docker-be' | |
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: | | |
# echo "DATABASE_URL=${{ secrets.DATABASE_URL }}" >> server/.env | |
# echo "JWT_SECRET=${{ secrets.JWT_SECRET }}" >> server/.env | |
# echo "APP_KEYS=${{ secrets.APP_KEYS }}" >> server/.env | |
# echo "NODE_ENV=${{ secrets.NODE_ENV }}" >> server/.env | |
# echo "AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }}" >> server/.env | |
# echo "AWS_ACCESS_SECRET=${{ secrets.AWS_ACCESS_SECRET }}" >> server/.env | |
# echo "AWS_BUCKET_NAME=${{ secrets.AWS_BUCKET_NAME }}" >> server/.env | |
# echo "AWS_REGION=${{ secrets.AWS_REGION }}" >> server/.env | |
# echo "DATABASE_USERNAME=${{ secrets.DATABASE_USERNAME }}" >> server/.env | |
# echo "DATABASE_PASSWORD=${{ secrets.DATABASE_PASSWORD }}" >> server/.env | |
# echo "DATABASE_NAME=${{ secrets.DATABASE_NAME }}" >> server/.env | |
# - name: Login to Docker Hub | |
# uses: docker/login-action@v3 | |
# with: | |
# username: ${{ secrets.DOCKERHUB_USERNAME }} | |
# password: ${{ secrets.DOCKERHUB_TOKEN }} | |
# - name: Build and push "Strapi" Docker image using docker-compose | |
# run: | | |
# 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 | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- 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 | |
# - name: Clean up remote .env | |
# run: | | |
# ssh ${{ secrets.SERVER_USERNAME }}@${{ secrets.SERVER_IP }} "rm ~/nextjs-portfolio/.env" |