网站内容发布流程图(Oracle发生争执持续集成()功能介绍及解决办法(一))

优采云 发布时间: 2022-04-04 08:09

  网站内容发布流程图(Oracle发生争执持续集成()功能介绍及解决办法(一))

  1.1 前言

  Jenkins 是一个用 Java 编写的开源持续集成工具。在与 Oracle 发生争执后,该项目独立于 Hudson 项目。

  Jenkins 为软件开发提供持续集成服务。它在 servlet 容器(例如 Apache Tomcat)中运行。它支持软件配置管理 (SCM) 工具(包括 AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase 和 RTC),可以执行基于 Apache Ant 和 Apache Maven 的项目,以及任意 shell 脚本和 Windows 批处理命令。Jenkins 的主要开发者是 Kosuke Kawaguchi。Jenkins 是在 MIT 许可下发布的免费软件。

  1.1.1 詹金斯功能

  1、持续的软件发布/测试项目。

  2、监控外部调用执行的工作。

  1.2 如何理解持续集成、持续交付和持续部署?1.2.1 持续集成

  持续集成(英文:Continuous integration,缩写为CI),一个软件工程过程,每天多次将所有工程师的软件工作副本集成到一个共同的主线中。

  这个名字最初是由 Grady Booch 在他的构图方法中创造的,但他没有提到一天要集成几次。它后来成为极限编程(简称 XP)的一部分。在测试驱动开发 (TDD) 方法中,通常会结合自动化单元测试。

  持续集成的思想主要是解决软件在系统集成中面临的各种问题。极限编程将这些问题称为集成地狱。

  持续集成主要强调在开发人员提交新代码后立即构建和(单元)测试。根据测试结果,我们可以确定新代码和原创代码是否正确集成。简单地说:经常(每天多次)将代码集成到主干中。

  持续集成旨在产生以下好处,例如:

  ü 早期发现集成错误并通过小修改轻松跟踪,从而节省项目时间和成本。

  ü 避免在发布日期前一分钟的混乱,当每个人都试图检查他们制作的小不兼容版本时。

  ü 当单元测试失败或发生错误时,如果开发者需要在不调试的情况下将代码库恢复到无问题状态,只需丢弃一小部分更改(因为集成次数频繁)。

  ü 保持“最新”程序可用于测试、演示或发布。

  ü 频繁的代码提交激励开发人员创建模块化、低复杂度的代码。

  ü 防止树枝明显偏离树干。如果不经常集成,主干不断更新,以后集成会越来越难,甚至很难集成。

  1.2.2 持续交付

  持续交付(英文:Continuous Delivery,缩写为CD)是一种软件工程方法,可以让软件产品的生产过程在较短的周期内完成,以确保软件能够稳定、持续地保持在可以发布的状态随时。

  它的目标是使软件构建、测试和发布更快、更频繁。这种方法可以降低软件开发的成本和时间,降低风险。

  在持续集成的基础上,持续交付将集成的代码部署到更接近真实运行环境的“类生产环境”。例如,在我们完成单元测试后,我们可以将代码部署到连接数据库的 Staging 环境中进行更多测试。如果代码没有问题,可以继续手动部署到生产环境。

  1.2.3 持续部署

  持续部署(英文:Continuous Deployment,缩写为CD)是持续交付的下一步,是指代码通过审核后自动部署到生产环境。

  有时,持续部署也与持续交付相混淆。持续部署意味着所有的更改都会自动部署到生产环境中。持续交付意味着所有变更都可以部署到生产中,但业务考虑可能会选择不部署。要想实现持续部署,就必须先实现持续交付。

  持续部署是在持续交付的基础上,将部署到生产环境的过程自动化。

  关键词:CI/CD 持续集成/持续交付/持续部署

  1.3 安装和配置 JENKINS

  了解网络Jenkins后,现在安装Jenkins

  1.3.1 环境描述

  推荐的硬件配置

  1 GB 内存

  50 GB 的驱动器空间

  系统环境

  [root@Jenkins ~]# cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

[root@Jenkins ~]# uname -r

