jenkins配置&插件&发版了解

jenkins配置&插件&发版了解

jenkins

https://mirrors.jenkins.io/war-stable/2.222.1/ 包下载地址

jenkins镜像源修改

sed -i 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g'  default.json
sed -i 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g'  default.json

http://mirror.xmission.com/jenkins/plugins/

java

https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html java下载

tar xf jdk-8u144-linux-x64.tar.gz
mv jdk-8u144-linux-x64 /usr/local/jdk
vim ~/.bashrc
export JAVA_HOME=/usr/local/jdk     #建议使用自带的java,不然会出现版本兼容各种问题
export PATH=${JAVA_HOME}/bin:$PATH

启动jenkins

nohup java -Dhudson.model.DownloadService.noSignatureChecke=true \
-DJENKINS_HOME=/app/jenkins -jar /app/jenkins/jenkins.war &

maven

https://maven.apache.org/download.cgi

https://dlcdn.apache.org/maven/maven-3/3.9.0/binaries/apache-maven-3.9.0-bin.tar.gz

[root@vm ~]# tar zxf apache-maven-3.9.0-bin.tar.gz -C /usr/local/
[root@vm ~]# vim /etc/profile
...
export MAVEN_HOME=/usr/local/apache-maven-3.6.0
export PATH=$PATH:$MAVEN_HOME/bin
[root@vm ~]# source /etc/profile
[root@vm ~]# mvn -v
Apache Maven 3.9.0 

系统设置->全局工具配置->Maven->Maven 安装在这里插入图片描述

创建一条pipeline任务

node {
    stage ("build"){
        mavenHome = tool 'maven'        #这里名字一定要与全局工具配置里的名字一致才能调用
        sh "${mavenHome}/bin/mvn -v"
    }
}
mvn clean install -DskipTests
mvn clean package 

ant

https://archive.apache.org/dist/ant/binaries/apache-ant-1.10.10-bin.tar.gz

[root@vm ~]# tar zxf apache-ant-1.10.10-bin.tar.gz -C /usr/local/
[root@vm ~]# vim /etc/profile
...
export ANT_HOME=/usr/local/apache-ant-1.10.10
export PATH=$PATH:$MAVEN_HOME/bin:$ANT_HOME/bin
source /etc/profile
[root@vm ~]# source /etc/profile
node {
stage ("build"){
    antHome = tool 'ANT'
    sh "${antHome}/bin/ant -version"
}
}

gradle

https://downloads.gradle-dn.com/distributions/gradle-7.0-bin.zip

[root@vm ~]# unzip gradle-7.0-bin.zip  -d /usr/local/
[root@vm ~]# vim /etc/profile
...
export GRADLE_HOME=/usr/local/gradle-7.0
export PATH=$PATH:$GRADLE_HOME/bin
source /etc/profile
[root@vm ~]# source /etc/profile
node {
stage ("gradlebuild"){
    gradleHome = tool 'GRADLE'
    sh "${gradleHome}/bin/gradle -v"
}
}

Gradle常用命令

gradlew -v 版本号,首次运行,没有gradle的要下载的哦。
gradlew clean 删除HelloWord/app目录下的build文件夹
gradlew build 检查依赖并编译打包
gradlew assembleDebug 编译并打Debug包
gradlew assembleRelease 编译并打Release的包
gradlew installRelease Release模式打包并安装
gradlew uninstallRelease 卸载Release模式包

node

https://nodejs.org/download/release/v14.10.1/node-v14.10.1-linux-x64.tar.xz

[root@vm ~]# tar xf node-v14.10.1-linux-x64.tar.xz -C /usr/local/
[root@vm ~]# vim /etc/profile
...
export NODE_HOME=node-v14.10.1-linux-x64
export PATH=$PATH:$NODE_HOME/bin
[root@vm ~]# source /etc/profile
node {
stage ("npmbuild"){
    sh """
       export npmHome=/usr/local/node-v14.10.1-linux-x64
       export PATH=\$PATH:\$npmHome/bin
       npm -v
       """
}    
}	

