i set up GitHub CI/CD for a Dockerized Project on virtual machine(digital Ocean), this is my .github/workflows/deploy.yml
name: Deploy Django App to DigitalOcean
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build Docker Image Locally
run: |
docker build -t django-app:latest .
- name: Save Docker Image as a Tar File
run: |
docker save -o django-app.tar django-app:latest
- name: Upload Docker Image to DigitalOcean via SCP
uses: appleboy/scp-action@master
with:
host: ${{ secrets.DIGITALOCEAN_IP }}
username: root
key: ${{ secrets.DIGITALOCEAN_SSH_KEY }}
port: 22
source: "django-app.tar"
target: "/root"
timeout: "100s"
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: SSH into DigitalOcean and Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.DIGITALOCEAN_IP_SUSTAINABIITY }}
username: root
key: ${{ secrets.DIGITALOCEAN_SSH_KEY }}
port: 22
script: |
docker load -i /root/django-app.tar
docker stop django-app || true
docker rm django-app || true
docker run -d --name django-app -p 8003:8003 django-app:latest
when i view jobs everything works fine except at "Upload Docker Image to DigitalOcean via SCP"
on my account i have declared correctly my secrets and variables DIGITALOCEAN_IP_SUSTAINABIITY, DIGITALOCEAN_SSH_KEY(from cat ~/.ssh/id_rsa )
/usr/bin/docker run --name d990c28f62a50e38914d7499ab3c1231dbafa3_73c2ef --label d990c2 --workdir /github/workspace --rm -e "INPUT_HOST" -e "INPUT_USERNAME" -e "INPUT_KEY" -e "INPUT_PORT" -e "INPUT_SOURCE" -e "INPUT_TARGET" -e "INPUT_TIMEOUT" -e "INPUT_PASSWORD" -e "INPUT_PROTOCOL" -e "INPUT_COMMAND_TIMEOUT" -e "INPUT_KEY_PATH" -e "INPUT_PASSPHRASE" -e "INPUT_FINGERPRINT" -e "INPUT_USE_INSECURE_CIPHER" -e "INPUT_RM" -e "INPUT_DEBUG" -e "INPUT_STRIP_COMPONENTS" -e "INPUT_OVERWRITE" -e "INPUT_TAR_DEREFERENCE" -e "INPUT_TAR_TMP_PATH" -e "INPUT_TAR_EXEC" -e "INPUT_PROXY_HOST" -e "INPUT_PROXY_PORT" -e "INPUT_PROXY_USERNAME" -e "INPUT_PROXY_PASSWORD" -e "INPUT_PROXY_PASSPHRASE" -e "INPUT_PROXY_TIMEOUT" -e "INPUT_PROXY_KEY" -e "INPUT_PROXY_KEY_PATH" -e "INPUT_PROXY_FINGERPRINT" -e "INPUT_PROXY_USE_INSECURE_CIPHER" -e "HOME" -e "GITHUB_JOB" -e "GITHUB_REF" -e "GITHUB_SHA" -e "GITHUB_REPOSITORY" -e "GITHUB_REPOSITORY_OWNER" -e "GITHUB_REPOSITORY_OWNER_ID" -e "GITHUB_RUN_ID" -e "GITHUB_RUN_NUMBER" -e "GITHUB_RETENTION_DAYS" -e "GITHUB_RUN_ATTEMPT" -e "GITHUB_REPOSITORY_ID" -e "GITHUB_ACTOR_ID" -e "GITHUB_ACTOR" -e "GITHUB_TRIGGERING_ACTOR" -e "GITHUB_WORKFLOW" -e "GITHUB_HEAD_REF" -e "GITHUB_BASE_REF" -e "GITHUB_EVENT_NAME" -e "GITHUB_SERVER_URL" -e "GITHUB_API_URL" -e "GITHUB_GRAPHQL_URL" -e "GITHUB_REF_NAME" -e "GITHUB_REF_PROTECTED" -e "GITHUB_REF_TYPE" -e "GITHUB_WORKFLOW_REF" -e "GITHUB_WORKFLOW_SHA" -e "GITHUB_WORKSPACE" -e "GITHUB_ACTION" -e "GITHUB_EVENT_PATH" -e "GITHUB_ACTION_REPOSITORY" -e "GITHUB_ACTION_REF" -e "GITHUB_PATH" -e "GITHUB_ENV" -e "GITHUB_STEP_SUMMARY" -e "GITHUB_STATE" -e "GITHUB_OUTPUT" -e "RUNNER_OS" -e "RUNNER_ARCH" -e "RUNNER_NAME" -e "RUNNER_ENVIRONMENT" -e "RUNNER_TOOL_CACHE" -e "RUNNER_TEMP" -e "RUNNER_WORKSPACE" -e "ACTIONS_RUNTIME_URL" -e "ACTIONS_RUNTIME_TOKEN" -e "ACTIONS_CACHE_URL" -e "ACTIONS_RESULTS_URL" -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/safaripro-sustainability-management-service/safaripro-sustainability-management-service":"/github/workspace" d990c2:8f62a50e38914d7499ab3c1231dbafa3
2025/02/02 07:06:26 Error: can't connect without a private SSH key or password
i tried to use password instead of private key all jobs are successful expect at "Upload Docker Image to DigitalOcean via SCP"
i have correct assigned secret and variables
name: Deploy Django App to DigitalOcean
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build Docker Image Locally
run: |
docker build -t django-app:latest .
- name: Save Docker Image as a Tar File
run: |
docker save -o django-app.tar django-app:latest
- name: Upload Docker Image to DigitalOcean via SCP
uses: appleboy/scp-action@master
with:
host: ${{ secrets.DIGITALOCEAN_IP_SUSTAINABILITY }}
username: ${{ secrets.DIGITALOCEAN_USER }}
password: ${{ secrets.DIGITALOCEAN_PASS_SUSTAINABILITY }}
port: 22
source: "django-app.tar"
target: "/tmp/" # Upload to /tmp/ instead of /root/
timeout: "100s"
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: SSH into DigitalOcean and Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.DIGITALOCEAN_IP_SUSTAINABILITY }}
username: ${{ secrets.DIGITALOCEAN_USER }}
password: ${{ secrets.DIGITALOCEAN_PASS_SUSTAINABILITY }}
port: 22
script: |
mv /tmp/django-app.tar /root/django-app.tar # Move file to root directory
docker load -i /root/django-app.tar
docker stop django-app || true
docker rm django-app || true
docker run -d --name django-app -p 8003:8003 django-app:latest
I am still getting the same error