diff --git a/.gitea/workflows/workflow.yaml b/.gitea/workflows/workflow.yaml index 5e61bc2..096d775 100644 --- a/.gitea/workflows/workflow.yaml +++ b/.gitea/workflows/workflow.yaml @@ -15,6 +15,8 @@ env: # Set the absolute path for your production deployment on the remote server. REMOTE_PROD_PATH: /var/app/traefik/prod + REMOTE_STAGING_PATH: /var/app/traefik/staging + SSH_HOST: ${{ secrets.SSH_HOST }} SSH_USER: ${{ secrets.SSH_USER }} SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} @@ -114,6 +116,32 @@ jobs: - name: Run docker-compose on remote host run: ssh -p "$SSH_PORT" $SSH_USER@$SSH_HOST "cd '${{ needs.prepare_deployment_vars.outputs.deploy_path }}' && docker-compose --env-file dev.env -f docker-compose.yaml up -d --build" + + run_docker_compose_staging: + name: Run docker-compose remotely (Staging) + runs-on: ubuntu-latest + needs: [sync_repo_files, prepare_deployment_vars] + # if: | + # (github.ref == 'refs/heads/main') + steps: + - name: Setup SSH + uses: webfactory/ssh-agent@a6f90b1f127823b31d4d4a8d96047790581349bd # v0.9.1 + with: + ssh-private-key: ${{ env.SSH_PRIVATE_KEY }} + + - name: Add host to known_hosts + run: | + mkdir -p ~/.ssh + chmod 700 ~/.ssh + ssh-keyscan -p "$SSH_PORT" -T 10 -H "$SSH_HOST" >> ~/.ssh/known_hosts 2>/dev/null || { + echo "::error::Failed to ssh-keyscan $SSH_HOST:$SSH_PORT" + exit 1 + } + chmod 644 ~/.ssh/known_hosts + + - name: Run docker-compose on remote host + run: ssh -p "$SSH_PORT" $SSH_USER@$SSH_HOST "cd '${REMOTE_STAGING_PATH}' && docker-compose --env-file staging.env -f docker-compose.yaml up -d --build" + run_docker_compose_prod: name: Run docker-compose remotely (Prod) runs-on: ubuntu-latest diff --git a/docker-compose.yaml b/docker-compose.yaml index 40b5bbe..850b20e 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -29,17 +29,5 @@ services: - "traefik.enable=true" - "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)" - "traefik.http.routers.whoami.entrypoints=test" - test: - image: nginx - restart: unless-stopped - networks: - - proxy - ports: - - "80" - labels: - - "env=${ENV}" - - "traefik.enable=true" - - "traefik.http.routers.test.rule=Host(`test.docker.localhost`)" - - "traefik.http.routers.test.entrypoints=test" networks: proxy: diff --git a/staging.env b/staging.env new file mode 100644 index 0000000..dc09e47 --- /dev/null +++ b/staging.env @@ -0,0 +1,3 @@ +PORT=8080 +ENV=staging +NETWORK_NAME=proxy \ No newline at end of file