浏览代码

08jenkins-agent-install-centos.sh

lizw 2 年之前
父节点
当前提交
1b03f5c3a2
共有 2 个文件被更改,包括 60 次插入1 次删除
  1. 1 1
      00base/07env-install-centos.sh
  2. 59 0
      00base/08jenkins-agent-install-centos.sh

+ 1 - 1
00base/07env-install-centos.sh

@@ -485,7 +485,7 @@ function init:jenkins() {
   local host="127.0.0.1"
   local java_path="${BASE_DIR}/jenkins/${JENKINS_JAVA_DIR_NAME}"
   local jenkins_file="${BASE_DIR}/jenkins/${JENKINS_FILE_NAME}"
-  local java_mem_opts=" -DappName=jenkins -server -Xmx1g -Xms1g"
+  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}" "

+ 59 - 0
00base/08jenkins-agent-install-centos.sh

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