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

1 安装

命令:

  1. docker run \
  2. -u root \
  3. --rm \
  4. -d \
  5. -p 8080:8080 \
  6. -p 50000:50000 \
  7. -v jenkins-data:/var/jenkins_home \
  8. -v /var/run/docker.sock:/var/run/docker.sock \
  9. jenkinsci/blueocean

2 访问 http://localhost:8080/

2.1 第一次首页

image.png

2.2 在日志中找初始密码

查看日志的密码:docker logs contianer_id

2.3 装插件

接着,安装 plugin,选择团建的插件
image.png
慢慢等会,安装进行中
image.png

2.4 创建用户

image.png

2.5 实例配置,先跳过

image.png

2.6 开始使用 Jenkins

image.png

2.7 首页

image.png

3 pipeline 流水线

3.1 pipeline 脚本示例

pipeline { /* agent 指令告诉Jenkins在哪里以及如何执行Pipeline或者Pipeline子集。 正如您所预料的,所有的Pipeline都需要 agent 指令。 在执行引擎中,agent 指令会引起以下操作的执行: 所有在块block中的步骤steps会被Jenkins保存在一个执行队列中。 一旦一个执行器 executor 是可以利用的,这些步骤将会开始执行。 一个工作空间 workspace 将会被分配, 工作空间中会包含来自远程仓库的文件和一些用于Pipeline的工作文件 在Pipeline中可以使用这几种 定义代理的方式 在本导读中,我们仅使用Docker容器的代理方式。 在Pipeline中可以很容易的运行 Docker 镜像和容器。 Pipeline可以定义命令或者应用运行需要的环境和工具, 不需要在执行代理中手动去配置各种各样的系统工具和依赖。 这种方式可以让你使用 Docker容器工具包 中的任何工具。 */ agent any // 环境变量可以像下面的示例设置为全局的,也可以是阶段(stage)级别的。 如你所想,阶段(stage)级别的环境变量只能在定义变量的阶段(stage)使用。 environment { DISABLE_AUTH = 'true' DB_ENGINE = 'sqlite' } // 执行阶段 stages { stage('Build') { // 步骤(step) steps { sh 'echo "Hello World"' sh ''' echo "Multiline shell steps works too" ls -lah ''' } } stage('Package') { steps { sh 'echo "Package"' sh ''' pwd whoami ''' } } stage('Deployment') { steps { sh 'echo "Deployment"' sh ''' date free ''' } } stage('Release') { steps { sh 'echo "Release"' sh ''' echo $path ps -ef ''' } } } // 完成时动作 // 当 Pipeline 运行完成时,你可能需要做一些清理工作或者基于 Pipeline 的运行结果执行不同的操作, 这些操作可以放在 post 部分。 // 可以添加通知或者其他的步骤去完成清理、通知或者其他的 Pipeline 结束任务。 post { always { echo 'This will always run' } success { echo 'This will run only if successful' } failure { echo 'This will run only if failed' } /* failure { mail to: 'team@example.com', subject: "Failed Pipeline: ${currentBuild.fullDisplayName}", body: "Something is wrong with ${env.BUILD_URL}" } */ unstable { echo 'This will run only if the run was marked as unstable' } changed { echo 'This will run only if the state of the Pipeline has changed' echo 'For example, if the Pipeline was previously failing but is now successful' } } }

3.2 参数