jenkins应用2-freestyle-job

作者 : admin 本文共4766个字,预计阅读时间需要12分钟 发布时间: 2024-06-9 共3人阅读

1.jenkins应用

1.jenkins构建的流程

jenkins应用2-freestyle-job插图

1.使用git参数化构建,用标签区分版本

2.git 拉取gitlab远程仓库代码

3.maven打包项目

4.sonarqube经行代码质量检测

5.自定义制作镜像发送到远程仓库harbor

6.在远程服务器上拉取代码启动容器

这个是构建的整个过程和步骤,需要安装好gitlab,jenkins 、harbor、sonarqube

2jenkins用到的软件及环境配置

上一章讲述了gitlab 和jenkins的容器化搭建,接着将Jenkins容器使用docker

 docker 的进程/run/docker.sock 共享给jenkins使用,默认docker.sock 的属主是root,属组是docker,

#1修改docker权限
chown root:root /run/docker.sock   #修改属主和属组
chmod o+rwx /run/docker.sock       #增加权限

#2添加harbor仓库
cat >/etc/docker/daemon.json</usr/local/docker/jenkins_docker/docker-compose.yaml<<EOF
version: '3.1'
services:
  jenkins:
    image: "jenkins/jenkins:2.387.3-lts"
    container_name: jenkins
    restart: always
    ports:
      - '8080:8080'
      - '50000:50000'
    volumes:
      - './data:/var/jenkins_home/'
      - '/var/run/docker.sock:/var/run/docker.sock'        #共享docker
      - '/usr/bin/docker:/usr/bin/docker'                  #添加docker到bin直接使用命令
      - '/etc/docker/daemon.json:/etc/docker/daemon.json'  #共享远程仓库
EOF
cd  /usr/local/docker/jenkins_docker/
docker compose -f  /usr/local/docker/jenkins_docker/docker-compose.yaml up -d  #重新创建jenkins

3.harbor仓库搭建

1.harbor软件下载与配置

wget -t 0 -c  http://github.com/goharbor/harbor/releases/download/v2.0.5/harbor-offline-installer-v2.0.5.tgz

#harbor的配置,默认用户名admin,密码Harbor12345
#配置完harbor后,登录到harbor,创建目录repo
#!/bin/bash
tar -xf harbor-offline-installer-v2.0.5.tgz 
cd harbor/
cp harbor.yml.tmpl harbor.yml
sed -i  '/^hostname/s,reg.mydomain.com,192.168.88.121,'  harbor.yml #指定harbor的IP地址
sed -i  '/^http:/s,^,#,'  harbor.yml
sed -i  '/port: 443/s,^,#,'  harbor.yml
sed -i  '/ certificate/s,^,#,'  harbor.yml
sed -i  '/private_key/s,^,#,'  harbor.yml
sudo curl -L "http://github.com/docker/compose/releases/download/1.18.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
./install.sh                #安装harbor
cd ../

http://192.168.88.121:80

harbor的配置,默认用户名admin,密码Harbor12345
配置完harbor后,登录到harbor,创建目录repo,公开

jenkins应用2-freestyle-job插图(1)

4.sonarqube下载原装

1.sonarqube采用容器部署

mkdir  /usr/local/docker/sonarqube_docker
cd  /usr/local/docker/sonarqube_docker
cat >docker-compose.yaml<<EOF
version: '3.1'
services:
  db:
    image: postgres
    container_name: db
    ports:
      - 5432:5432
    networks:
      - sonarnet
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
  sonarqube:
    image: sonarqube:8.9.6-community
    container_name: sonarqube
    depends_on:
      - db
    ports:
      - 9000:9000
    networks:
      - sonarnet
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
networks:
  sonarnet:
    driver: bridge
EOF
grep -i 'vm.max_map_count'   /etc/sysctl.conf
[ $? -eq 0 ] || sed -i  '$a vm.max_map_count=262144 '  /etc/sysctl.conf #不配置会报错
sysctl -p
docker compose -f docker-compose.yaml  up -d
#localhost:9000
#sonarqube默认用户名和密码都是admin 

http://localhost:9000
2.sonarqube默认用户名和密码都是admin ,进去后会提示修改密码

jenkins应用2-freestyle-job插图(2)

3.保存好tocker,jenkins验证用到

jenkins应用2-freestyle-job插图(3)

5.sonar-sconner下载配置到jenkins

