1987WEB视界-分享互联网热门产品和行业

您现在的位置是:首页 > WEB开发 > 正文

WEB开发

2Jenkins初体验

1987web2023-10-06WEB开发91
Jenkins初体验0.构建一个测试应用

Jenkins初体验

0. 构建一个测试应用

为了尝试这个DevOps过程,需要一个简要的程序用来部署和测试,这里使用SpringBoot简单构造了一个访问统计器,通过操作Redis数据库进行访问数的自增,并显示不同的用户名。

1. 搭建Jenkins

主要参见: 《使用Jenkins一键打包部署SpringBoot应用,就是这么6!

1.docker环境下的安装

下载
docker pull jenkins/jenkins:lts
 运行
docker run -p 8080:8080 -p 50000:5000 --name jenkins \
-u root \
-v /mydata/jenkins_home:/var/jenkins_home \
-d jenkins/jenkins:lts

2. Jenkins配置

  • 之后访问8080进入,根据提示找到密码,并填入。
  • 之后安装推荐的插件

  • 安装完成之后,创建管理员账号,并进行实例配置
  • 之后在插件管理中安装以下插件:

  • 根据角色管理权限的插件:Role-based Authorization Strategy

  • 远程使用ssh的插件:SSH plugin

  • 然后通过全局工具配置,配置maven配置:

  • 之后添加全局的ssh的配置,这样Jenkins使用ssh就可以执行远程的linux脚本了

3. 角色权限管理

通过角色管理插件可以管理jenkins用户,比如可以给管理员赋予所有的权限,给运维人员赋予执行任务的相关权限,其他人员只能查看

  • 首先在全局安全配置中启用基于角色的权限管理
  • 之后进入管理和分配角色的界面

进入后可分别管理角色和给用户分配角色。

由于这里使用的是gitee,还可以安装gitee的插件,还有一个名为Ocean的插件也不错。

2. 打包部署springboot应用

1. 代码上传至仓库

2. 进行脚本准备

!/usr/bin/env bash
app_name=user-api
dockerhub=127.0.0.1:30204
docker stop ${app_name}
echo ---stop container---
docker rm ${app_name}
echo ---remove container---
 --link 将外部的redis-server,dns到容器内的redis
docker run -p 30090:8080 --name ${app_name} \
        --link redis-server:redis \
        -v /etc/localtime:/etc/localtime \
        -v /mydata/app/${app_name}/logs:/var/logs \
        -d ${dockerhub}/${app_name}:1.0-SNAPSHOT
echo ---start container----

给脚本添加可执行权限

chmod +x ./test-user-api.sh

可以先运行测试一下

3. 在Jenkins中创建执行任务

新建任务

设置任务名称后,选择一个自由风格的软件项目

之后再源码管理中配置如下

此处的凭据直接可以填写账号密码

构建中设置如下:

之后添加一个脚本运行的构建,需要预先设置好ssh连接

然后就可以保存,构建运行了。

构建成功之后,也可以正常访问

好了继续接前面的文章,接下来咱们说说jenkins的流水线框架,后面文章可能比较长,主要介绍了原理,语法,详细构建过程.都是精华呦!!!都是 都是 都是 重要的事情多三遍!!!!!

pipeline是Jenkins2.X的最核心的特性,帮助Jenkins实现从CI到CD与DevOps的转变,下面我们先来看看他的基本概念以及基本语法,之后介绍如何创建以及后期应用.

什么是Jenkins的流水线?

Jenkins 流水线 (或简单的带有大写"P"的"Pipeline") 是一套插件,它支持实现和集成持续交付流水线 到Jenkins。

(CD) pipeline_是你的进程的自动表达,用于从版本控制向用户和客户获取软件。 你的软件的每次的变更 (在源代码控制中提交)在它被释放的路上都经历了一个复杂的过程 on its way to being released. 这个过程包括以一种可靠并可重复的方式构建软件, 以及通过多个测试和部署阶段来开发构建好的软件 (c成为 "build") 。

流水线提供了一组可扩展的工具,通过 Pipeline domain-specific language (DSL) syntax.[1]对从简单到复杂的交付流水线 "作为代码" 进行建模。

对Jenkins 流水线的定义被写在一个文本文件中 (成为 Jenkinsfile),该文件可以被提交到项目的源代码的控制仓库。[2]这是"流水线即代码"的基础; 将CD 流水线作为应用程序的一部分,像其他代码一样进行版本化和审查。 创建 `Jenkinsfile`并提交它到源代码控制中提供了一些即时的好处:

While定义流水线的语法, 无论是在 web UI 还是在 Jenkinsfile 中都是相同的, 通常认为在`Jenkinsfile` 中定义并检查源代码控制是最佳实践。

声明式和脚本化的流水线语法

Jenkinsfile 能使用两种语法进行编写 - 声明式和脚本化。

声明式和脚本化的流水线从根本上是不同的。 声明式流水线的是 Jenkins 流水线更近的特性:

然而,写到`Jenkinsfile`中的许多单独的语法组件(或者 "步骤"), 通常都是声明式和脚本化相结合的流水线。 在下面的 [pipeline-concepts] 和 [pipeline-syntax-overview] 了解更多这两种语法的不同。

Why Pipeline?

本质上,Jenkins 是一个自动化引擎,它支持许多自动模式。 流水线向Jenkins中添加了一组强大的工具, 支持用例 简单的持续集成到全面的CD流水线。通过对一系列的相关任务进行建模, 用户可以利用流水线的很多特性: