1设置阿里云密钥对
由于我使用的是阿里云,需要在阿里云控制面板设置密钥对,导出的私钥ssh_key2.pem文件先暂存在本地;由于我好几次使用 ssh-keygen -t rsa -b 2048生成密钥,配置在cicd环境变量中未生效,建议通过阿里云控制面板生成密钥对生成;必须是完整的私钥,包括头尾,例如:
vbnet
-----BEGIN OPENSSH PRIVATE KEY-----
...内容...
-----END OPENSSH PRIVATE KEY-----

添加图片注释,不超过 140 字(可选)
同时还需要修改服务器ssh配置文件,/etc/ssh/sshd_config中应有:
bash
PubkeyAuthentication yes #允许密钥形式连接
PermitRootLogin yes #允许root用户登录
修改后需重启 sshd:
systemctl restart sshd
2 设置CICD环境变量
如图,直接在GitHub仓库settings中操作

添加图片注释,不超过 140 字(可选)
这里需要三个变量:
bash
SERVER_SSH_KEY #导出的私钥ssh_key2.pem的内容,不要有多余的空格、换行或其他字符
USER_HOST #这里是服务器的ip
USER_NAME #我这里是root
3 配置action执行配置文件

添加图片注释,不超过 140 字(可选)
会在工程目录生成.github/workflows/main.yml文件,以下是具体配置,本地修改记得将文件从仓库pull到本地
yaml
name: Build app and deploy to Tencent
on:
#监听push操作
push:
branches:
# mian分支,你也可以改成其他分支
- main
jobs:
# 任务ID
build:
# 运行环境
runs-on: ubuntu-latest
# 步骤
steps:
# 使用别人的action
- uses: actions/checkout@v2
# 步骤名称
- name: npm install
# 步骤执行指令
run: npm install
- name: npm run build
run: npm run build
# - name: Install SSH Client
# run: sudo apt-get update && sudo apt-get install -y openssh-client
- name: ls
run: ls -al && pwd
# 命名这个任务为发布Deploy
- name: Deploy
uses: easingthemes/ssh-deploy@v2.1.5
env:
# SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY2 }}
REMOTE_HOST: ${{ secrets.USER_HOST }}
SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
REMOTE_USER: ${{ secrets.USER_NAME }}
REMOTE_PORT: 22
SOURCE: "dist/"
TARGET: "/home/www/dist"
SOURCE是我的vue工程打包目录,TARGET是目标服务器目录,/home/www是nginx静态文件目录,CICD执行完后就可以看到我的最新页面了。