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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值