|
|
|
@ -45,6 +45,7 @@ SUDO_PASSWORD="" |
|
|
|
#--- 指令 |
|
|
|
INIT_TAG="0" |
|
|
|
#--- 指令参数 |
|
|
|
JENKINS_AGENT="" |
|
|
|
GIT_TAG="1" |
|
|
|
JAVA_TAG="1" |
|
|
|
GRADLE_VERSION="6.8.3" |
|
|
|
@ -218,6 +219,57 @@ function init:mkdir() { |
|
|
|
log::info "[mkdir]" "创建目录成功!" |
|
|
|
} |
|
|
|
|
|
|
|
# 下载 |
|
|
|
function init:jenkins_agent() { |
|
|
|
log::info "[jenkins-agent]" "下载jenkins-agent..." |
|
|
|
local host="127.0.0.1" |
|
|
|
local agent_file="${BASE_DIR}/../agent.jar" |
|
|
|
local java_mem_opts=" -DappName=jenkins -server -Xmx1g" |
|
|
|
local database_opts=" -Ddatabase.codeset=ISO-8859-1 -Ddatabase.logging=false" |
|
|
|
local java_opts_ext=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dapplication.codeset=UTF-8 -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai" |
|
|
|
command::exec "${host}" " |
|
|
|
if [ ! -f "$agent_file" ]; then |
|
|
|
mkdir -p ${BASE_DIR}/workspace |
|
|
|
wget --timeout=10 --no-check-certificate ${JENKINS_AGENT} -O $agent_file |
|
|
|
cd ${BASE_DIR} |
|
|
|
# 写文件start.sh文件 |
|
|
|
cat << EOF > ${BASE_DIR}/start.sh |
|
|
|
#!/bin/bash |
|
|
|
|
|
|
|
java='${BASE_DIR}/env/java/${JDK11_DIR_NAME}/bin/java' |
|
|
|
jnlpUrl='' |
|
|
|
secret='' |
|
|
|
workDir='${BASE_DIR}/workspace' |
|
|
|
pid=\\\`ps -ef | grep 'DappName=jenkins-agent' | grep -v 'grep' | awk '{print \\\$2}'\\\` |
|
|
|
if [ -z \\\$pid ];then |
|
|
|
nohup \$java $java_mem_opts $database_opts $java_opts_ext -jar $agent_file -jnlpUrl '\$jnlpUrl' -secret '\$secret' -workDir '\$workDir' >${BASE_DIR}/agent-logs.log 2>&1 & |
|
|
|
echo 'jenkins-agent启动成功!' |
|
|
|
else |
|
|
|
echo 'jenkins-agent正在运行...' |
|
|
|
fi |
|
|
|
echo '查看日志: tail -F ${BASE_DIR}/agent-logs.log -n 100' |
|
|
|
EOF |
|
|
|
# 写文件kill.sh文件 |
|
|
|
cat << EOF > ${BASE_DIR}/kill.sh |
|
|
|
#!/bin/bash |
|
|
|
|
|
|
|
pid=\\\`ps -ef | grep 'DappName=jenkins-agent' | grep -v 'grep' | awk '{print \\\$2}'\\\` |
|
|
|
if [ -z \\\$pid ];then |
|
|
|
echo 'jenkins-agent未运行' |
|
|
|
else |
|
|
|
ps -ef | grep 'DappName=jenkins-agent' | grep -v 'grep' | awk '{print \\\$2}' | xargs kill |
|
|
|
echo 'jenkins-agent已停止!' |
|
|
|
fi |
|
|
|
EOF |
|
|
|
chmod +x ${BASE_DIR}/start.sh |
|
|
|
chmod +x ${BASE_DIR}/kill.sh |
|
|
|
sudo chown -R \$(id -u):\$(id -g) ${BASE_DIR} |
|
|
|
fi |
|
|
|
" |
|
|
|
check::exit_code "$?" "jenkins-agent" "$host 下载jenkins-agent" "exit" |
|
|
|
log::info "[jenkins-agent]" "jenkins-agent下载成功!" |
|
|
|
} |
|
|
|
|
|
|
|
# 安装git |
|
|
|
function init:git() { |
|
|
|
log::info "[git]" "安装git..." |
|
|
|
@ -353,6 +405,7 @@ Available Commands: |
|
|
|
init 初始化系统 |
|
|
|
Flag: |
|
|
|
-base-dir 新增用户名, 默认: '/data/jenkins-agent/env' |
|
|
|
-agent jenkins-agent下载地址(${JENKINS_URL}/jnlpJars/agent.jar), 默认: '' |
|
|
|
-git 是否安装git, 默认: '1' |
|
|
|
-java 是否安装java(8, 11, 17), 默认: '1' |
|
|
|
-gradle 安装gradle版本(6.8.3 | 6.9.3 | 7.4.2 | 7.5.1), 默认: '6.8.3' |
|
|
|
@ -362,6 +415,7 @@ Flag: |
|
|
|
Example: |
|
|
|
jenkins-agent-install-centos.sh init \\ |
|
|
|
-base-dir '/data/jenkins-agent/env' \\ |
|
|
|
-agent '' \\ |
|
|
|
-git 0 \\ |
|
|
|
-java 0 \\ |
|
|
|
-gradle '6.8.3' \\ |
|
|
|
@ -383,6 +437,10 @@ while [ "${1:-}" != "" ]; do |
|
|
|
-base-dir ) shift |
|
|
|
BASE_DIR=${1:-BASE_DIR} |
|
|
|
;; |
|
|
|
-agent ) shift |
|
|
|
JENKINS_AGENT=${1:-JENKINS_AGENT} |
|
|
|
;; |
|
|
|
;; |
|
|
|
-git ) shift |
|
|
|
GIT_TAG=${1:-GIT_TAG} |
|
|
|
;; |
|
|
|
@ -410,6 +468,7 @@ log::info "[start]" "bash $0 ${SCRIPT_PARAMETER}" |
|
|
|
if [[ "${INIT_TAG:-}" == "1" ]]; then |
|
|
|
check::command |
|
|
|
init:mkdir |
|
|
|
[[ -n "${JENKINS_AGENT:-}" ]] && { init:jenkins_agent; } |
|
|
|
[[ "${GIT_TAG:-}" == "1" ]] && { init:git; } |
|
|
|
[[ "${JAVA_TAG:-}" == "1" ]] && { init:java; } |
|
|
|
[[ -n "${GRADLE_VERSION:-}" ]] && { init:gradle; } |
|
|
|
|