name: 自动部署 on: push: branches: - master paths-ignore: - .gitignore - README.md - .vscode/** tags: - v* env: docker_host: ${{ secrets.DOCKER_REGISTRY }} docker_user: ${{ secrets.DOCKER_USERNAME }} docker_pass: ${{ secrets.DOCKER_PASSWORD }} docker_name: ${{ secrets.DOCKER_REGISTRY }}/${{ gitea.repository }} deploy_host: ${{ secrets.DEPLOY_HOSTNAME }} deploy_port: ${{ secrets.DEPLOY_PORT }} deploy_user: ${{ secrets.DEPLOY_USERNAME }} deploy_pass: ${{ secrets.DEPLOY_PASSWORD }} deploy_name: demo_web jobs: build: runs-on: ubuntu-latest container: image: catthehacker/ubuntu:act-latest steps: - name: 检出代码 id: checkout uses: https://gitea.com/actions/checkout@v3 - name: 设置环境 uses: https://gitea.com/actions/setup-node@v2 - name: 安装依赖 run: | npm install --registry https://registry.npmmirror.com/ - name: 构建产物 run: npm run build - name: 打印目录 run: ls ./dist - name: 构建镜像 run: | docker build -t ${{ env.docker_name }}:latest . - name: 登陆镜像 run: | docker login -u "${{ env.docker_user }}" -p "${{ env.docker_pass }}" ${{ env.docker_host }} - name: 推送镜像 shell: bash run: | docker push ${{ env.docker_name }}:latest - name: 标记镜像 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: http://git.dev.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 }}