From 0b5f7d6bd1b16c205b41928606e2d001eb75f152 Mon Sep 17 00:00:00 2001 From: liubocheng <22913113@qq.com> Date: Tue, 25 Mar 2025 22:44:25 +0800 Subject: [PATCH] =?UTF-8?q?dev:=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/deploy-dev.yml | 48 ++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/.gitea/workflows/deploy-dev.yml b/.gitea/workflows/deploy-dev.yml index 4fc62a4..c317548 100644 --- a/.gitea/workflows/deploy-dev.yml +++ b/.gitea/workflows/deploy-dev.yml @@ -4,38 +4,48 @@ on: [push] jobs: deploy: runs-on: [self-hosted, php-7.3] + timeout-minutes: 20 # 延长超时时间[1](@ref) + steps: - name: Checkout code uses: actions/checkout@v4 - - name: Prepare SSH environment - env: - SSH_PRIVATE_KEY: ${{ secrets.TEST_SSH_KEY }} # 从 Gitea Secrets 读取私钥[2](@ref) + - name: Install SSH tools run: | - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - # 将服务器指纹加入已知主机(规避首次连接确认) - ssh-keyscan 43.142.97.39 >> ~/.ssh/known_hosts + sudo apt-get update && sudo apt-get install -y openssh-client rsync - - name: Sync code to server + - name: Configure SSH + env: + SSH_PRIVATE_KEY: ${{ secrets.TEST_SSH_KEY }} + run: | + SSH_DIR="/home/runner/.ssh" + mkdir -p $SSH_DIR + echo "$SSH_PRIVATE_KEY" > $SSH_DIR/id_rsa + chmod 700 $SSH_DIR + chmod 600 $SSH_DIR/id_rsa + ssh-keyscan 43.142.97.39 >> $SSH_DIR/known_hosts + + - name: Sync code run: | rsync -avz --delete --exclude=".env" \ + -e "ssh -o StrictHostKeyChecking=no -i /home/runner/.ssh/id_rsa" \ ./ deploy-user@43.142.97.39:/data/laravel_test/ - - name: Deploy Docker containers + - name: Deploy containers + env: + COMPOSE_PROJECT: "laravel_test" run: | - ssh -o StrictHostKeyChecking=no deploy-user@43.142.97.39 << 'EOF' + ssh -i /home/runner/.ssh/id_rsa deploy-user@43.142.97.39 << 'EOF' cd /data/laravel_test - # 启动/重建 Docker 容器(需预置 docker-compose.yml) - docker compose -p laravel_test down --volumes - docker compose -p laravel_test up -d --build + # 使用docker-compose插件模式 + docker compose -p $COMPOSE_PROJECT down --volumes + docker compose -p $COMPOSE_PROJECT up -d --build - # 在 PHP 容器内执行 Laravel 命令 - docker exec laravel_test-php-1 php artisan config:cache - docker exec laravel_test-php-1 php artisan migrate --force + # 等待容器启动 + sleep 10 - # 重载 Nginx 容器配置 - docker exec laravel_test-nginx-1 nginx -s reload + docker exec ${COMPOSE_PROJECT}-php-1 php artisan config:cache + docker exec ${COMPOSE_PROJECT}-php-1 php artisan migrate --force + docker exec ${COMPOSE_PROJECT}-nginx-1 nginx -s reload EOF