ci: self-hosted runner 직접 실행 (SSH 불필요) + root 모드 sudo 자동 스킵
Deploy / deploy (push) Failing after 0s

This commit is contained in:
chpark
2026-04-23 01:20:50 +09:00
parent d05685935d
commit 49639252bf
2 changed files with 43 additions and 28 deletions
+19 -14
View File
@@ -1,4 +1,4 @@
name: Deploy via SSH
name: Deploy
on:
push:
@@ -6,25 +6,30 @@ on:
workflow_dispatch:
jobs:
remote-deploy:
runs-on: ubuntu-latest
deploy:
runs-on: self-hosted
steps:
- name: Trigger remote deploy on server
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SSH_HOST }}
port: ${{ secrets.SSH_PORT || 22 }}
username: ${{ secrets.SSH_USER }}
password: ${{ secrets.SSH_PASSWORD }}
command_timeout: 20m
script: |
set -e
- name: Sync repo
run: |
cd /home/chpark
if [ ! -d insurance/.git ]; then
git clone https://git.junggomoa.com/chpark/insurance.git
fi
cd insurance
git fetch origin
git reset --hard origin/master
git reset --hard "origin/${GITHUB_REF##*/}"
- name: Deploy to k3s
run: |
cd /home/chpark/insurance
chmod +x scripts/deploy-remote.sh
bash scripts/deploy-remote.sh
- name: Show status
if: always()
run: |
export KUBECONFIG=/home/chpark/.kube/config
kubectl -n insurance get pods,svc 2>&1 || true
echo ""
echo "🚀 Web: https://insurance.junggomoa.com"
echo "🔌 API: https://api.insurance.junggomoa.com"
+16 -6
View File
@@ -1,11 +1,21 @@
#!/usr/bin/env bash
set -e
export KUBECONFIG=/home/chpark/.kube/config
SUDO_PASS="${SUDO_PASS:-qlalfqjsgh11}"
export KUBECONFIG="${KUBECONFIG:-/home/chpark/.kube/config}"
sudo_run() {
echo "$SUDO_PASS" | sudo -S bash -c "$1"
}
# root 실행 시엔 sudo 생략, 일반 유저면 비번으로 sudo
if [ "$(id -u)" -eq 0 ]; then
sudo_run() { bash -c "$1"; }
else
SUDO_PASS="${SUDO_PASS:-qlalfqjsgh11}"
sudo_run() { echo "$SUDO_PASS" | sudo -S bash -c "$1"; }
fi
# CI(root) 환경에서 kubeconfig 없으면 k3s 것으로 대체
if [ ! -r "$KUBECONFIG" ]; then
if [ -r /etc/rancher/k3s/k3s.yaml ]; then
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
fi
fi
cd /home/chpark
if [ -d insurance/.git ]; then
@@ -37,7 +47,7 @@ echo "[*] Applying Kubernetes manifests"
kubectl apply -f deploy/k8s/namespace.yaml
SECRETS_FILE=/home/chpark/.insurance-secrets
if [ -f "$SECRETS_FILE" ]; then
if [ -r "$SECRETS_FILE" ]; then
set -a; source "$SECRETS_FILE"; set +a
fi
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-$(openssl rand -hex 24)}"