I was working on an overseas application whose build server was originally located in Shanghai. Due to special circumstances, it needed to be migrated abroad. This post documents the Jenkins migration and configuration process.

Prerequisite: Install JDK 11

Using jenv for multi-version Java management:

1
2
3
4
5
6
7
8
9
# Install jenv
git clone https://github.com/jenv/jenv.git ~/.jenv
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(jenv init -)"' >> ~/.bashrc
source ~/.bashrc

# Enable the export plugin and restart the session
jenv enable-plugin export
exec $SHELL -l

Installing Jenkins on CentOS

1
2
3
4
5
6
# Add Jenkins repository and GPG key
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

# Install
yum install jenkins

Configuring systemd Service

1
2
3
4
sudo vi /etc/systemd/system/jenkins.service
sudo systemctl enable /etc/systemd/system/jenkins.service
sudo systemctl start jenkins
systemctl status jenkins
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[Unit]
Description=jenkins service
After=network.target

[Service]
Type=simple
LimitNOFILE=65536
ExecStart=/usr/bin/jenkins
User=work
Environment="JENKINS_PORT=8082"

[Install]
WantedBy=multi-user.target

Configuring Android SDK

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
wget https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip
unzip commandlinetools-linux-8512546_latest.zip
chmod a+x cmdline-tools/

cd cmdline-tools/bin
# Install required components via sdkmanager
./sdkmanager --sdk_root=/home/work/workspace/android_sdk --list
./sdkmanager --install 'platforms;android-33' --sdk_root=/home/work/workspace/android_sdk
./sdkmanager --install 'build-tools;33.0.0' --sdk_root=/home/work/workspace/android_sdk
./sdkmanager --install 'cmdline-tools;7.0' --sdk_root=/home/work/workspace/android_sdk
./sdkmanager --install 'build-tools;32.0.0' --sdk_root=/home/work/workspace/android_sdk
./sdkmanager --install 'build-tools;31.0.0' --sdk_root=/home/work/workspace/android_sdk
./sdkmanager --install 'ndk;25.1.8937393' --sdk_root=/home/work/workspace/android_sdk
./sdkmanager --install 'platforms;android-28' --sdk_root=/home/work/workspace/android_sdk
./sdkmanager --install 'platforms;android-29' --sdk_root=/home/work/workspace/android_sdk
./sdkmanager --install 'platforms;android-30' --sdk_root=/home/work/workspace/android_sdk
./sdkmanager --install 'platforms;android-31' --sdk_root=/home/work/workspace/android_sdk
./sdkmanager --install 'cmake;3.22.1' --sdk_root=/home/work/workspace/android_sdk
./sdkmanager --install 'cmake;3.10.2.4988404' --sdk_root=/home/work/workspace/android_sdk

Fixing SSH Key Permission Issues

If you encounter Permissions 0664 for '/home/work/.ssh/jenkins_id_rsa' are too open:

1
chmod 600 ~/.ssh

Upgrading Jenkins

Always refer to the Jenkins Upgrade Guide for version-specific instructions.

Example for Debian/Ubuntu (on CentOS, use yum update jenkins instead):

1
2
3
4
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

References