使用Jenkins对接Github进行自动化CI

简介: 使用Jenkens对接GitHub进行自动化构建

Jenkins

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

Jenkins在 Docker hub 上有官方镜像社区镜像, 根据官方描述,Jenkins的镜像已经由社区接管维护,镜像为jenkinsci/jenkins,所以这次的集成就用这个社区版的Jenkins。

Docker 信息

  ~ docker version
Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Thu Apr 26 07:20:16 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Thu Apr 26 07:23:58 2018
  OS/Arch:      linux/amd64
  Experimental: false

配置Jenkins的compose.yml文件

因为我的docker已经进行了swarm集群处理,所以可以用docker compose写配置,然后一键运行。

docker-compose.yml

version: '3'

services:
  jenkinsContainer:
    image: jenkins/jenkins:lts
    ports:
      - 8080:8080
      - 3000:5000
    volumes:
        - "./jenkins_home:/var/jenkins_home"
    deploy:
      mode: replicated
      replicas: 1
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
      update_config:
        parallelism: 1
        delay: 10s
      placement:
        constraints:
          - node.role == manager

说明

  • image: jenkins/jenkins:lts, 使用最新的社区版本的jenkins;
  • ports: 8080:8080是浏览器端控制jenkins对应的端口,使用时,用ip:port即可,3000:5000是你要通过JNLP进行从节点构建的时候用的,在本次配置中并没有用到;
  • volumes: "./jenkins_home:/var/jenkins_home",将jenkins的配置存放在本地,防止重启后重新初始化jenkins,该文件可以自己创建,也可由Docker在运行时创建。
  • deploy: 这是和swarm集群部署相关的,就不细细讲了。

因为部署需要执行如下一行代码

docker stack deploy --compose-file=docker-compose.yml jenkins

防止每次重启都要键入,特地的,我们创建一个deploy脚本,加入可执行权限,每次执行这个脚本即可

  echo "docker stack deploy --compose-file=docker-compose.yml jenkins" > deploy
  chmod +x ./deploy

执行后的目录如下

  Jenkins tree -L 1
.
├── deploy
├── docker-compose.yml
└── jenkins_home

1 directory, 2 files

部署

执行如下命令即可

  ./deploy
Creating network jenkins_default
Creating service jenkins_jenkinsContainer

安装Jenkins

浏览器端打开ip:8080,在这我的地址为47.95.247.xxx:8080,端口后面切记不要加/jenkins, 这是Jenkins的bug,不然你的页面在登录后就会出错。

登录密码获取

  • 进入运行的容器中,打印
  docker container ls
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS       NAMES
c12c47c804ba        jenkins/jenkins:lts   "/sbin/tini -- /usr/…"   3 minutes ago       Up 3 minutes        8080/tcp, 50000/tcp   jenkins_jenkinsContainer.1.ntkjvt6u4kxjyvprc0rdrif05
 docker exec -it c12c47c804ba /bin/bash
 cat /var/lib/jenkins/secrets/initialAdminPassword
XXXXXXXXXXXXXXXXXXXXXX  # 这就是密码
  • docker logs,使用docker logs 查看安装日志,密码也是在安装日志中的
  docker container ls
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS       NAMES
c12c47c804ba        jenkins/jenkins:lts   "/sbin/tini -- /usr/…"   3 minutes ago       Up 3 minutes        8080/tcp, 50000/tcp   jenkins_jenkinsContainer.1.ntkjvt6u4kxjyvprc0rdrif05
  docker logs -f c12c47c804ba
 XXXXXXXXXXXXXXXXXXXXXX  # 这就是密码

输入密码后,选择推荐的安装,安装时间比较长,可以喝一杯茶或者咖啡去。
安装好自动进入主页。

配置Jenkins 使之和GitHub进行交互的基础环境

全局工具配置

  • git:主要提供git操作,如拉去代码。
    image
  • node: 为我们的前端项目打包提供基础运行环境。
    image

里面的内容都可以选择配置,我们选择nodejs 11这个版本。配置完毕选择应用即可。

系统设置

系统设置主要设置jenkins的地址和系统管理员的邮箱地址,还有与github之间的通信,要让github接受到push等命令触发CI/CD,就涉及到这块。

Jenkins Location

image

GitHub

  1. 添加GitHub Server 并填写名称
    image
  2. https://github.com/settings/tokens/new上生成token,需要的权限就三个,而且repo:status在repo中,所以可以不选,下图是所需要求,
    image
  3. 在GitHub上生成Token之后,copy该Token, 在Jenkins 凭据提供者: Jenkins页面中的类型中选择Secret text, Secret中粘贴GitHub生成的Token,id和描述可以随便填写。
    image
  4. 点击添加后,回到主页面,在凭据中选择刚才创建的凭据,点击连接测试,若不成功,返回重新操作以上步骤,点击下面的应用或保存完成配置。
    image

至此,基础配置完成。

