Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
I
install.api
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Script
install.api
Commits
8163e547
Commit
8163e547
authored
Mar 14, 2020
by
金凯强
🎨
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
拆分升级步骤
parent
49937009
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
179 additions
and
6 deletions
+179
-6
install_api.py
app/install/install_api.py
+24
-0
install_service.py
app/install/install_service.py
+43
-1
upgarde_api.py
app/upgrade/upgarde_api.py
+26
-0
upgrade_service.py
app/upgrade/upgrade_service.py
+86
-5
No files found.
app/install/install_api.py
View file @
8163e547
...
@@ -15,6 +15,30 @@ class InstallAPI(ApiController):
...
@@ -15,6 +15,30 @@ class InstallAPI(ApiController):
'''
'''
return
InstallService
()
.
install_runner
()
return
InstallService
()
.
install_runner
()
@
api
(
'runner/step1'
)
def
get_install_runner_step1
(
self
):
'''
安装runner1
:return:
'''
return
InstallService
()
.
install_huansi_runner_step1
()
@
api
(
'runner/step2'
)
def
get_install_runner_step2
(
self
):
'''
安装runner2
:return:
'''
return
InstallService
()
.
install_huansi_runner_step2
()
@
api
(
'runner/step3'
)
def
get_install_runner_step3
(
self
):
'''
安装runner3
:return:
'''
return
InstallService
()
.
install_huansi_runner_step3
()
@
api
(
'remote_server/docker/'
)
@
api
(
'remote_server/docker/'
)
def
get_install_remote_server_docker
(
self
):
def
get_install_remote_server_docker
(
self
):
'''
'''
...
...
app/install/install_service.py
View file @
8163e547
...
@@ -29,7 +29,6 @@ class InstallService(HSBaseUCService):
...
@@ -29,7 +29,6 @@ class InstallService(HSBaseUCService):
:param HSCUSCODE:
:param HSCUSCODE:
:return:
:return:
'''
'''
time
.
sleep
(
60
)
self
.
delete_setting_file
()
self
.
delete_setting_file
()
s1
=
os
.
system
(
"docker run --rm -t -i -v /etc/gitlab-runner:/etc/gitlab-runner gitlab/gitlab-runner register
\
s1
=
os
.
system
(
"docker run --rm -t -i -v /etc/gitlab-runner:/etc/gitlab-runner gitlab/gitlab-runner register
\
-n -u http://47.110.145.204:8085/ -r WwpzH4qk19KjvAjEwoTz --executor docker --docker-image docker
\
-n -u http://47.110.145.204:8085/ -r WwpzH4qk19KjvAjEwoTz --executor docker --docker-image docker
\
...
@@ -42,6 +41,49 @@ class InstallService(HSBaseUCService):
...
@@ -42,6 +41,49 @@ class InstallService(HSBaseUCService):
self
.
start_runner
()
self
.
start_runner
()
return
{
"message"
:
"安装runner成功"
}
return
{
"message"
:
"安装runner成功"
}
def
install_huansi_runner_step1
(
self
):
'''
安装runner第一步
:param HSCUSCODE:
:return:
'''
conncetion_service
=
ConnectionService
()
project_info
=
conncetion_service
.
get_project_info
()
if
not
project_info
:
raise
HSException
(
'项目信息未查到,请先配置'
)
project_code
=
project_info
[
'project_no'
]
# 测试下载时间
time
.
sleep
(
20
)
self
.
delete_setting_file
()
s1
=
os
.
system
(
"docker run --rm -t -i -v /etc/gitlab-runner:/etc/gitlab-runner gitlab/gitlab-runner register
\
-n -u http://47.110.145.204:8085/ -r WwpzH4qk19KjvAjEwoTz --executor docker --docker-image docker
\
--description huansi.{hscode}
\
--tag-list huansi.{hscode}"
.
format
(
hscode
=
project_code
))
if
s1
!=
0
:
raise
HSException
(
'gitlab-runner安装失败'
)
return
{
"message"
:
"runner注册成功"
,
"step"
:
"1"
,
"status"
:
"running"
,
"later_message"
:
"正在修改runner配置..."
}
def
install_huansi_runner_step2
(
self
):
'''
安装runner第二步
:param HSCUSCODE:
:return:
'''
self
.
_edit_runner_setting
()
self
.
_remove_old_runner_container
()
return
{
"message"
:
"runner配置修改成功"
,
"step"
:
"2"
,
"status"
:
"running"
,
"later_message"
:
"正在重启runner..."
}
def
install_huansi_runner_step3
(
self
):
'''
安装runner第三步
:param HSCUSCODE:
:return:
'''
self
.
start_runner
()
return
{
"message"
:
"runner重启成功"
,
"step"
:
"3"
,
"status"
:
"success"
}
def
_edit_runner_setting
(
self
):
def
_edit_runner_setting
(
self
):
os
.
system
(
"chmod 777 /etc/gitlab-runner/config.toml"
)
os
.
system
(
"chmod 777 /etc/gitlab-runner/config.toml"
)
with
open
(
'/etc/gitlab-runner/config.toml'
,
'r'
)
as
f
:
with
open
(
'/etc/gitlab-runner/config.toml'
,
'r'
)
as
f
:
...
...
app/upgrade/upgarde_api.py
View file @
8163e547
...
@@ -32,6 +32,32 @@ class UpgradeAPI(ApiController):
...
@@ -32,6 +32,32 @@ class UpgradeAPI(ApiController):
log_id
=
request
.
args
.
get
(
'log_id'
)
log_id
=
request
.
args
.
get
(
'log_id'
)
return
UpgradeService
()
.
remote_upgrade
(
log_id
)
return
UpgradeService
()
.
remote_upgrade
(
log_id
)
@
api
(
'remote/step1'
)
def
get_remote_upgrade
(
self
):
'''
远程升级---1
:return:
'''
return
UpgradeService
()
.
remote_upgrade_step1
()
@
api
(
'remote/step2'
)
def
get_remote_upgrade
(
self
):
'''
远程升级---2
:return:
'''
log_id
=
request
.
args
.
get
(
'log_id'
)
return
UpgradeService
()
.
remote_upgrade_step2
(
log_id
)
@
api
(
'remote/step3'
)
def
get_remote_upgrade
(
self
):
'''
远程升级---3
:return:
'''
log_id
=
request
.
args
.
get
(
'log_id'
)
return
UpgradeService
()
.
remote_upgrade_step3
(
log_id
)
@
api
(
'package_images/<int:log_id>'
)
@
api
(
'package_images/<int:log_id>'
)
def
get_package_images
(
self
,
log_id
):
def
get_package_images
(
self
,
log_id
):
'''
'''
...
...
app/upgrade/upgrade_service.py
View file @
8163e547
...
@@ -70,11 +70,17 @@ class UpgradeService():
...
@@ -70,11 +70,17 @@ class UpgradeService():
# 调用本机的docker-compose
# 调用本机的docker-compose
ssh_conenct
=
SSHConnect
(
user_name
=
'root'
,
password
=
'huansi.net'
,
host_port
=
'1111'
,
host_ip
=
host_ip
)
ssh_conenct
=
SSHConnect
(
user_name
=
'root'
,
password
=
'huansi.net'
,
host_port
=
'1111'
,
host_ip
=
host_ip
)
with
ssh_conenct
as
ssh
:
with
ssh_conenct
as
ssh
:
# todo 处理*的情况
# 处理*的情况
if
app_list
==
'*'
:
out
,
err
=
ssh
.
exec_command
(
out
,
err
=
ssh
.
exec_command
(
f
'''export HUANSI_REGISTRY_URL=47.110.145.204:8084 &&
\
f
'''export HUANSI_REGISTRY_URL=47.110.145.204:8084 &&
\
source /etc/profile.d/huansi.sh &&
\
source /etc/profile.d/huansi.sh &&
\
docker-compose -f /data/upgrade_tools_data/backup/{upgrade_no}/docker-compose.yml -p deploy up -d --force-recreate --no-deps {app_list}'''
)
docker-compose -f /data/upgrade_tools_data/backup/{upgrade_no}/docker-compose.yml -p deploy up -d --force-recreate'''
)
else
:
out
,
err
=
ssh
.
exec_command
(
f
'''export HUANSI_REGISTRY_URL=47.110.145.204:8084 &&
\
source /etc/profile.d/huansi.sh &&
\
docker-compose -f /data/upgrade_tools_data/backup/{upgrade_no}/docker-compose.yml -p deploy up -d --force-recreate --no-deps {app_list}'''
)
# 会有问题,docker-compose编译的时候,会把过程放到err上,所以注释这段
# 会有问题,docker-compose编译的时候,会把过程放到err上,所以注释这段
# if err:
# if err:
# raise HSException(f'回滚失败:{err}')
# raise HSException(f'回滚失败:{err}')
...
@@ -150,6 +156,81 @@ docker-compose -f /data/upgrade_tools_data/backup/{upgrade_no}/docker-compose.ym
...
@@ -150,6 +156,81 @@ docker-compose -f /data/upgrade_tools_data/backup/{upgrade_no}/docker-compose.ym
return
{
'message'
:
'升级完成'
,
out
:
err
}
return
{
'message'
:
'升级完成'
,
out
:
err
}
def
remote_upgrade_step1
(
self
):
'''
远程升级
:return:
'''
# 找到服务器ip
# 上传app包到服务器
remote_server_info
=
ConnectionService
()
.
get_remote_server_info
()
if
not
remote_server_info
:
raise
HSException
(
'远端服务器信息未查到,请先配置'
)
ssh_conenct
=
SSHConnect
(
host_ip
=
remote_server_info
[
'server_ip'
],
host_port
=
remote_server_info
[
'server_ssh_port'
],
user_name
=
remote_server_info
[
'server_user'
],
password
=
remote_server_info
[
'server_password'
])
with
ssh_conenct
as
ssh
:
# 验证远端服务器有没有安装docker
self
.
validate_remote_server_install_docker
(
ssh
)
return
{
"message"
:
f
'成功验证远端服务器已经安装docker'
,
"step"
:
"1"
,
"status"
:
"running"
,
"later_message"
:
"正在打包程序,该过程会很漫长,请耐心等待..."
}
def
remote_upgrade_step2
(
self
,
log_id
=
None
):
'''
远程升级2
:return:
'''
upgrade_no
=
self
.
get_upgrade_no_by_log_id
(
log_id
)
self
.
_package_images
(
upgrade_no
)
return
{
"message"
:
f
'打包完成,请到D:
\\
HuanSi
\\
LinuxData
\\
upgrade
\\
upgrade_tools_data
\\
backup
\\
{upgrade_no}查看'
,
"step"
:
"2"
,
"status"
:
"running"
,
"later_message"
:
"正在上传服务器并升级,该过程会很漫长,请耐心等待..."
}
def
remote_upgrade_step3
(
self
,
log_id
=
None
):
'''
远程升级3
:return:
'''
upgrade_no
=
self
.
get_upgrade_no_by_log_id
(
log_id
)
# 找到服务器ip
# 上传app包到服务器
remote_server_info
=
ConnectionService
()
.
get_remote_server_info
()
if
not
remote_server_info
:
raise
HSException
(
'远端服务器信息未查到,请先配置'
)
ssh_conenct
=
SSHConnect
(
host_ip
=
remote_server_info
[
'server_ip'
],
host_port
=
remote_server_info
[
'server_ssh_port'
],
user_name
=
remote_server_info
[
'server_user'
],
password
=
remote_server_info
[
'server_password'
])
# 复制文件到待上传的目录
upgrade_back_up_dir
=
os
.
path
.
join
(
temp_file_dir
,
'backup'
,
upgrade_no
)
with
ssh_conenct
as
ssh
:
for
files
in
os
.
listdir
(
upgrade_back_up_dir
):
path
=
os
.
path
.
join
(
upgrade_back_up_dir
,
files
)
# 隐藏文件不复制
if
files
.
startswith
(
'.'
):
continue
logger
.
info
(
f
"地址:{path}---->/huansi/upgrade/{files}"
)
ssh
.
upload
(
path
,
f
'/huansi/upgrade/{files}'
)
ssh
.
upload
(
os
.
path
.
join
(
system_file_dir
,
'load.sh'
),
'/huansi/upgrade/load.sh'
)
ssh
.
upload
(
os
.
path
.
join
(
profile_dir
,
'huansi.sh'
),
'/huansi/upgrade/huansi.sh'
)
ssh
.
upload
(
os
.
path
.
join
(
system_file_dir
,
'load_handle.py'
),
'/huansi/upgrade/load_handle.py'
)
out
,
err
=
ssh
.
exec_command
(
"sh /huansi/upgrade/load.sh"
)
logger
.
info
(
f
'远程升级信息:{out},远程错误信息:{out}'
)
return
{
"message"
:
f
'已经成功上传服务器并升级'
,
"step"
:
"3"
,
"status"
:
"success"
}
def
package_images
(
self
,
log_id
):
def
package_images
(
self
,
log_id
):
'''
'''
打包镜像
打包镜像
...
@@ -164,7 +245,7 @@ docker-compose -f /data/upgrade_tools_data/backup/{upgrade_no}/docker-compose.ym
...
@@ -164,7 +245,7 @@ docker-compose -f /data/upgrade_tools_data/backup/{upgrade_no}/docker-compose.ym
self
.
_package_images
(
upgrade_no
)
self
.
_package_images
(
upgrade_no
)
return
{
'message'
:
'打包完成,请到D:
\\
HuanSi
\\
LinuxData
\\
upgrade
\\
upgrade_tools_data
\\
backup
查看'
}
return
{
'message'
:
f
'打包完成,请到D:
\\
HuanSi
\\
LinuxData
\\
upgrade
\\
upgrade_tools_data
\\
backup
\\
{upgrade_no}
查看'
}
def
_package_images
(
self
,
upgrade_no
):
def
_package_images
(
self
,
upgrade_no
):
docker_compose_file_dir
=
self
.
find_compose_by_upgrade_no
(
upgrade_no
)
docker_compose_file_dir
=
self
.
find_compose_by_upgrade_no
(
upgrade_no
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment