|
@@ -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; }
|