Instalación (entorno ubuntu)
instalar el entorno java
sudo apt-get install openjdk-8-jdk
instalar jenkins
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
Comandos comunes de Jenkins
Ver el estado de Jenkins:sudo service jenkins status
Iniciar Jenkins:sudo service jenkins start
Detener a Jenkins:sudo service jenkins stop
Reinicie Jenkins:sudo service jenkins restart
Configurar Jenkins
1. Abra ip: 8080 para iniciar la configuración.La contraseña de administrador se puede obtener de las siguientes maneras:cat /var/lib/jenkins/secrets/initialAdminPassword
2. Instale el complemento como se sugiere
Crear un proyecto (ejemplo)
1. Completa la información básica
2. Configuración parametrizada para implementación y reversión
3. Código fuente (obtenido de github)
4. Cree el activador. Después de que github recibe el evento push, notifica a jenkins a través del webhook (el webhook debe configurarse en github) para activar la compilación.
Configuración en github:
5. Guión de compilación
Implementar o revertir según las opciones
case $Status in
Deploy)
echo "Status:$Status"
path="${WORKSPACE}/bak/${BUILD_NUMBER}" #创建每次要备份的目录
if [ -d $path ];
then
echo "The files is already exists "
else
mkdir -p $path
fi
pwd
if [ -f "xxx.tar.gz" ];then
rm xxx.tar.gz
fi
tar -zcvf xxx.tar.gz ./*
cp -f xxx.tar.gz $path #将打包好的文件备份到相应目录,覆盖已存在的目标
echo "Completing!"
;;
Rollback)
echo "Status:$Status"
echo "Version:$Version"
cd ${WORKSPACE}/bak/$Version #进入备份目录
pwd
cp -f xxx.tar.gz ${WORKSPACE}/ #将备份拷贝到程序打包目录中,并覆盖之前的文件
;;
*)
exit
;;
esac
Copie el código en el directorio del proyecto y descomprímalo (el pequeño jenkins de prueba y el entorno oficial están en el mismo servidor)
cp /var/lib/jenkins/workspace/xxx/xxx.tar.gz /var/www/html/test
cd /var/www/html/test
tar -zxvf xxx.tar.gz
rm xxx.tar.gz
Eliminar archivos de copia de seguridad redundantes
ReservedNum=5 #保留文件数
FileDir=${WORKSPACE}/bak/
date=$(date "+%Y%m%d-%H%M%S")
cd $FileDir #进入备份目录
FileNum=$(ls -l | grep '^d' | wc -l) #当前有几个文件夹,即几个备份
while(( $FileNum > $ReservedNum))
do
OldFile=$(ls -rt | head -1) #获取最旧的那个备份文件夹
echo $date "Delete File:"$OldFile
rm -rf $FileDir/$OldFile
let "FileNum--"
done