最近周末没事,把开发过程中用到的东西重新整理一下,今天先从Jenkins开始,记录和github结合如何使用。

1. Jenkins 搭建和使用

    • 一、采用Docker安装Jenkins
    • 二、登录使用Jenkins
      • 登录:
      • 创建用户
      • 创建一个新的job, 点击“new Item”, 选择Multibranch Pipeline.
      • 添加Jenkinsfile
      • 自动触发Job
    • 总结
  • 2. gitlab搭建
  • 3. docker
  • 4. k8s
  • 5. sonar 代码扫描
  • 6. jacoco 代码覆盖率

一、采用Docker安装Jenkins

  1. 首先需要安装docker,安装完docker后运行:
docker pull jenkins/jenkins
#如果要指定特定image,例如weekly
docker pull jenkins/jenkins:weekly
  1. 创建网络桥接
docker network create jenkins
  1. 为了在Jenkins节点上可以执行Docker命令,我们下载Docker:dind
docker run --name jenkins-docker --rm --detach \--privileged --network jenkins --network-alias docker \--env DOCKER_TLS_CERTDIR=/certs \--volume jenkins-docker-certs:/certs/client \--volume jenkins-data:/var/jenkins_home \--publish 2376:2376 \docker:dind --storage-driver overlay2

–name: 指定docker的名称
–rm: 当docker不运行是自动移除image
–detach: 让docker在后台运行, 后续我们可以通过docker stop jenkins-docker来停止这个docker
–network: 使用上一步创建的网络
– network-alias:网络别名
–env:指定docker TLS证书的根目录
–volume: 连续两个都是相当于建立映射,把/certs/client映射叫做jenkins-docker-certs
–pushlish: 暴露docker的端口,用于在本地机器发送命令之间的通讯
docker:dind: image本身
–storage-driver overlay2:docker存储驱动

  1. 建立一个Dockerfile定制docker images
FROM jenkins/jenkins:2.346.3-jdk11
USER root
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \https://download.docker.com/linux/debian \$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean:1.25.6 docker-workflow:1.29"
  1. 基于上面这个dockerfile创建docker image
docker built -t jenkins:2.346.3-jdk11 .
  1. 运行上面创建的docker image
docker run --name jenkins-blueocean --restart=on-failure --detach \--network jenkins --env DOCKER_HOST=tcp://docker:2376 \--env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 \--publish 8080:8080 --publish 50000:50000 \--volume jenkins-data:/var/jenkins_home \--volume jenkins-docker-certs:/certs/client:ro \jenkins:2.346.3-jdk11

这里面最要注意的是 --publish,这两个当于建立本地和docker的端口映射,前面后面,前面一个是本地端口,后面一个是docker的端口。
最后一个是第5步建立image的名称

至此, 我们可以通过已经在docker中运行起来了jenkins, 如何查看当前有哪些docker呢?在terminal中执行:

docker ps -a

二、登录使用Jenkins

登录:

  1. 前面已经在docker中把Jenkins运行起来了
    接下来可以登录Jenkins并使用其功能
    在浏览器中输入: http://localhost:8080,会需要输入密码:

    我们可以通过以下命令获取:
#jenkins-blueocean 是docker的名字
docker logs jenkins-blueocean
cat /var/jenkins_home/secrets/initialAdminPassword

复制下来就可以登录了

创建用户

Name: Ekin
Password: *******
Full name: Ekin
Email: 53610289@qq.com
  1. 安装好很多的插件后,就可以看到这样的(我这里是已经加了一个job):

创建一个新的job, 点击“new Item”, 选择Multibranch Pipeline.


6. 在Branch Source中选择github, 同事也需要创建credential用来登录github和执行job,以及填入项目git的URL.
而Credentials对于System和Global两种的区别是:

Global - if the credential/s to be added is/are for a Pipeline project/item. Choosing this option applies the scope of the credential/s to the Pipeline project/item “object” and all its descendent objects. (Pipeline等通用的选择这个)

System - if the credential/s to be added is/are for the Jenkins instance itself to interact with system administration functions, such as email authentication, agent connection, etc. Choosing this option applies the scope of the credential/s to a single object only. (对Jenkins系统本身的设置相关的选择System)

还有一个是只作用Job本身的Credentials, 等创建完job后可以看到

Build设置通过Jenkinsfile:

这样就添加好了一个Job

添加Jenkinsfile

  1. 但是我们希望的是Jenkins能够去执行job,这里就需要再github的项目中添加一个文件:Jenkinsfile,内容大致像这样,然后提交代码。具体如何编写一个Jenkinsfile可以参考这里:
pipeline {//     agent anyagent {docker {image 'node:16-alpine3.15'args '-p 3000:3000'}}stages {stage('Build') {steps {echo 'Building..'sh 'PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true yarn install'echo 'Finished Built..'}}stage('Test') {steps {echo 'Testing..'
//                 sh 'yarn dev'}}stage('Deploy') {steps {echo 'Deploying....'}}}
}
  1. 点击项目中 Scan Repository Now,就会生成一个执行任务
    9. 点击Build/ Test /Deploy这几个步骤就可以查看里面的具体的log,支持基本完成CI设置。

自动触发Job

10 : 但我希望的提交代码后能够自动执行job,那这个需要再哪里设置呢?
有两种方式可以选择:
a. github webhook push的方式: 在github上设置回调url(这个url是jenkins上的),当有新的代码提交后,它会触发回调,执行相应的job。
Jenkins系统配置 --> github进行设置,获取到webhook url,然后在github项目settings-> webhook设置jenkins的回调url,由于是本地建立的localhost,没法成功回调,要求是通过域名回调。
b. 在Jenkins定时执行job,从github上pull code执行job。我们可以选择这种方式

