草庐IT

Jenkins自动化部署javadoc到web站点

PetterLiu 2023-03-28 原文

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。今天我们使用Jenkins配置发布与部署Javadoc
关于Javadoc编写事项请参考官方

maven工程配置

使用maven-javadoc-plugin, pom.xml配置参考

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<source>8</source>
<charset>UTF-8</charset><!-- utf-8读取文件 -->
<encoding>UTF-8</encoding><!-- utf-8进行编码代码 -->
<docencoding>UTF-8</docencoding><!-- utf-8进行编码文档 -->
</configuration>
</plugin>
</plugins>
</build>

Jenkins配置

JDK配置

MAVEN插件

Git插件

Minio插件minio cli


Maven配置

Jenkins中maven, 我们在Goals and options中 填的是  clean test javadoc:javadoc

也可以使用pipeline , 如果您还清楚,请阅读jenkins官方blog.


Nginx配置文件

default.conf

配置文件很简单,基础配置,可按需要修改,现在配置nginx端口是8080

server {
     listen       8080;
     server_name  localhost;

    location / {
         root   /usr/share/nginx/html;
         index  index.html index.htm;
     }
    
     error_page   500 502 503 504  /50x.html;
     location = /50x.html {
         root   html;
     }
}

Dockerfile

把上面的配置文件复制到容器中对应的位置

FROM hub.c.163.com/library/nginx

MAINTAINER peter

RUN rm /etc/nginx/conf.d/default.conf

ADD default.conf /etc/nginx/conf.d/

COPY . /usr/share/nginx/html/

Shell脚本

此处我们在服务器上提前放置了文件,进行复制到使用,Docker容器部署

#生成git commit version

cd /data/appdata/jenkins_home/workspace/c2-commons/target/site/apidocs/

echo $GIT_COMMIT > currentversion.html

#准备Dockerfile与 nginx的配置文件

cp /data/appdata/jenkins_home/workspace/ying-ji-pc-web-testing/docker/default.conf /data/appdata/jenkins_home/workspace/c2-commons/target/site/apidocs/default.conf

cp /data/appdata/jenkins_home/workspace/ying-ji-pc-web-testing/docker/Dockerfile /data/appdata/jenkins_home/workspace/c2-commons/target/site/apidocs/Dockerfile

#容器名称

containername=c2-commons-api-doc

if [ "$(docker ps -q -f name=$containername)" ]; then

docker stop $containername

if [ "$(docker ps -aq -f status=exited -f name=$containername)" ]; then

# cleanup

docker rm $containername

fi

fi

if [ "$(docker ps -aq -f status=exited -f name=$containername)" ]; then

# cleanup

docker rm $containername

fi

[ -z $(docker images -q $containername) ] || docker rmi $containername

docker build -t $containername .

#可定义端口

docker run -d -p 30001:8080 -m='1g' --name $containername $containername


如下图,生产环境不能使用root账户部署,需要单独新建账户与配置权限

最终Docker部署效果

然后访问URL,可以看到HTML已经部署于nginx服务器运行于docker容器上

http://172.24.1.62:30001/

部署到Minio/S3的公共桶

minio版本

"architecture": "x86_64",

"build-date": "2021-10-26T13:03:06.167238",

"com.redhat.build-host": "cpt-1006.osbs.prod.upshift.rdu2.redhat.com",

"com.redhat.component": "ubi8-minimal-container",

"com.redhat.license_terms": "https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI",

"description": "MinIO object storage is fundamentally different. Designed for performance and the S3 API, it is 100% open-source. MinIO is ideal for large, private cloud environments with stringent security requirements and delivers mission-critical availability across a diverse range of workloads.",

"distribution-scope": "public",

"io.k8s.description": "The Universal Base Image Minimal is a stripped down image that uses microdnf as a package manager. This base image is freely redistributable, but Red Hat only supports Red Hat technologies through subscriptions for Red Hat products. This image is maintained by Red Hat and updated regularly.",

"io.k8s.display-name": "Red Hat Universal Base Image 8 Minimal",

"io.openshift.expose-services": "",

"io.openshift.tags": "minimal rhel8",

"maintainer": "MinIO Inc <dev@min.io>",