3.10.0-693.el7.x86_64

[root@Jenkins ~]# getenforce

Disabled

[root@Jenkins ~]# systemctl status firewalld.service

● firewalld.service - firewalld - dynamic firewall daemon

Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

Active: inactive (dead)

Docs: man:firewalld(1)

  软件要求

  Java 8 - Java 运行时环境 (JRE) 或 Java 开发工具包 (JDK) 都可以。

  # 可以使用open jdk

[root@Jenkins ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

[root@Jenkins ~]# java -version

openjdk version "1.8.0_151"

OpenJDK Runtime Environment (build 1.8.0_151-b12)

OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode) 

  1.3.2 安装 Jenkins

  软件下载

  官方仓库 https://pkg.jenkins.io/redhat-stable/

清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/

  下载对应的数据包就行了,我用的是jenkins-2.73.1-1.1.noarch.rpm

  安装詹金斯

  rpm -ivh jenkins-2.73.1-1.1.noarch.rpm

  启动詹金斯

  /etc/init.d/jenkins start

  查看端口信息

  [root@Jenkins ~]# netstat -lntp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1213/sshd

tcp6 0 0 :::8080 :::* LISTEN 1672/java

tcp6 0 0 :::22 :::* LISTEN 1213/sshd

  RPM包安装的内容

  [root@Jenkins ~]# rpm -ql jenkins

/etc/init.d/jenkins # 启动文件

/etc/logrotate.d/jenkins # 日志分割配置文件

/etc/sysconfig/jenkins # jenkins主配置文件

/usr/lib/jenkins # 存放war包目录

/usr/lib/jenkins/jenkins.war # war 包

/usr/sbin/rcjenkins # 命令

/var/cache/jenkins # war包解压目录 jenkins网页代码目录

/var/lib/jenkins # jenkins 工作目录

/var/log/jenkins # 日志

  配置文件说明

  [root@Jenkins ~]# grep "^[a-Z]" /etc/sysconfig/jenkins

JENKINS_HOME="/var/lib/jenkins" #jenkins工作目录

JENKINS_JAVA_CMD=""

JENKINS_USER="jenkins" # jenkinx启动用户

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"

JENKINS_PORT="8080" # 端口

JENKINS_LISTEN_ADDRESS=""

JENKINS_HTTPS_PORT=""

JENKINS_HTTPS_KEYSTORE=""

JENKINS_HTTPS_KEYSTORE_PASSWORD=""

JENKINS_HTTPS_LISTEN_ADDRESS=""

JENKINS_DEBUG_LEVEL="5"

JENKINS_ENABLE_ACCESS_LOG="no"

JENKINS_HANDLER_MAX="100" # 最大连接

JENKINS_HANDLER_IDLE="20"