添加测试项目

  1. 在首页添加新任务,选择自由风格的项目
    image
  2. 选择GitHub,键入要构建项目地址的主页地址,注意不是git资源地址
    image
  3. 源码管理配置
    image
  4. 构建触发器
    image
  5. 构建环境
    image
  6. 构建,选择执行shell,键入如图中的shell
    image
  7. 点击应用,保存,至此,完成GitHub项目在Jenkins的设置。

配置webhook

只有Jenkins和GitHub配置了相同的webhook,才能通信,才能达到开发者向GitHub push代码的时候Jenkins 才能收到ton通知进行后面的CI/CD。

  1. 进入系统管理/系统配置,定位到GitHub配置项,点击底部的高级按钮,键入协议://Jenkins地址(IP:Port)/自定义名称。
    image
  2. 在GitHub上打开你项目的setting页面,进入webHooks页面,点击右上角的 Add webhook,进入页面执行如下
    image

运行

在本地或者github上修改文件,对其进行push, Jenkins会收到通知,然后运行程序进行打包。

  1. 打开刚才创建的任务,进入详情,可以看到收到的GitHub push的消息。
    image
  2. Jenkins开始构建
    image
  3. 构建成功的效果
    image

总结

遇到问题还是要慢慢解决滴。在此做个总结。

目录
相关文章
|
8天前
|
Kubernetes Java 持续交付
小团队 CI/CD 实践:无需运维,Java Web应用的自动化部署
本文介绍如何使用GitHub Actions和阿里云Kubernetes(ACK)实现Java Web应用的自动化部署。通过CI/CD流程,开发人员无需手动处理复杂的运维任务,从而提高效率并减少错误。文中详细讲解了Docker与Kubernetes的概念,并演示了从创建Kubernetes集群、配置容器镜像服务到设置GitHub仓库Secrets及编写GitHub Actions工作流的具体步骤。最终实现了代码提交后自动构建、推送镜像并部署到Kubernetes集群的功能。整个过程不仅简化了部署流程,还确保了应用在不同环境中的稳定运行。
41 9
|
1月前
|
运维 jenkins Java
Jenkins 自动化局域网管控软件构建与部署流程
在企业局域网管理中,Jenkins 作为自动化工具,通过配置源码管理、构建及部署步骤,实现了高效、稳定的软件开发与部署流程,显著提升局域网管控软件的开发与运维效率。
50 5
|
2月前
|
jenkins Java 持续交付
软件开发自动化程度的不断提高,持续集成(CI)和持续部署(CD)成为现代软件开发的重要组成部分
随着软件开发自动化程度的不断提高,持续集成(CI)和持续部署(CD)成为现代软件开发的重要组成部分。本文以电商公司为例,介绍如何使用 Jenkins 自动发布 Java 代码,包括安装配置、构建脚本编写及自动化部署等步骤,帮助团队实现高效稳定的软件交付。
47 3
|
3月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
3月前
|
缓存 监控 数据可视化
利用GitLab CI/CD自动化您的软件开发流程
【10月更文挑战第10天】GitLab CI/CD 是 GitLab 内置的持续集成和持续部署工具,通过编写 .gitlab-ci.yml 文件,可以自动化构建、测试和部署应用程序的过程。本文介绍 GitLab CI/CD 的核心优势、实施步骤及在现代开发中的应用,帮助您提高开发效率和软件质量。
|
3月前
|
运维 jenkins 持续交付
自动化运维之路:构建高效CI/CD流水线
在软件开发的快节奏中,持续集成和持续部署(CI/CD)流水线是提升效率、保障质量的关键。本文将引导你理解CI/CD流水线的重要性,并手把手教你如何搭建一个高效的自动化运维系统。通过实际代码示例,我们将一步步实现从代码提交到自动测试、部署的全流程自动化,确保软件交付过程既快速又可靠。
|
3月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
105 0
|
2月前
|
运维 安全 Devops
DevOps实践:持续集成与持续部署(CI/CD)的自动化之路
【10月更文挑战第22天】在软件交付的快速迭代中,DevOps文化和实践成为企业加速产品上市、保证质量和提升客户满意度的关键。本文将通过一个实际案例,深入探讨如何利用持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)实现软件开发流程的高效自动化,包括工具选择、流程设计以及问题解决策略。我们将一起探索代码从编写到部署的全自动化旅程,揭示其对企业运维效率和产品质量所带来的深远影响。
|
3月前
|
运维 监控 jenkins
运维自动化实践:利用Jenkins实现高效CI/CD流程
【10月更文挑战第18天】运维自动化实践:利用Jenkins实现高效CI/CD流程
利用 GitHub Actions 自动化你的软件开发流程
在现代软件开发中,自动化是提升效率与质量的关键。GitHub Actions 作为 GitHub 的强大自动化工具,允许你在仓库中自动执行多种任务,如测试、打包、部署代码及自动合并 Pull Requests。本文介绍了 GitHub Actions 的核心概念、设置方法及其实用示例,帮助你快速上手并优化开发流程。通过 YAML 文件定义的工作流程可显著提高工作效率和代码质量。

热门文章

最新文章