"name": "MinIO",

"release": "RELEASE.2022-01-04T07-41-07Z",

"summary": "MinIO is a High Performance Object Storage, API compatible with Amazon S3 cloud storage service.",

"url": "https://access.redhat.com/containers/#/registry.access.redhat.com/ubi8-minimal/images/8.4-212",

"vcs-ref": "7256039d3c371a38cf13906dcf5688c19700c73b",

"vcs-type": "git",

"vendor": "MinIO Inc <dev@min.io>",

"version": "RELEASE.2022-01-04T07-41-07Z"

Docker 命令部署Minio

docker run --net=host -p 9001:9000 -p 9999:9999 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=minioadmin"  -e "MINIO_SECRET_KEY=2vw22vasdfswe22sl" -v /data/appdata/minio/data:/data  -v /data/appdata/minio/config:/root/.minio   minio/minio server /data --console-address ":9999" -address ":9001"

桶设置

名称:publichtml

Access Policy: Public

把javadoc生成html部署到S3存储中,可以公开访问

Minio示例自动上传完成后结果截图

Jenkins 配置发布文件到Minio

这是使用插件,可以使用Minio Cli 更新灵活的上传文件

Javadoc的部署到S3后效果

http://172.24.1.62:9001/publichtml/apidocs/index.html

单独的HTML站点可以部署到S3的公共桶效果

http://172.24.1.62:9001/publichtml/index.html今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章:
领导人怎样带领好团队
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变
Openshift与Kubernetes的区别

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。

有关Jenkins自动化部署javadoc到web站点的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  3. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  4. 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

  5. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  6. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

  7. ruby - 如何配置 Ruby Mechanize 代理以通过 Charles Web 代理工作? - 2

    我正在使用Ruby/Mechanize编写一个“自动填写表格”应用程序。它几乎可以工作。我可以使用精彩CharlesWeb代理以查看服务器和我的Firefox浏览器之间的交换。现在我想使用Charles查看服务器和我的应用程序之间的交换。Charles在端口8888上代理。假设服务器位于https://my.host.com。.一件不起作用的事情是:@agent||=Mechanize.newdo|agent|agent.set_proxy("my.host.com",8888)end这会导致Net::HTTP::Persistent::Error:...lib/net/http/pe

  8. ruby - 在 ruby​​ 中使用自动创建插入数组 - 2

    我想知道是否可以通过自动创建数组来插入数组,如果数组不存在的话,就像在PHP中一样:$toto[]='titi';如果尚未定义$toto,它将创建数组并将“titi”压入。如果已经存在,它只会推送。在Ruby中我必须这样做:toto||=[]toto.push('titi')可以一行完成吗?因为如果我有一个循环,它会测试“||=”,除了第一次:Person.all.eachdo|person|toto||=[]#with1billionofperson,thislineisuseless999999999times...toto.push(person.name)你有更好的解决方案吗?

  9. 【自动驾驶环境感知项目】——基于Paddle3D的点云障碍物检测 - 2

    文章目录1.自动驾驶实战:基于Paddle3D的点云障碍物检测1.1环境信息1.2准备点云数据1.3安装Paddle3D1.4模型训练1.5模型评估1.6模型导出1.7模型部署效果附录show_lidar_pred_on_image.py1.自动驾驶实战:基于Paddle3D的点云障碍物检测项目地址——自动驾驶实战:基于Paddle3D的点云障碍物检测课程地址——自动驾驶感知系统揭秘1.1环境信息硬件信息CPU:2核AI加速卡:v100总显存:16GB总内存:16GB总硬盘:100GB环境配置Python:3.7.4框架信息框架版本:PaddlePaddle2.4.0(项目默认框架版本为2.3

  10. ruby-on-rails - 自动完成搜索的 Rails 实现 - 2

    我不确定如何为我的搜索功能添加自动完成表单。"get"do%>nil%>我有一个具有自定义操作的Controllerdefquery@users=Search.user(params[:query])@article=Search.article(params[:query])end模型如下:defself.user(search)ifsearchUser.find(:all,:conditions=>['first_nameLIKE?',"%#{search}%"])elseUser.find(:all)endenddefself.article(search)ifsearchArt

随机推荐