-
在Actions中切换分支
1
2
3
4
5
6
7- name: Checkout Codes
run: |
git clone -b hexo https://${{secrets.CODING_TOKEN_NAME}}:${{secrets.CODINGTOKEN}}@${Coding} hexo
cd master
ls
env:
Coding: e.coding.net/imtzz/Pages.git -
如何使用SSH登录远程服务器
服务器:A
Action 服务器:B
-
首先需要获取服务器A的密钥,用于CI服务器B远程免密登录,并且对应的服务器A公钥要加在A的
~/.ssh/authorized_keys
中。1
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
-
在Github Secrets中配置以下几项内容
SERVER_IP:服务器A的IP地址 SERVER_USERNAME:要登陆到服务器A使用的用户名(要与密钥匹配) SERVER_PRIVATE_KEY:服务器A密钥(id_rsa),建议复制的时候直接在文件中CTRL+A,全选粘进去。**\*不要缺少BEGIN和END那两行以及最后的空行,全都要。\***
-
StrictHostKeyChecking配置是关闭公钥检查,会自动接受新的公钥,防止需要输入yes时终端CI处理。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17- name: Configure SSH
run: |
mkdir -p ~/.ssh
echo "${KEY}" > ~/.ssh/deploy.key
chmod 600 ~/.ssh/deploy.key
cat >> ~/.ssh/config <<END
Host server
HostName $IP
User $USERNAME
IdentityFile ~/.ssh/deploy.key
StrictHostKeyChecking no
END
env:
IP: ${{secrets.SERVER_IP}}
USERNAME: ${{secrets.SERVER_USERNAME}}
KEY: ${{secrets.SERVER_PRIVATE_KEY}}
-
-
解决SSH连接服务器执行命令不能自动终止
在最后执行服务器脚本的时候发现,虽然执行完了,但是无法自己断开连接,就需要对执行命令进行修改,最后如下。 deploy.sh 需要执行的脚本,server是上面config文件中配置的名称,将所有输出导向 /dev/null,即可自动关闭。
1
ssh server < deploy.sh > /dev/null 2>&1
-
其实中间碰到了不少问题,许多问题解决完就忘记了,以后想起来再写吧。