插件了解

Jenkins自带推荐插件:Git,Folders,BuildTimeout,Credentials Binding,Timestamper,Workspace Cleanup,Ant,Gradle,Pipeline,GitHub Branch Source等等

Git parameter git参数插件

Role-Based Strategy 角色管理

Generic Webhook Trigger 触发构建

gitlab plugin 触发构建

ssh Publisher 上传执行shell

saltstack plugin 批量自动化发布

log-parser-plugin 增加过滤条件显示日志

生成Jenkinfile方法(项目->Pipeline Syntax->片段生成器)选择salt: Send a message to Salt API补充信息

rancher插件 更新镜像

Nexus Artifact Uploader上传制品

Maven Artifact ChoiceListProvider (Nexus) 选择构建包

在这里插入图片描述

jenkins发版

前端打包

yarn install  && npm run build:uat  
#方法一
rsync -az --delete  dist/  /app/nginx/static/test/

#方法二
cp -rf dist/*   test/ && zip -r static.zip test/*
unzip -od /app/nginx/static static.zip

方法三
zip -r $BUILD_TAG.zip dist/*
mv *.zip /app/
ansible -i /root/ansible/hostip proxy -m copy -a \
'src=/app/$BUILD_TAG-admin.zip dest=/usr/share/nginx/html/'
ansible -i /root/ansible/hostip proxy -m shell -a \
'unzip -o /usr/share/nginx/html/$BUILD_TAG-admin.zip -d /usr/share/nginx/html/"

后端打包

mvn -T 8 clean install -Dmaven.test.skip=true
mvn clean package -s ./settings.xml -Dmaven.test.skip=true
打镜像
FROM openjdk:17.0.2
ADD ./api-0.0.1-SNAPSHOT.jar /app.jar
ENV JAVA_OPTS "-Xms3072m -Xmx3072m -XX:NewRatio=3 -XX:SurvivorRatio=4 -XX:HeapDumpPath=/logs/dump/front/document_service.dump"
ENTRYPOINT exec java $JAVA_OPTS -jar /app.jar


tag=`date -d today +"%Y%m%d%H%M"
docker build -t kw.com:80/app/admin:$tag .
docker push kw.com:80/app/admin:$tag
docker rmi kw.com:80/app/admin:$tag
#打通k8s
export KUBECONFIG=$HOME/.kube/config:$HOME/kube/config_perf
kubectl config use-context dev
kubectl set image deployment/admin  container-1=kw.com:80/app/admin:$tag
jar包运行
tag=`date -d today +"%Y%m%d%H%M"
mv ./target/admin.jar /app/admin-$tag.jar
ansible dev -m copy -a "src=/app/admin-$tag.jar dest=/app/dev/"
ansible dev -m shell -a "sed -i 's/admin-[0-9]*.jar/admin-$tag.jar/g' \
/etc/supervisor/conf.d/admin.conf"
ansible dev -m shell -a "supervisorctl update && supervisorctl restart admin"
ansible dev -m shell -a "bash /etc/supervisor/conf.bak/rm.sh"
rm /app/admin-$tag.jar

supervisor服务

cat admin.conf
[program:admin]
command=bash -c "/usr/bin/java -jar -Dhwenvironment=uat /app/dev/admin-282204291446.jar"
redirect stderr= true
autorestart=true
startretries=999
stopwaitsecs=300
stdout_logfile=//app/dev/log/admin-stdout-supervisor.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=20

jar包清理脚本

cat rm.sh
for i in  cheat common home admin
do
num=`ls /app/dev/.jar|grep $i |wc -l`
jar=`ls -lrt /app/dev/*.jar |grep $i|awk '{print $NF}' |head -1`
if [ $num -gt 5 ]
	then
	rm -f $jar & echo "delete $jar"
fi
done

猜你喜欢

转载自blog.csdn.net/weixin_60092693/article/details/129774442