86 lines
2.6 KiB
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 }}
|