SonarScanner CLI (sonarsource.com)

1下载sonar-scanner-cli-4.6.0.2311-linux.zip

jenkins应用2-freestyle-job插图(4)

2.conf/sonar-scanner.properties配置

#!/bin/bash
unzip ~/sonar-scanner-cli-4.6.0.2311-linux.zip
mv sonar-scanner-4.6.0.2311-linux/ sonar-scanner

cat >sonar-scanner/conf/sonar-scanner.properties <<EOF
#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here

#----- Default SonarQube server
sonar.host.url=http://192.168.88.121:9000  #指定IP及单口

#----- Default source code encoding
sonar.sourceEncoding=UTF-8
EOF

mv sonar-scanne   /usr/local/docker/jenkins_docker/data/  #放入到jenins目录下,和JDK、maven一样

6jenkins登录进去

1、插件安装sonar

jenkins应用2-freestyle-job插图(5)

2.sonar-scanner全局变量配置

jenkins应用2-freestyle-job插图(6)

3.sonar-scanner系统配置

jenkins应用2-freestyle-job插图(7)

jenkins应用2-freestyle-job插图(8)

7项目构建

1新建项目test

jenkins应用2-freestyle-job插图(9)

2.git参数化构建

jenkins应用2-freestyle-job插图(10)

3.2个文本参数构建

jenkins应用2-freestyle-job插图(11)

jenkins应用2-freestyle-job插图(12)

4.git拉取代码

jenkins应用2-freestyle-job插图(13)

5.清空之前的workspace及切换标签版本

jenkins应用2-freestyle-job插图(14)

6.maven打包

jenkins应用2-freestyle-job插图(15)

7sonar代码质量检测

sonar.projectname=${JOB_NAME} #指定项目名
sonar.projectKey=${JOB_NAME}    #指定Key
sonar.source=./                                #在当前目录对代码检测
sonar.java.binaries=target/              #jar包

jenkins应用2-freestyle-job插图(16)

7.制作镜像并上传到远程仓库harbor

mv target/*.jar  docker/
cd docker/
docker build -t ${JOB_NAME}:$tag ./
docker login -u admin -p Harbor12345 192.168.88.121:80
docker tag ${JOB_NAME}:$tag 192.168.88.121:80/repo/${JOB_NAME}:$tag
docker push 192.168.88.121:80/repo/${JOB_NAME}:$tag

jenkins应用2-freestyle-job插图(17)

8.构建后在远程服务器下载镜像启动容器进行测试

#1.在远程服务器执行的shell命令
docker.sh 192.168.88.121:80 repo ${JOB_NAME}  $tag  $container_port  $host_port

#2.脚本docke.sh 在远程服务器/usr/local/bin/docker.sh
cat >/usr/local/bin/docker.sh<<EOF
#!/bin/bash
horbar_addr=$1     #harbor镜像地址及端口
horbar_repo=$2     #镜像所在的目录为repo
project=$3         #项目名称所谓镜像名
version=$4         #项目版本所闻镜像版本
container_port=$5  #容器内使用的端口
host_port=$6       #宿主机使用的端口
imageName=$horbar_addr/$horbar_repo/$project:$version   #镜像的地址及镜像名和版本
echo $imageName
containerId=`docker ps -a  | awk '{print $1, $NF}'  | grep $project | awk '{print $1}'` #删除当前正在运行的容器
echo $containerId
if [ "$containerId" != "" ] ; then
        echo  "正在删除${project}容器"
        #docker stop $containerId
        docker rm -f $containerId
fi
tag=`docker images | grep ${project} | awk '{print $2}'`
echo $tag
if [[ "$tag" =~ "$version" ]] ; then
        docker rmi -f $imageName
fi
docker login -u admin -p Harbor12345 $horbar_addr
docker pull $imageName  #下载镜像
docker run -d -p $host_port:$container_port --name $project $imageName  #启动测试容器
echo "${project}容器创建成功" 
echo "SUCCESS"

EOF

jenkins应用2-freestyle-job插图(18)

9.开始构建

jenkins应用2-freestyle-job插图(19)

8构建结果验证

1.代码质量检测

jenkins应用2-freestyle-job插图(20)

2.查看容器是否正常运行

jenkins应用2-freestyle-job插图(21)

本站无任何商业行为
个人在线分享 » jenkins应用2-freestyle-job
E-->