-
Notifications
You must be signed in to change notification settings - Fork 1
71 lines (70 loc) · 2.16 KB
/
deploy.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
name: deploy to my tencent
on:
push:
branches:
- main
jobs:
publish:
environment: deploy to tencent
runs-on: ubuntu-latest
env:
# 私钥
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
# 用户名
SSH_USERNAME: ${{ secrets.SSH_USERNAME }}
# 主机地址
SSH_HOST: ${{ secrets.SSH_HOST }}
# 指纹
SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOST }}
steps:
# 创建ssh目录, 并启动ssh代理
- name: setup ssh
shell: bash
run: |
mkdir -p $HOME/.ssh
# 保存公钥到known_hosts
- name: configure ssh public key
shell: bash
run: echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
# 保存私钥到ssh-agent
- name: setup ssh private key
shell: bash
run: |
eval $(ssh-agent)
# 将进程信息保存到环境变量, 方便后面的程序使用, 如docker
echo "SSH_AUTH_SOCK=$SSH_AUTH_SOCK" >> $GITHUB_ENV
echo "SSH_AGENT_PID=SSH_AGENT_PID" >> $GITHUB_ENV
echo "$SSH_PRIVATE_KEY" | ssh-add -
ssh-add -l
# 创建并使用docker远程上下文
- name: create and use docker remote context
shell: bash
run: |
docker context create remote --docker "host=ssh://$SSH_USERNAME@$SSH_HOST"
docker context use remote
# 检出代码
- name: checkout
uses: actions/checkout@v3
# 安装nodejs 18和yarn
- name: setup node
uses: actions/setup-node@v3
with:
node-version: 18
cache: yarn
# 安装依赖
- name: install dependencies
run: yarn install
# 构建
- name: build
run: yarn build
# 移除历史镜像
- name: remove docker image and container
run: |
docker rm -f ly-admin-pc || true
docker rmi -f ly-admin-pc || true
# 构建docker镜像
- name: build docker image
run: docker build --no-cache -f ./build/docker/Dockerfile -t ly-admin-pc .
# 启动新的docker镜像
- name: start docker container
run: docker run -d -p 8001:80 --name ly-admin-pc ly-admin-pc