草庐IT

Docker+Jenkins+Gitee详细配置Jdk、Git、Maven环境变量,构建Git项目

拄杖忙学轻声码 2023-04-05 原文

前置:

1、安装配置jdk、maven、git环境变量,安装方式这里不再赘述(这是前提),请参考:
1】Java:Linux系统安装jdk11环境配置_拄杖忙学轻声码的博客-CSDN博客_linux安装jdk11并配置环境变量
2】Maven:Linux CentOS 8.x 安装Maven教程_拄杖忙学轻声码的博客-CSDN博客
3】Git:Linux CentOS 8.x 安装Git_拄杖忙学轻声码的博客-CSDN博客

需要挂载到 Jenkins 容器中、配置环境变量

一、安装Jenkins并登入,找到系统管理-》全局工具配置

二、配置 jdk、maven、git 环境变量,这些环境变量需要已在容器中安装配置

1、配置JDK

2、配置Maven


这里注意(也可以不配置,使用默认的):
需要配置maven的本地仓库地址,也就是 setting.xml 文件中配置的 <localRepository>//x/xx</localRepository> 地址

3、配置Git,注意这里是git的可执行路径,不是环境变量
 

三、安装插件,点击系统管理-》插件管理

1、找到插件管理

2、安装 Gitee 插件,找到可选插件tab,搜索gitee (此插件非必须)

3、安装 Maven 插件,找到可选插件tab,搜索maven

4、安装 Git Parameter Plug-In 插件,用于添加git参数,找到可选插件tab,搜索git param

5、安装 Environment Injector 插件,搜索 inject

此插件的作用:
【1】支持自定义环境变量,并把自定义变量注入到构建过程中
【2】在shell脚本中可以使用 $a、$b的方式使用环境变量
【3】例如:

6、安装 Conditional BuildStep 插件,找到可选插件tab,搜索BuildStep或steps

说明:
【1】此插件作用是,添加构建步骤的前置条件,可以用作执行 shell 命令之前设置构建状态
【2】设置只有构建成功才执行 shell 命令或脚本文件

 

7、安装 Publish over SSH 插件,找到可选插件tab,搜索ssh

说明:
【1】此插件可以支持添加其他远程服务器,进行执行 shell 命令或脚本文件

四、添加Gitee(码云)链接配置(系统管理->系统配置->Gitee配置)(此步骤非必须,也可以不配置)

1、gitee配置位置

2、 填写gitee名称和域名

3、点击添加gitee访问令牌 

4、令牌添加好之后,点击测试显示成功

五、创建一个自由风格的测试任务

1、命名test

2、填写任务信息(Gitee链接可以不选)

说明:
(1):如果需要参数化构建项目,需要勾选》参数化构建过程,然后选择 Git参数 ,即可获得该项目的分支或标签信息,示例请参考:Jenkins之Git参数化构建项目_拄杖忙学轻声码的博客-CSDN博客

3、添加Git代码仓库地址(支持Gitlab、GitCode等)、用户账号密码信息等
【1】 指定分支如果是参数化构建,可以使用 $Branch
【2】如果不是参数化构建,直接填写分支名 */master

4、构建触发器(如果不需要每次推送、新建分支等操作都触发部署,可以忽略WebHook触发器)

点击生成web hook密码

5、需要把上面的路径、生成的 gitee webhook 密码配置到项目

6、自定义构建环境变量,安装Environment Injector插件后,勾选“将环境变量注入构建过程”

说明:
【1】在 shell 脚本中可以使用变量 $a、$b 等
【2】Delete workspace before build starts 此选项看情况选择

7、添加配置构建步骤》调用顶层Maven目标

【1】目标:clean package -DskipTests -U
【2】POM:pom.xml
【3】配置文件:settings.xml 文件使用默认就行

8、构建执行步骤,这里执行 shell

特别说明:
(1):默认在 jenkins_home 目录下的工作空间中的任务项目下执行
(2):例如此 shell 脚本就在 /var/jenkins_home/workspace/test 目录下执行
(3):因为我们在创建jenkins容器的时候,把jenkins_home挂载到了宿主机,所以也就等于在宿主机的 jenkins_home/workspace/test 项目下执行

9、点击立即构建

六、下面是我遇到的报错信息(如果shell中没有用到git命令,可以忽略此步骤)

1、

2、 

 报上面这样的错误一般是没有创建目录、项目没有克隆下来、没有初始化加入git版本管理、本地分支没有关联远程分支、没有加入远程控制、需要输入gitee的用户名密码等一系列问题

解决方式如下:
(1):进入容器创建此目录,并且进入此目录执行 git init 命令,把此目录加入到 git 版本管理

(2):创建目录后,需要使用 git clone -b 分支名 xxx.git 命令把项目克隆下来:

git clone -b 分支名 xxx.git


(3):需要把本地分支和远程分支关联起来,命令如下:
语法:git branch --set-upstream-to=origin/远程分支名 本地分支名

# 本地分支关联远程分支
git branch --set-upstream-to=origin/master master


(4):再把项目源加入到远程控制,命令如下:

git remote add origin https://gitee.com/xxx.git


(5):设置 git 操作项目时候需要用的用户名和密码,命令如下:

# 第1步执行
git config --global credential.helper store

# 第2步执行
git push origin master
或者
git pull

(6):执行上述命令,会让你输入用户名和密码,这时你输入就好了,下次再 git push/pull 的时候就不用密码了。jenkins重新构建就行了

(7):如果出现基线库错乱的问题
You can replace "git config" with "git config --global" to set a default
执行如下命令之一,告诉git如何操作不同名字的分支

git config pull.rebase false  # merge (the default strategy)
git config pull.rebase true   # rebase
git config pull.ff only       # fast-forward only

3、解决上述问题之后,jenkins重新构建,成功

至此:
一个简单的 docker + maven + git + gitee 构建项目demo就完成了

总结:
1、Jenkins使用的 java、maven、git、docker 等都是来自宿主机挂载到Jenkins容器内部,容器内再配置环境变量
2、Jenkins容器中使用的 docker 来自宿主机中安装的 docker,在创建jenkins容器的时候把 docker.sock 权限交给 Jenkins 容器,从而实现在 Jenkins 容器内部也可以直接操作docker命令

有关Docker+Jenkins+Gitee详细配置Jdk、Git、Maven环境变量,构建Git项目的更多相关文章

  1. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

  2. ruby - 通过 ruby​​ 进程共享变量 - 2

    我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是

  3. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  4. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  5. ruby-on-rails - 使用 ruby​​ 将多个实例变量转换为散列的更好方法? - 2

    我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。

  6. ruby - Rack:如何将 URL 存储为变量? - 2

    我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.

  7. ruby - 在 Ruby 中构建长字符串的简洁方法 - 2

    在编写Ruby(客户端脚本)时,我看到了三种构建更长字符串的方法,包括行尾,所有这些对我来说“闻起来”有点难看。有没有更干净、更好的方法?变量递增。ifrender_quote?quote="NowthatthereistheTec-9,acrappyspraygunfromSouthMiami."quote+="ThisgunisadvertisedasthemostpopularguninAmericancrime.Doyoubelievethatshit?"quote+="Itactuallysaysthatinthelittlebookthatcomeswithit:themo

  8. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  9. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  10. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

随机推荐