diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 958bd4d..d830d48 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -10,13 +10,20 @@ jobs: runs-on: ubuntu-latest steps: - name: 코드 체크아웃 - uses: actions/checkout@v4 + run: | + git config --global --add safe.directory /workspace/A301/a301_client + git init + git remote add origin $GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git + git fetch --depth=1 origin $GITHUB_SHA + git checkout $GITHUB_SHA - name: Node.js 설정 - uses: actions/setup-node@v4 - with: - node-version: '22' - cache: 'npm' + run: | + if ! command -v node &>/dev/null || [ "$(node -v | cut -d. -f1 | tr -d v)" -lt 22 ]; then + curl -fsSL https://deb.nodesource.com/setup_22.x | bash - + apt-get install -y nodejs + fi + node -v && npm -v - name: 의존성 설치 run: npm ci --legacy-peer-deps @@ -35,23 +42,11 @@ jobs: needs: test steps: - name: 서버에 배포 - uses: appleboy/ssh-action@v1 - with: - host: ${{ secrets.SERVER_HOST }} - username: ${{ secrets.SERVER_USER }} - key: ${{ secrets.SSH_PRIVATE_KEY }} - port: 22 - script: | - set -e - export PATH=$PATH:/usr/local/bin:/opt/homebrew/bin:$HOME/.docker/bin - cd /tmp - rm -rf a301-client - # Suppress token from logs - set +x - git clone --quiet https://tolelom:${{ secrets.GIT_TOKEN }}@git.tolelom.xyz/A301/a301_client.git a301-client 2>/dev/null - set -x - cd a301-client - docker build --no-cache --build-arg VITE_API_BASE_URL=${{ secrets.VITE_API_BASE_URL }} -t a301-client:latest . - cd ~/server - docker compose up -d --force-recreate a301-client - rm -rf /tmp/a301-client + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_key + chmod 600 ~/.ssh/deploy_key + ssh -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key \ + ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }} \ + 'set -e && export PATH=$PATH:/usr/local/bin:/opt/homebrew/bin:$HOME/.docker/bin && cd /tmp && rm -rf a301-client && git clone --quiet https://tolelom:${{ secrets.GIT_TOKEN }}@git.tolelom.xyz/A301/a301_client.git a301-client && cd a301-client && docker build --no-cache --build-arg VITE_API_BASE_URL=${{ secrets.VITE_API_BASE_URL }} -t a301-client:latest . && cd ~/server && docker compose up -d --force-recreate a301-client && rm -rf /tmp/a301-client' + rm -f ~/.ssh/deploy_key