From 72a9eb76d3b86eba766157355fc6dabfb946d582 Mon Sep 17 00:00:00 2001 From: Caila Finn <47181718+cailafinn@users.noreply.github.com> Date: Fri, 24 Jan 2025 12:10:47 +0000 Subject: [PATCH 1/2] Update jenkins-agent.sh to work on ARM Macs. The new arm macs don't work with the legacy versions of the jenkins agent jar file that the old x86 macs rely upon. Modify the script to take this into account. --- buildconfig/Jenkins/jenkins-agent.sh | 34 +++++++++++++++++++++------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/buildconfig/Jenkins/jenkins-agent.sh b/buildconfig/Jenkins/jenkins-agent.sh index 870e30e07af2..4688395c5c3e 100644 --- a/buildconfig/Jenkins/jenkins-agent.sh +++ b/buildconfig/Jenkins/jenkins-agent.sh @@ -46,12 +46,16 @@ SECRET=${2} ##################################################################### # URL of jnlp file for agent AGENT_URL="${JENKINS_URL}/computer/${NODE_NAME}/jenkins-agent.jnlp" + # version number of the agent jar -JAR_VERSION=4.13 -# name of the agent jar - full path is determined later -JAR_FILE=remoting-${JAR_VERSION}.jar +LEGACY_JAR_VERSION=4.13 +# name of the legacy agent jar - full path is determined later +LEGACY_JAR_FILE=remoting-${LEGACY_JAR_VERSION}.jar # URL to jenkins rpeo -JENKINS_REPO_URL=https://repo.jenkins-ci.org/artifactory/releases/org/jenkins-ci/main/remoting +LEGACY_JENKINS_REPO_URL=https://repo.jenkins-ci.org/artifactory/releases/org/jenkins-ci/main/remoting + +# Name of the agent jar - full path determined later +MAIN_JAR_FILE=agent.jar # Some versions of cron don't set the USER environment variable # required by vnc @@ -88,6 +92,14 @@ if [ ! -z "${PROXY_HOST}" ]; then export https_proxy=https://$PROXY_HOST:$PROXY_PORT fi +if [[ "$OSTYPE" == "darwin"* ]] && [[ $(uname -m) == 'arm64' ]]; then + JAR_FILE=$MAIN_JAR_FILE + JAR_LOCATION="${JENKINS_URL}/jnlpJars" +else + JAR_FILE=$LEGACY_JAR_FILE + JAR_LOCATION="${LEGACY_JENKINS_REPO_URL}/${LEGACY_JAR_VERSION}" +fi + # find the jar file if it exists if [ -f ${HOME}/jenkins-linode/${JAR_FILE} ]; then JAR_FILE=${HOME}/jenkins-linode/${JAR_FILE} @@ -98,10 +110,10 @@ else if [ ! -f ${JAR_FILE_TMP} ]; then echo "Downloading agent jar file to ${JAR_FILE_TMP}" if [ $(command -v curl) ]; then - echo "curl --location -o ${JAR_FILE_TMP} ${JENKINS_REPO_URL}/${JAR_VERSION}/${JAR_FILE}" - curl --location -o ${JAR_FILE_TMP} ${JENKINS_REPO_URL}/${JAR_VERSION}/${JAR_FILE} + echo "curl --location -o ${JAR_FILE_TMP} ${JAR_LOCATION}/${JAR_FILE}" + curl --location -o ${JAR_FILE_TMP} ${JAR_LOCATION}/${JAR_FILE} else - echo "Need curl to download ${JENKINS_REPO_URL}/${JAR_VERSION}/${JAR_FILE}" + echo "Need curl to download ${JAR_LOCATION}/${JAR_FILE}" exit -1 fi fi @@ -112,6 +124,12 @@ echo "starting ..." if [ -z "${JAVA}" ]; then JAVA=`which java` fi -JAVA_ARGS="${PROXY_ARGS} -jar ${JAR_FILE} -jnlpUrl ${AGENT_URL} -secret ${SECRET}" + +if [[ "$OSTYPE" == "darwin"* ]] && [[ $(uname -m) == 'arm64' ]]; then + JAVA_ARGS="${PROXY_ARGS} -jar ${JAR_FILE} -url ${JENKINS_URL} -secret ${SECRET} -name ${NODE_NAME}" +else + JAVA_ARGS="${PROXY_ARGS} -jar ${JAR_FILE} -jnlpUrl ${AGENT_URL} -secret ${SECRET}" +fi + echo "${JAVA} ${JAVA_ARGS}" ${JAVA} ${JAVA_ARGS} From 72540efbe9e6b52bbf243507cfc1fd460b15e710 Mon Sep 17 00:00:00 2001 From: Caila Finn Date: Mon, 27 Jan 2025 11:04:56 +0000 Subject: [PATCH 2/2] Use a single if check for all mac ARM vars --- buildconfig/Jenkins/jenkins-agent.sh | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/buildconfig/Jenkins/jenkins-agent.sh b/buildconfig/Jenkins/jenkins-agent.sh index 4688395c5c3e..cc2a730397a2 100644 --- a/buildconfig/Jenkins/jenkins-agent.sh +++ b/buildconfig/Jenkins/jenkins-agent.sh @@ -55,7 +55,7 @@ LEGACY_JAR_FILE=remoting-${LEGACY_JAR_VERSION}.jar LEGACY_JENKINS_REPO_URL=https://repo.jenkins-ci.org/artifactory/releases/org/jenkins-ci/main/remoting # Name of the agent jar - full path determined later -MAIN_JAR_FILE=agent.jar +ARM_JAR_FILE=agent.jar # Some versions of cron don't set the USER environment variable # required by vnc @@ -92,12 +92,15 @@ if [ ! -z "${PROXY_HOST}" ]; then export https_proxy=https://$PROXY_HOST:$PROXY_PORT fi +# macOS agents with ARM architecture need to run the newer agent.jar file. if [[ "$OSTYPE" == "darwin"* ]] && [[ $(uname -m) == 'arm64' ]]; then - JAR_FILE=$MAIN_JAR_FILE + JAR_FILE=$ARM_JAR_FILE JAR_LOCATION="${JENKINS_URL}/jnlpJars" + JAVA_ARGS="${PROXY_ARGS} -jar ${JAR_FILE} -url ${JENKINS_URL} -secret ${SECRET} -name ${NODE_NAME}" else JAR_FILE=$LEGACY_JAR_FILE JAR_LOCATION="${LEGACY_JENKINS_REPO_URL}/${LEGACY_JAR_VERSION}" + JAVA_ARGS="${PROXY_ARGS} -jar ${JAR_FILE} -jnlpUrl ${AGENT_URL} -secret ${SECRET}" fi # find the jar file if it exists @@ -125,11 +128,5 @@ if [ -z "${JAVA}" ]; then JAVA=`which java` fi -if [[ "$OSTYPE" == "darwin"* ]] && [[ $(uname -m) == 'arm64' ]]; then - JAVA_ARGS="${PROXY_ARGS} -jar ${JAR_FILE} -url ${JENKINS_URL} -secret ${SECRET} -name ${NODE_NAME}" -else - JAVA_ARGS="${PROXY_ARGS} -jar ${JAR_FILE} -jnlpUrl ${AGENT_URL} -secret ${SECRET}" -fi - echo "${JAVA} ${JAVA_ARGS}" ${JAVA} ${JAVA_ARGS}