name: 全局K3s部署 on: push: branches: [master] jobs: deploy: runs-on: ubuntu-latest env: K3S_HOST: 121.37.117.181 APP_NAME: ${{ gitea.repo_name }} # ========== 必须修改1:替换为你的实际镜像仓库地址 ========== # 若用DockerHub:改为你的DockerHub用户名(如 docker.io/zhangsan) # 若用Gitea内置仓库:改为 116.204.74.41:3000/red-future REGISTRY: 116.204.74.41:3000/red-future steps: - uses: gitea/actions/checkout@v4 # 1. 初始化 Docker Buildx - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 # ========== 必须修改2:适配你的镜像仓库登录(二选一) ========== # 选项A:用Gitea内置镜像仓库(推荐,和你的代码仓库统一) - name: Login to Gitea Registry uses: docker/login-action@v3 with: registry: 116.204.74.41:3000 username: ${{ secrets.GITEA_USER }} # 需在Gitea配置该密钥 password: ${{ secrets.GITEA_PWD }} # 需在Gitea配置该密钥 # 选项B:用DockerHub(若坚持用,注释掉上面的Gitea登录,启用下面这段) # - name: Login to DockerHub # uses: docker/login-action@v3 # with: # username: ${{ secrets.DOCKER_USER }} # password: ${{ secrets.DOCKER_PWD }} # 3. 构建+推送,启用缓存 - name: Build and push uses: docker/build-push-action@v5 with: context: . push: true tags: ${{ env.REGISTRY }}/${{ env.APP_NAME }}:${{ gitea.sha }} cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.APP_NAME }}:buildcache cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.APP_NAME }}:buildcache,mode=max # ========== 核心修复:解决/k8s/deploy.yaml不存在 ========== - name: SSH部署K3s run: | mkdir -p ~/.ssh echo "${{ secrets.K3S_PEM_KEY }}" > k3s.pem chmod 600 k3s.pem # 第一步:上传仓库根目录的deploy.yaml到K3s临时目录 scp -i k3s.pem -o StrictHostKeyChecking=no ./deploy.yaml root@${K3S_HOST}:/tmp/ # 第二步:执行kubectl命令(指向临时文件+补充命名空间) ssh -i k3s.pem -o StrictHostKeyChecking=no root@${K3S_HOST} << CMD kubectl apply -f /tmp/deploy.yaml kubectl rollout restart deployment ${APP_NAME} -n default # 可选:部署完成后删除临时文件 rm -f /tmp/deploy.yaml CMD