Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
education
Project
Project
Details
Activity
Releases
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
李丛阳
education
Commits
1bbd11fa
Commit
1bbd11fa
authored
Jan 11, 2018
by
YangZhaoJun1
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://103.249.252.109:90/lcy/education
parents
c42850d4
b1ae207b
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
228 additions
and
8 deletions
+228
-8
pom.xml
pom.xml
+6
-1
BCodeLxcServiceImpl.java
...soft/business/bcode/service/impl/BCodeLxcServiceImpl.java
+4
-1
StopLxcJob.java
...main/java/org/rcisoft/business/bcode/task/StopLxcJob.java
+3
-1
LxcCommand.java
src/main/java/org/rcisoft/core/command/LxcCommand.java
+19
-4
RemoteExecuteCommand.java
...n/java/org/rcisoft/core/command/RemoteExecuteCommand.java
+187
-0
application-dev.yml
src/main/resources/application-dev.yml
+5
-0
application-prod.yml
src/main/resources/application-prod.yml
+4
-1
No files found.
pom.xml
View file @
1bbd11fa
...
@@ -336,6 +336,11 @@
...
@@ -336,6 +336,11 @@
<version>
2.1
</version>
<version>
2.1
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.ganymed.ssh2
</groupId>
<artifactId>
ganymed-ssh2-build
</artifactId>
<version>
210
</version>
</dependency>
</dependencies>
</dependencies>
...
...
src/main/java/org/rcisoft/business/bcode/service/impl/BCodeLxcServiceImpl.java
View file @
1bbd11fa
...
@@ -49,6 +49,9 @@ public class BCodeLxcServiceImpl implements BCodeLxcService {
...
@@ -49,6 +49,9 @@ public class BCodeLxcServiceImpl implements BCodeLxcService {
@Autowired
@Autowired
private
SchedulerFactoryBean
schedulerFactoryBean
;
private
SchedulerFactoryBean
schedulerFactoryBean
;
@Autowired
private
LxcCommand
lxcCommand
;
@Override
@Override
public
CommandResult
startBCodeLxc
(
BCodeLxc
lxc
)
{
public
CommandResult
startBCodeLxc
(
BCodeLxc
lxc
)
{
...
@@ -83,7 +86,7 @@ public class BCodeLxcServiceImpl implements BCodeLxcService {
...
@@ -83,7 +86,7 @@ public class BCodeLxcServiceImpl implements BCodeLxcService {
if
(!
result
.
isSuccess
())
if
(!
result
.
isSuccess
())
return
result
;
return
result
;
/*2.docker-compose 起容器*/
/*2.docker-compose 起容器*/
result
=
L
xcCommand
.
startOrDownLxc
(
destPath
);
result
=
l
xcCommand
.
startOrDownLxc
(
destPath
);
if
(!
result
.
isSuccess
())
if
(!
result
.
isSuccess
())
return
result
;
return
result
;
/*3.redis 放置状态*/
/*3.redis 放置状态*/
...
...
src/main/java/org/rcisoft/business/bcode/task/StopLxcJob.java
View file @
1bbd11fa
...
@@ -23,6 +23,8 @@ public class StopLxcJob implements Job {
...
@@ -23,6 +23,8 @@ public class StopLxcJob implements Job {
@Autowired
@Autowired
private
RcRedisService
rcRedisServiceImpl
;
private
RcRedisService
rcRedisServiceImpl
;
@Autowired
private
LxcCommand
lxcCommand
;
@Override
@Override
public
void
execute
(
JobExecutionContext
jobExecutionContext
)
throws
JobExecutionException
{
public
void
execute
(
JobExecutionContext
jobExecutionContext
)
throws
JobExecutionException
{
/*1.容器名称*/
/*1.容器名称*/
...
@@ -41,7 +43,7 @@ public class StopLxcJob implements Job {
...
@@ -41,7 +43,7 @@ public class StopLxcJob implements Job {
/*关闭容器*/
/*关闭容器*/
/*2.docker-compose 起容器*/
/*2.docker-compose 起容器*/
CommandResult
commandResult
=
null
;
CommandResult
commandResult
=
null
;
commandResult
=
L
xcCommand
.
startOrDownLxc
(
containerPath
,
false
);
commandResult
=
l
xcCommand
.
startOrDownLxc
(
containerPath
,
false
);
/*3.移除端口*/
/*3.移除端口*/
}
}
...
...
src/main/java/org/rcisoft/core/command/LxcCommand.java
View file @
1bbd11fa
...
@@ -3,6 +3,8 @@ package org.rcisoft.core.command;
...
@@ -3,6 +3,8 @@ package org.rcisoft.core.command;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.rcisoft.core.result.CommandResult
;
import
org.rcisoft.core.result.CommandResult
;
import
org.rcisoft.core.result.ResultCode
;
import
org.rcisoft.core.result.ResultCode
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.io.File
;
import
java.io.File
;
...
@@ -12,8 +14,12 @@ import java.io.File;
...
@@ -12,8 +14,12 @@ import java.io.File;
* 开启容器 命令
* 开启容器 命令
*/
*/
@Slf4j
@Slf4j
@Component
public
class
LxcCommand
{
public
class
LxcCommand
{
@Autowired
private
RemoteExecuteCommand
remoteExecuteCommand
;
/**
/**
* 开启容器
* 开启容器
*/
*/
...
@@ -27,10 +33,13 @@ public class LxcCommand {
...
@@ -27,10 +33,13 @@ public class LxcCommand {
*/
*/
public
static
final
String
LXC_SETTING_NAME
=
"docker-compose.yml"
;
public
static
final
String
LXC_SETTING_NAME
=
"docker-compose.yml"
;
public
CommandResult
startOrDownLxc
(
String
dest
){
return
this
.
startOrDownLxc
(
dest
,
true
);
}
public
static
CommandResult
startOrDownLxc
(
String
des
t
){
public
CommandResult
startOrDownLxc
(
String
dest
,
boolean
isStar
t
){
return
LxcCommand
.
startOrDownLxc
(
dest
,
true
);
return
this
.
startOrDownLxc
(
dest
,
true
,
true
);
}
}
/**
/**
...
@@ -38,7 +47,7 @@ public class LxcCommand {
...
@@ -38,7 +47,7 @@ public class LxcCommand {
* @param dest
* @param dest
* @param isStart
* @param isStart
*/
*/
public
static
CommandResult
startOrDownLxc
(
String
dest
,
boolean
isStart
){
public
CommandResult
startOrDownLxc
(
String
dest
,
boolean
isStart
,
boolean
isRemote
){
CommandResult
commandResult
=
null
;
CommandResult
commandResult
=
null
;
try
{
try
{
File
dirPath
=
new
File
(
dest
);
File
dirPath
=
new
File
(
dest
);
...
@@ -48,8 +57,14 @@ public class LxcCommand {
...
@@ -48,8 +57,14 @@ public class LxcCommand {
return
commandResult
;
return
commandResult
;
}
}
if
(
isStart
)
if
(
isStart
)
if
(
isRemote
)
remoteExecuteCommand
.
execute
(
START_LXC_COMMAND
,
dest
);
else
Runtime
.
getRuntime
().
exec
(
"cd "
+
dest
+
" && "
+
START_LXC_COMMAND
);
Runtime
.
getRuntime
().
exec
(
"cd "
+
dest
+
" && "
+
START_LXC_COMMAND
);
else
{
else
{
if
(
isRemote
)
remoteExecuteCommand
.
execute
(
START_LXC_COMMAND
,
dest
);
else
Runtime
.
getRuntime
().
exec
(
"cd "
+
dest
+
" && "
+
DOWN_LXC_COMMAND
);
Runtime
.
getRuntime
().
exec
(
"cd "
+
dest
+
" && "
+
DOWN_LXC_COMMAND
);
dirPath
.
delete
();
dirPath
.
delete
();
}
}
...
...
src/main/java/org/rcisoft/core/command/RemoteExecuteCommand.java
0 → 100644
View file @
1bbd11fa
package
org
.
rcisoft
.
core
.
command
;
import
ch.ethz.ssh2.Connection
;
import
ch.ethz.ssh2.Session
;
import
ch.ethz.ssh2.StreamGobbler
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.io.*
;
/**
* Created by lcy on 18/1/11.
*/
@Data
@NoArgsConstructor
@Slf4j
@Component
public
class
RemoteExecuteCommand
{
//字符编码默认是utf-8
private
static
String
DEFAULT_CHART
=
"UTF-8"
;
private
Connection
conn
;
@Value
(
"${serverLxc.ip}"
)
private
String
ip
;
@Value
(
"${serverLxc.username}"
)
private
String
userName
;
@Value
(
"${serverLxc.password}"
)
private
String
userPwd
;
/**
* 远程登录linux的主机
* @author Ickes
* @since V0.1
* @return
* 登录成功返回true,否则返回false
*/
private
Boolean
login
(){
boolean
flg
=
false
;
try
{
conn
=
new
Connection
(
ip
);
conn
.
connect
();
//连接
flg
=
conn
.
authenticateWithPassword
(
userName
,
userPwd
);
//认证
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
flg
;
}
/**
* @author Ickes
* 远程执行shll脚本或者命令
* @param cmd
* 即将执行的命令
* @return
* 命令执行完后返回的结果值
* @since V0.1
*/
public
String
execute
(
String
cmd
){
log
.
info
(
"执行:{}"
,
cmd
);
String
result
=
""
;
int
exceTime
=
0
;
try
{
if
(
login
()){
//这里偶尔会由于网络原因抛出异常
Session
session
=
conn
.
openSession
();
//打开一个会话
session
.
execCommand
(
cmd
);
//执行命令
result
=
processStdout
(
session
.
getStdout
(),
DEFAULT_CHART
);
//如果为得到标准输出为空,说明脚本执行出错了
if
(
StringUtils
.
isBlank
(
result
)){
result
=
processStdout
(
session
.
getStderr
(),
DEFAULT_CHART
);
}
session
.
close
();
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
if
(
exceTime
<
10
)
{
try
{
Thread
.
sleep
(
1000
);
}
catch
(
InterruptedException
e1
)
{
e1
.
printStackTrace
();
}
exceTime
++;
return
execute
(
cmd
);
//异常了就循环执行方法,直到正常了才返回
}
else
{
//throw new BusinessException(ResultEnums.NETWORK_ERROR);
}
}
finally
{
conn
.
close
();
}
log
.
info
(
"返回:{}"
,
result
);
return
result
;
}
/**
* @author Ickes
* 远程执行shll脚本或者命令
* @param cmd
* 即将执行的命令
* @param location
* 即将执行命令的所在位置
* @return
* 命令执行完后返回的结果值
* @since V0.1
*/
public
String
execute
(
String
cmd
,
String
location
){
return
execute
(
"cd "
+
location
+
" && "
+
cmd
);
}
/**
* @author Ickes
* 远程执行shll脚本或者命令
* @param cmd
* 即将执行的命令
* @return
* 命令执行成功后返回的结果值,如果命令执行失败,返回空字符串,不是null
* @since V0.1
*/
public
String
executeSuccess
(
String
cmd
){
String
result
=
""
;
try
{
if
(
login
()){
Session
session
=
conn
.
openSession
();
//打开一个会话
session
.
execCommand
(
cmd
);
//执行命令
result
=
processStdout
(
session
.
getStdout
(),
DEFAULT_CHART
);
session
.
close
();
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
conn
.
close
();
}
return
result
;
}
/**
* 解析脚本执行返回的结果集
* @author Ickes
* @param in 输入流对象
* @param charset 编码
* @since V0.1
* @return
* 以纯文本的格式返回
*/
private
String
processStdout
(
InputStream
in
,
String
charset
){
InputStream
stdout
=
new
StreamGobbler
(
in
);
StringBuffer
buffer
=
new
StringBuffer
();;
try
{
BufferedReader
br
=
new
BufferedReader
(
new
InputStreamReader
(
stdout
,
charset
));
String
line
=
null
;
while
((
line
=
br
.
readLine
())
!=
null
){
buffer
.
append
(
line
+
"\n"
);
}
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
buffer
.
toString
();
}
public
static
void
main
(
String
[]
args
)
{
//RemoteExecuteCommand remoteExecuteCommand = new RemoteExecuteCommand("106.2.3.134","root","91isoft_xunda");
String
branch
=
"master"
;
String
localUrl
=
"/working/dockervolume/chedir/project/p_201809004"
;
/*String branchs = remoteExecuteCommand.execute(GitCommands.GIT_BRANCH,localUrl);
String[] branchArr = branchs.split("\n");
for(String item:branchArr){
if(item.startsWith("*")){
System.out.println(item+" "+branch);
System.out.println(item.replace("* ",""));
System.out.println(item.replace("* ","").equals(branch));
if(!item.replace("* ","").equals(branch)){
break;
}
return;
}
}
System.out.println("aaaa");*/
//remoteExecuteCommand.execute(GitCommands.getGitCheckoutCommand(branch),localUrl);
}
}
src/main/resources/application-dev.yml
View file @
1bbd11fa
...
@@ -153,3 +153,8 @@ global:
...
@@ -153,3 +153,8 @@ global:
html_simple
:
'
1001'
html_simple
:
'
1001'
html_project
:
'
1002'
html_project
:
'
1002'
serverLxc
:
ip
:
127.0.0.1
username
:
root
password
:
123456
src/main/resources/application-prod.yml
View file @
1bbd11fa
...
@@ -150,4 +150,7 @@ global:
...
@@ -150,4 +150,7 @@ global:
html_simple
:
'
1001'
html_simple
:
'
1001'
html_project
:
'
1002'
html_project
:
'
1002'
serverLxc
:
ip
:
127.0.0.1
username
:
root
password
:
123456
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