name: 自动部署 on: push: branches: - master paths-ignore: - .gitignore - .eslintrc.json - .prettierrc.json - .vscode/** - README.md tags: - v* env: # docker 镜像仓库地址,例如: git.dev.juetan.cn docker_host: ${{ secrets.DOCKER_HOST }} # docker 镜像仓库用户名 docker_user: ${{ secrets.DOCKER_USER }} # docker 镜像仓库密码 docker_pass: ${{ secrets.DOCKER_PASS }} # docker 镜像仓库名称,例如: git.dev.juetan.cn/xxx/xxx docker_name: ${{ secrets.DOCKER_HOST }}/${{ gitea.repository }} # 部署服务器IP或域名, 例如: 1.1.1.1 deploy_host: ${{ secrets.DEPLOY_HOST }} # 部署服务器端口, 例如: 22 deploy_port: ${{ secrets.DEPLOY_PORT }} # 部署服务器用户名, 例如: root deploy_user: ${{ secrets.DEPLOY_USER }} # 部署服务器密码, 例如: 123456 deploy_pass: ${{ secrets.DEPLOY_PASS }} # 要更新的 docker 服务名称, 例如: demo_web deploy_name: appnify_web jobs: build: runs-on: ubuntu-latest container: image: catthehacker/ubuntu:act-latest steps: - name: 检出代码 id: checkout uses: https://git.app.juetan.cn/mirror/checkout@v3 # - name: 设置NodeJS环境 # uses: actions/setup-node@v2 # - name: 安装Npm依赖 # run: npm install --registry https://registry.npmmirror.com/ # - name: 构建产物 # run: npm run build # - name: 打印产物目录 # run: ls ./dist - name: 构建Docker镜像 run: docker build -t ${{ env.docker_name }}:latest . - name: 登陆Docker镜像仓库 run: docker login -u "${{ env.docker_user }}" -p "${{ env.docker_pass }}" ${{ env.docker_host }} - name: 推送Docker镜像到仓库 shell: bash run: docker push ${{ env.docker_name }}:latest - name: 打上Docker镜像版本标签并推送到仓库 if: gitea.ref_type == 'tag' run: | echo "当前推送版本:${{ gitea.ref_name }}" docker tag ${{ env.docker_name }}:latest ${{ env.docker_name }}:${{ gitea.ref_name }} docker push ${{ env.docker_name }}:${{ gitea.ref_name }} - name: 登陆到部署环境执行更新命令 uses: https://git.app.juetan.cn/mirror/ssh-action@v1.0.0 with: host: ${{ env.deploy_host }} port: ${{ env.deploy_port }} username: ${{ env.deploy_user }} password: ${{ env.deploy_pass }} script: | docker service ls | grep -q ${{ env.deploy_name }} || exit 0 docker service update --image ${{ env.docker_name }}:latest ${{ env.deploy_name }}