gitlab 提交代码自动重启服务/执行脚本/远程服务器脚本
1. 在服务器中安装gitlab-runner
```sh
# https://docs.gitlab.com/runner/install/
apt install gitlab-runner
```
2. 将gitlab-runner 注册到gitlab服务中
```sh
gitlab-runner regitster
# 输入gitlab网址
# 输入描述信息(随意)
# 输入tags (随意)
# 输入 token(从gitlab设置中获取)
# 选择执行器类型: 选shell
```
3. 设置执行器不需要指定tags,如果不指定,配置文件中需要指定
4. 代码仓库中添加文件.gitlab-ci.yml
build-job:
stage: build
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
- pip3 install paramiko
- python3 ./script/server_dev/python-linux.py ./script/server_dev/server_dev.conf
5. 添加远程执行代码的文件:
需要自己写一个py文件来远程执行代码,放在自己的项目文件下,或者自己随便放个位置,只要能够执行到
# python-linux.py
import paramiko
import configparser
import sys
CONF = sys.argv
if len(CONF) < 2:
raise Exception('请输入配置文件名')
def get_conf():
cf = configparser.ConfigParser()
cf.read(CONF[1])
sections = cf.sections()
list_dict_conf = []
for opt in sections:
dev_item = cf.items(opt)
list_dict_conf.append(dict(dev_item))
return list_dict_conf
class OdooServer(object):
def __init__(self, hostname, port, username, password, command=''):
# 建立一个sshclient对象
self.ssh = paramiko.SSHClient()
# 允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面
self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 调用connect方法连接服务器
self.ssh.connect(hostname=hostname, port=port, username=username, password=password)
self.command = command
def exec_command(self):
if not isinstance(self.command, str):
return None
stdin, stdout, stderr = self.ssh.exec_command(self.command)
if stdout:
print('Return Message:', stdout.read().decode())
if stderr:
print('Error Message:', stderr.read().decode())
self.ssh.close()
if __name__ == '__main__':
list_config = get_conf()
for dict_config in list_config:
print('restart server:', dict_config)
server = OdooServer(**dict_config)
server.exec_command()
配置文件格式
[dev]
hostname=192.168.10.10
port = 22
username=root
password=123456
command = shell 脚本
本文来自博客园,作者:那时一个人,转载请注明原文链接:https://www.cnblogs.com/qianxunman/p/17961410