JENKINS_ARGS=""

  1.3.3 web界面安装

  浏览器访问:8080

  解锁Jenkins,密码取自命令行

  [root@Jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword

3afe5ad49a794ac2b1a72811f5eb3c9b

  输入授权密码,点击下一步

  稍等片刻,引导安装插件选择页面,关闭此页面,安装Jenkins后安装插件。

  关闭安装插件选择后,选择 Start using Jenkins

  安装完成,显示界面

  安装 Jenkins 插件

  系统管理>>管理插件

  您可以选择需要安装的插件,也可以选择安装所有插件。

   1 [root@Jenkins ~]# # 插件安装完成后插件安装目录的内容

2 [root@Jenkins ~]# ls /var/lib/jenkins/plugins/

3 ace-editor credentials.jpi github-branch-source jquery-detached.jpi pam-auth pipeline-model-extensions.jpi ssh-credentials.jpi workflow-basic-steps.jpi

4 ace-editor.jpi display-url-api github-branch-source.jpi jsch pam-auth.jpi pipeline-rest-api ssh.jpi workflow-cps

5 ant display-url-api.jpi github.jpi jsch.jpi pipeline-build-step pipeline-rest-api.jpi ssh-slaves workflow-cps-global-lib

6 antisamy-markup-formatter docker-commons git.jpi junit pipeline-build-step.jpi pipeline-stage-step ssh-slaves.jpi workflow-cps-global-lib.jpi

7 antisamy-markup-formatter.jpi docker-commons.jpi gitlab-plugin junit.jpi pipeline-github-lib pipeline-stage-step.jpi structs workflow-cps.jpi

8 ant.jpi docker-workflow gitlab-plugin.jpi ldap pipeline-github-lib.jpi pipeline-stage-tags-metadata structs.jpi workflow-durable-task-step

9 authentication-tokens docker-workflow.jpi git-server ldap.jpi pipeline-graph-analysis pipeline-stage-tags-metadata.jpi subversion workflow-durable-task-step.jpi

10 authentication-tokens.jpi durable-task git-server.jpi mailer pipeline-graph-analysis.jpi pipeline-stage-view subversion.jpi workflow-job

11 bouncycastle-api durable-task.jpi gradle mailer.jpi pipeline-input-step pipeline-stage-view.jpi timestamper workflow-job.jpi

12 bouncycastle-api.jpi email-ext gradle.jpi mapdb-api pipeline-input-step.jpi plain-credentials timestamper.jpi workflow-multibranch

13 branch-api email-ext.jpi handlebars mapdb-api.jpi pipeline-milestone-step plain-credentials.jpi token-macro workflow-multibranch.jpi

14 branch-api.jpi external-monitor-job handlebars.jpi matrix-auth pipeline-milestone-step.jpi resource-disposer token-macro.jpi workflow-scm-step

15 build-timeout external-monitor-job.jpi icon-shim matrix-auth.jpi pipeline-model-api resource-disposer.jpi windows-slaves workflow-scm-step.jpi

16 build-timeout.jpi git icon-shim.jpi matrix-project pipeline-model-api.jpi scm-api windows-slaves.jpi workflow-step-api

17 cloudbees-folder git-client jackson2-api matrix-project.jpi pipeline-model-declarative-agent scm-api.jpi workflow-aggregator workflow-step-api.jpi

18 cloudbees-folder.jpi git-client.jpi jackson2-api.jpi maven-plugin pipeline-model-declarative-agent.jpi script-security workflow-aggregator.jpi workflow-support

19 credentials github javadoc maven-plugin.jpi pipeline-model-definition script-security.jpi workflow-api workflow-support.jpi

20 credentials-binding github-api javadoc.jpi momentjs pipeline-model-definition.jpi ssh workflow-api.jpi ws-cleanup

21 credentials-binding.jpi github-api.jpi jquery-detached momentjs.jpi pipeline-model-extensions ssh-credentials workflow-basic-steps ws-cleanup.jpi

  至此 Jenkins 安装完成

  1.3.4 詹金斯配置

  1.配置jenkins并发执行数,提高执行效率

  系统管理 >> 系统设置 >> Maven 项目配置

  2.设置邮箱,测试完成后可以主动发送邮件通知测试状态

  系统管理>>系统设置>>詹金斯位置

  向下滚动,找到邮件通知,配置邮件的smtp信息

  配置完成后,点击测试配置进行测试。测试成功后点击保存

  1.4 Jenkins 使用 1.4.1 创建一个新任务

  创建新任务

  输入项目名称,选择只构建子样式软件

  1.4.2 结合 Jenkins 和 gitlab

  gitlab的详细安装方法请参考:

  创建公钥和私钥

  [root@Jenkins ~]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:5SGYye8oxCKFJjddb4W8JC0RAQhBWCvuG8aZL8eMJs4 root@Jenkins

The key's randomart image is:

+---[RSA 2048]----+

|==....=* .. |

|...o oo==. |

|+.= . =++.o |

|++ o o.+ . |

|... o S . |

|o.oo o |

| B+ . . . |

|++++ . |

|+Eo. |

+----[SHA256]-----+

[root@Jenkins ~]# cat .ssh/id_rsa.pub

[root@Jenkins ~]# cat .ssh/id_rsa

  在gitlab中添加公钥id_rsa.pub

  在jenkins中添加私钥id_rsa

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线