web/.gitea/workflows/deploy.yaml

86 lines
2.6 KiB
YAML

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: actions/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: appleboy/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 }}