关于devops:Docker安装jenkins

Docker装置jenkins

一、环境筹备

1. 宿主机筹备
   宿主机装置JDK\MAVEN\GIT\DOCKER\NPM
2. 镜像筹备
   jenkins/jenkins:latest-jdk8

二、jenkins部署

1.镜像下载

docker pull jenkins/jenkins:latest-jdk8
docker images | grep jenkins

2.查看镜像版本

docker inspect 44f8e2d8566c

3.启动脚本

restart.sh

  • 挂载docker目录,容器里能够执行docker命令
  • 改用jenkins/jenkins:latest-jdk8版本镜像,能够装置gitlab hook
  • 挂载maven|npm等目录 ,jdk默认是:jdk8。否则容器内无奈应用构建命令
  • maven要做好私服配置,仓库治理等
#!/bin/bash
  
docker stop jenkins && docker rm jenkins

docker run -d --name jenkins \
    -u root \
    --privileged=true \
    --restart=always  \
    -p 8080:8080 -p 5000:5000 \
    -v /usr/local/jenkins:/var/jenkins_home \
    -v /toony/server/apache-maven-3.6.3:/usr/local/maven \
    -v /usr/bin/docker:/usr/bin/docker \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /etc/localtime:/etc/localtime \
    -v /root/.ssh:/root/.ssh \
    jenkins/jenkins:latest-jdk8
    
#---- jenkinsci/blueocean 默认应用jdk11版本,装置gitlab hook失败 ------
   
#!/bin/bash
  
docker stop jenkins && docker rm jenkins

docker run -d --name jenkins \
        -u root \
        -p 8080:8080 -p 5000:5000 \
        -v /toony/jenkins/jenkins_home:/var/jenkins_home \
        -v /usr/local/java/jdk1.8.0_171:/var/jenkins_home/jdk8 \
        -v /toony/server/apache-maven-3.6.3:/var/jenkins_home/maven \
        -v /toony/jenkins/jenkinsci:/usr/jenkinsci \
        -v /usr/bin/docker:/usr/bin/docker \
        -v /var/run/docker.sock:/var/run/docker.sock \
        jenkinsci/blueocean

docker-compose.yml

cat > docker-compose.yml <<-EOF
version: '3'
services:                                     
  docker_jenkins:
    user: root                                
    restart: always                           
    image: jenkins/jenkins:lts                
    container_name: jenkins                   
    ports:                                    
      - 8080:8080
      - 5000:5000
    volumes:                                   
      - /toony/jenkins/jenkins_home:/var/jenkins_home 
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker               
      - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
  docker_nginx:
    restart: always
    image: nginx
    container_name: nginx
    ports:
      - 8090:80
      - 80:80
      - 433:433
    volumes:
      - /toony/nginx/conf.d/:/etc/nginx/conf.d
      - /toony/webserver/static/jenkins/dist/dist:/usr/share/nginx/html
EOF      

4.配置插件镜像减速

  • url https://updates.jenkins.io/update-center.json
  • 批改为 清华大学官网镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
cd /usr/local/jenkins/
vim hudson.model.UpdateCenter.xml

5.拜访

http://http://xxx.61.41.102:8080

  • 用户明码:admin
cat /usr/local/jenkins/secrets/initialAdminPassword
或
docker exec -it jenkins bash cat /var/jenkins_home/secrets/initialAdminPassword

6.插件装置

Jenkins -> Manage Jenkins -> System Configuration -> Manage Plugins -> Avaliable

Maven Integration
GitLab
GitLab Hook
SaltStack
Publish Over SSH 
Git Parameter    
Build With Parameters
Ansible
Build Pipeline
Parameterized Trigger
Parameterized Remote Trigger
Localization: Chinese (Simplified)


三、jenkins配置

1.全局配置

Jenkins -> Manage Jenkins -> System Configuration -> Global Tool Configuration

  • jdk | maven | git | npm

2.配置拜访gitlab

Jenkins -> Manage Jenkins -> Security -> Manage Credentials -> Stores scoped to Jenkins -> global -> Add Credentials -> Username 或者 SSH

3. 配置Push SSH Server

Jenkins -> Manage Jenkins -> System Configuration -> Publish over SSH -> SSH Servers -> Add -> Name|Hostname|Username|Remote Directory -> Use password authentication, or use a different key


四、配置gitlab触发webhook

1. gitlabz设置root用户能够通过SSH形式拉取代码
2. Jenkins装置好插件:Credentials Plugin|Gitlab Plugin|SSH Plugin|GitLab Hook
3. jenkins增加gitlab的root用户私钥,以便前期拉取代码
4. jenkins我的项目构建中减少触发器:Build Triggers -> Build when a change is pushed to GitLab -> Generate
   保留:webhook URL 和 `secret token`
5. gitlab我的项目中:Settings -> Webhooks 增加URL和Secret token
  • 减少触发器
  • 生成secret token

五、装置中文插件

1.装置中文插件

Localization: Chinese (Simplified)
Locale plugin

2.全局配置

Jenkins -> Manage Jenkins -> System Configuration -> Local -> Default Language : zh_CN 勾选 Ignore browser ...


六、集成SonarQube

1.装置插件

SonarQube Scanner for Jenkins

2.SonarQube创立Jenkins登录token

3.Jenkins配置拜访SonarQube凭据

Jenkins -> Manage Jenkins -> Manage Credentials -> Stores scoped to Jenkins -> global -> Add Credentials -> Kind -> Secret text -> 填入token

4.Jenkins系统配置

Jenkins -> Manage Jenkins -> System Configuration -> SonarQube servers -> Name、Server URL、Server authentication token

5.Jenkins全局配置

Jenkins -> Manage Jenkins -> Global Tool Configuration -> 配置 SonarQube Scanner

6.我的项目中配置

阐明

sonar.projectKey=test_01                    # SonarQube中我的项目的惟一标识符。只有它是惟一的                
sonar.projectName=test_server               # SonarQube中我的项目显示的名称
sonar.version=0.0.1-SNAPSHOT                # 版本号
sonar.sources=./src                         # 源码目录
sonar.java.binaries=./target/classes        # 编译后的文件目录
# sonar.exclusions=**/*.xml,**/*.html       #排除不须要检测的文件,如:xml、html              
sonar.language=java                         # 编程语言
sonar.sourceEncoding=UTF-8
sonar.scm.disabled=true


七、参考博客

  • jenkins jenkinsci/blueocean 应用
  • docker装置jenkinsci/blueocean并且创立pipeline我的项目
  • docker装置配置jenkins,并部署到其余服务器
  • 应用docker部署jenkins(jdk11)
  • Centos 7.8下部署Jenkins Blue Ocean-Docker版
  • docker装置Jenkins、jenkins插件、映射JDK和maven和RSA、publish over ssh公布
  • Docker手把手部署jenkins教程,jenkins容器带jdk,maven,docker,git
  • Jenkins的装置及中文展现、装置插件创立

  • ★★ 配置Jenkins主动拉取gitlab中的代码并部署

  • ★★ sonarQube部署及Jenkins集成sonarQube
  • jenkins+sonar 继续集成检测代码品质

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理