Jenkins ——你很神气

简介: Jenkins ——你很神气

安装Jenkins

just one line

docker run -it -p 8080:8080 jenkinsci/blueocean

open broswer input ip:8080

创建task

新建 - 流水线

配置里填写git仓库地址, 选择分支

脚本路径默认 Jenkinsfile

在项目(git仓库的Project)根路径创建Jenkinsfile 文件

pipline {
  agent any //agent 部分指定了整个流水线或特定的部分, 将会在Jenkins环境中执行的位置
  tools 'gradle' // depends on you tool name
  stages {
     stage('build') {
       step {
         sh 'gradle -v'
         sh 'gradle bootJar'
       }
     }
  }
}

保存

立即构建

踩坑

使用github仓库时使用http路径总是报错

然后转为使用git@路径, 需要在你的主机上生成ssh key

然后设置在github账号中(id_rsa.pub 文件内容)

或者在Jenkins全局配置中配置github token

由于我是在docker 中运行Jenkins, 所以我们把密钥的路径映射一下

运行docker时加上 -v /root/.ssh:/root/.ssh

其它

生成token

ssh-keygen -o

验证

ssh -T git@github.com

you will see

Hi username! You’ve successfully authenticated, but GitHub does not provide shell access

安装docker细节

docker 安装方式有很多种, 这里我们介绍使用docker安装的方式

注意我们的镜像是带 blueocean 的
blueocean 是一种管理 Pipeline 类型task的一套 ui

docker run --net=host jenkinsci/blueocean

这里有一点注意, –net=host 使用host网络(默认是bridge) 因此我们可以在主机直接访问容器里的端口, docker 安装后默认包含三种网络 host, bridge, none

我们知道 Jenkins 默认跑在 8080 端口, 此时我们使用 ip:8080 即可访问

或者使用-p参数进行端口映射

docker run
  -u root
  -d 
  -p 8080:8080 
  -v jenkins-data:/var/jenkins_home 
  -v /var/run/docker.sock:/var/run/docker.sock
  -v /root/.ssh:/root/.ssh
  jenkinsci/blueocean

-v jenkins-data:/var/jenkins_home 参数使用docker volume这样Jenkins数据可以持久保存, 即使重启容器也可以保存上次运行信息

-d 后台执行

-p 发布端口

use docker agent

pipeline {
  agent {
      docker { image 'gradle:jdk8' } //我们选择使用docker gradle镜像来准备
  }
  stages {
      stage('build') {
          steps {
              sh 'gradle -v'
              sh 'gradle clean bootJar'
          }
      }
      stage('start') {
          steps {
               sh "chmod +x ./deliver.sh"
               sh './deliver.sh'
          }
      }
  }
  //执行成功后后续操作
  post {
      success {
          echo 'success'
      }
  }
}

deliver.sh

echo 'The following command runs and outputs the execution of your Java'
echo 'application (which Jenkins built using gradle) to the Jenkins UI.'
service_name="hello-blog"
service_prot=9000
set -x
docker build . -t $service_name
docker run -d --name $service_name --net=host (-p $service_prot:$service_prot) $service_name

docker outside of docker

由于我们的Jenkins跑在dcker里面,我们的java应用也需要docker环境

我们需要加上卷映射

-v $(which docker):/usr/bin/docker

-v /var/run/docker.sock:/var/run/docker.sock

这时就可以,在镜像内部继续使用docker

reference:

https://blog.container-solutions.com/running-docker-in-jenkins-in-docker

https://www.jenkins.io/zh/doc/book/installing/

目录
相关文章
|
3月前
|
监控 数据可视化 jenkins
Jenkins是什么
【10月更文挑战第18天】Jenkins是什么
63 2
|
3月前
|
运维 安全 jenkins
Jenkins适合哪些场景
【10月更文挑战第18天】Jenkins适合哪些场景
|
4月前
|
jenkins 持续交付
|
JSON jenkins 持续交付
jenkins安装
jenkins安装
159 0
|
jenkins 应用服务中间件 持续交付
jenkins-2
jenkins-2
81 1
|
存储 jenkins 持续交付
jenkins-1
jenkins-1
84 1
|
存储 jenkins 持续交付
Jenkins-1
Jenkins-1
62 0
|
jenkins 应用服务中间件 持续交付
|
jenkins Java 持续交付
Jenkins 使用总结
Jenkins 使用总结
158 0
|
jenkins Linux 持续交付
Jenkins学习(一)——Jenkins安装
Jenkins学习(一)——Jenkins安装
210 0
Jenkins学习(一)——Jenkins安装