总结

本篇介绍了如何在Docker中建立Jenkins,以及在Jenkins建立一个job,使其在代码提交时可以自动触发任务,这个任务的定义步骤在Jenkinsfile中定义,Jenkinsfile中可做较多的事情:比如几个步骤stage,像我们常做的事情,跑单测, build项目,测试环境自动化,uat环境测试,以及跑完自动化用例后,通过脚本更新结果,部署代码到生产环境等。

后续:

2. gitlab搭建

3. docker

4. k8s

5. sonar 代码扫描

6. jacoco 代码覆盖率

DevOps CI/CD之一: Jenkins和Github相关推荐

  1. iHealth基于Docker的DevOps CI/CD实践

    本文由1月31日晚iHealth运维技术负责人郭拓在Rancher官方技术交流群内所做分享的内容整理而成,分享了iHealth从最初的服务器端直接部署,到现在实现全自动CI/CD的实践经验. 作者简介 ...

  2. 超长干货:基于Docker的DevOps CI/CD实践——来自iHealth的分享

    前言 相信我,一切事情的发生都是赶鸭子上架,没有例外.人类所有伟大的变革都是迫不得已,可又是那么顺其自然.比如容器(docker)技术的诞生,比如箭在弦上的创业,比如野心勃勃的kubernetes,比 ...

  3. kubernetes之CI/CD工具jenkins第二篇,helm的使用

    1. kubernetes之CI/CD第二篇-jenkins结合helm部署应用: 1. 概述:    在前期的博文中我已经初步介绍过kubernetes环境下的CI/CD的使用.主要是jenkins ...

  4. 使用VSTS为ASP.NET Core构建DevOps CI/CD管道

    目录 介绍 让我们深入了解基本概念 单体架构和微服务架构 敏捷和DevOps DevOps背后的推动力 持续集成 持续交付 持续部署 使用VSTS的ASP.NET Core应用程序的自动化CI 先决条 ...

  5. CI/CD之Jenkins+Gitlab

    文章目录 一.Jenkinx+Gitlab持续集成环境概述 (1)什么是CI/CD (2)Jenkins概述 (3)Gitlab概述 (4)Gitlab和Github的区别 (5)Jenkins配合G ...

  6. 为 Kubernetes 提供 CI/CD 服务 Jenkins X

    Jenkins X 是一个高度集成化的 CI/CD 平台,基于 Jenkins 和 Kubernetes 实现,旨在解决微服务体系架构下的云原生应用的持续交付的问题,简化整个云原生应用的开发.运行和部 ...

  7. GitHub也能CI/CD了 如何使用GitHub的Action?

    GitHub也能CI/CD了!如何使用GitHub的Action? 一,什么是CI/CD 见另一篇文章 二,GitHub的Action GitHub的Action是一种自动化的CI/CD工具,可以让你 ...

  8. 【运维面试】DevOps CI/CD常见面试题

    文章目录 1. 什么是DevOps 2. 什么是持续集成 3. 什么是持续交付 4. 什么是持续部署 5. 什么是持续测试及其好处 6. 什么是版本控制及其用途? 7. 什么是 Git? 8. 解释 ...

  9. Linux auditd rules generate 通用linux审计规则生成工具DevOps CI/CD持续集成交付 tools

    app name gen-audit-rules linux generate auditd service rules tools Version 1.0 github.com/iotd/gen-a ...

最新文章

  1. 一图看懂新一代人工智能知识体系大全
  2. 【会议】2009-3-23
  3. poj 2480 (欧拉函数应用)
  4. sql增删改查_快速搞定数据库增删改查|附思维导图
  5. SQL笛卡尔积结合前后行数据的统计案例
  6. h3c交换机配置远程管理_高手给说下H3C交换机如何配置telnet远程登录
  7. 亚马逊被起诉!因女员工一天上六次厕所遭开除
  8. C++编程思想:指针,引用,拷贝构造函数,赋值运算符
  9. es6 --- Proxy实例的get方法
  10. a8处理器相当于骁龙几_天玑820相当于骁龙什么处理器?天梯图秒懂联发科天玑820性能排名...
  11. 七、 面向对象(二)
  12. [html] HTML5的video怎么取消自动播放?
  13. Spark之scala学习(基础篇)待更新
  14. loadrunner 参数化
  15. asp.net程序的问题原来是IE造成的,改用firefox就没问题了!
  16. html几个数据包,报文和数据包的区别
  17. 全球首台商用量子计算机发布!体积如同大象,算力不及笔记本
  18. 【Python】安装IPython和IPthon Notebook
  19. 【转】win7旗舰版英文版下载(64位|32位)|Windows7英文版ISO镜像
  20. Linux运维工程师面试知识点汇总(二)

热门文章

  1. 华为荣耀更新后为什么没有计算机,荣耀7x为什么用华为助手联不上电脑?
  2. 原生javascript自己封装的常用小方法。
  3. 基于JSP的足球直播论坛的设计与实现
  4. python字典格式_Python中的字典的格式与方法
  5. 第二章 表格及样式入门 ③ 详细代码演练、解析
  6. Camouflaged Object Detection
  7. Harmattan:一款时尚的Linux桌面伴侣
  8. 几行代码,撸了个 元宇宙?!
  9. 5种最佳像素化图像的方法
  10. 网页***深度剖析以及手工清除的方法