|
|
第1行: |
第1行: |
− | | + | =ins= |
− | 仔细总结一下,我们会发现,除了编写代码,我们每天有相当一部分时间花在了编 译、运行单元测试、生成文档、打包和部署等烦琐且不起眼的工作上,这就是构建。如果我们现在还手工这样做,那成本也太高了,于是有人用软件的方法让这一系 列工作完全自动化,使得软件的构建可以像全自动流水线一样,只需要一条简单的命令,所有烦琐的步骤都能够自动完成,很快就能得到最终结果。
| |
− | | |
− | Maven真比自己的“规范化Ant”强大?其实他不知道自己只是在重新发明轮子,Maven已经有一大把现成的插件,全世界都在用,你自己不用写任何代码!
| |
− | | |
− | | |
− | =常用CI/CD= | |
− | 最最流行的,也是使用最多的Jenkins
| |
− | 有着持续集成DNA的ThoughtWorks GO。理念:"Deployment as pipeline" (华为容器平台应该是基于GO做的二次开发实现)
| |
− | Atlassian工具链之一的Bamboo
| |
− | 与Gitlab紧密集成的Gitlab CI
| |
− | 专为开源打造的Travis CI,与Github紧密集成
| |
− | 使用Python语言实现的Buildbot,相信Pythoner看到会喜欢
| |
− | | |
− | =安装=
| |
− | == 通过docker安装==
| |
− | [[基于Docker的Jenkins持续集成]]
| |
− | | |
− | ==普通安装已放弃的方法==
| |
− | ip 192.168.0.16
| |
− | | |
| <pre> | | <pre> |
− | docker pull jenkins
| |
− |
| |
− | [root@localhost ~]# docker images
| |
− | REPOSITORY TAG IMAGE ID CREATED SIZE
| |
− | jenkins latest cd14cecfdb3a 2 weeks ago 696MB
| |
− |
| |
− | docker run --name=jenkins -it -u root -d -p 8080:8080 -p 50000:50000 -v /data/jenkins:/var/jenkins_home cd14cecfdb3a
| |
− |
| |
− | --name=jenkins 命名
| |
− | -it 交互模式运行
| |
− | -u root root权限
| |
− | -d 后台运行
| |
− | -p 8080:8080 映射端口
| |
− | -p 50000:50000 映射端口
| |
− | -v /data/jenkins:/var/jenkins_home 映射目录
| |
− | 3f08dc4f3f5d 本地镜像ID docker images name 命令可查看ID eg #docker images jenkins
| |
− |
| |
− |
| |
− | #官方
| |
− | mkdir -p /data/jenkins-data
| |
− | docker run \
| |
− | --name=jenkins \
| |
− | -u root \
| |
− | --rm \
| |
− | -d \
| |
− | -p 8080:8080 \
| |
− | -p 50000:50000 \
| |
− | -v /data/jenkins-data:/var/jenkins_home \
| |
− | -v /var/run/docker.sock:/var/run/docker.sock \
| |
− | jenkinsci/blueocean
| |
− |
| |
− |
| |
| | | |
− | #在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:
| + | mkdir docker4jenkins |
− | $docker run --restart=always
| + | cd docker4jenkins |
− | #如果已经启动了则可以使用如下命令: | + | #mkdir -p /data/jenkins |
− | $docker update --restart=always <CONTAINER ID>
| |
| | | |
| | | |
| | | |
− | 登入容器:
| + | vi docker-compose.yml |
− | docker exec -it jenkins /bin/bash | |
| | | |
| + | services: |
| + | jenkins: |
| + | #image: jenkins/jenkins:lts |
| + | image: jenkins/jenkins:2.235.5-lts-alpine |
| + | ports: |
| + | - 7099:8080/tcp |
| + | - 50000:50000/tcp |
| + | environment: |
| + | TZ: Asia/Shanghai |
| + | restart: always |
| + | volumes: |
| + | #- /data/jenkins:/var/jenkins_home:rw |
| + | - jenkins_home:/var/jenkins_home:rw |
| + | version: '3.0' |
| + | volumes: |
| + | jenkins_home: |
| + | driver: local |
| + | |
| + | |
| + | #run |
| + | docker-compose up -d jenkins |
| + | |
| + | |
| + | 密码就查看logs |
| | | |
| + | f47e158768be4c2ba0c891396cf5a55f |
| + | jenkins_1 | |
| + | jenkins_1 | This may also be found at: /var/jenkins_home/secrets/initialAdminPassword |
| + | jenkins_1 | |
| + | |
| + | |
| + | docker run --name=jenkins -it -u root -d -p 8080:8080 -p 50000:50000 -v /data/jenkins:/var/jenkins_home 3f08dc4f3f5d |
| | | |
− | 同步容器时间
| |
− | 在Dockerfile中加入
| |
− | RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && ntpdate cn.pool.ntp.org
| |
− | 或
| |
− | 容器运行后把容主机的/usr/share/zoneinfo/Asia/Shanghai 复制到容器的/etc/localtime
| |
| | | |
− | #先cp 到 /data/jenkins
| + | docker-compose up -d |
− | cp /usr/share/zoneinfo/Asia/Shanghai /data/jenkins
| |
| | | |
− | plubs
| |
− | Publish Over SSH
| |
| | | |
− |
| |
− | Maven Integration
| |
| | | |
− | Build
| + | cat initialAdminPassword |
− | clean install
| + | 05765dd93d604cd094b516ba9cc06c1a |
− | </pre>
| |
| | | |
| + | 重装要删除volumes 然后要重启 docker |
| + | /home/data/docker/volumes/docker4jenkins_jenkins_home/ |
| | | |
− | [https://jenkins.io/zh/doc/book/installing/#docker 安装Jenkins zh]
| + | 如果默认 在这个目录 |
| + | /var/lib/docker/volumes |
| | | |
− | http://cn.jenkins.io/doc/book/installing/
| |
| | | |
− | 安装请见 [[Docker入门]]
| |
| | | |
− | [http://www.cnblogs.com/stulzq/p/8627360.html 使用Docker安装Jenkins]
| |
| | | |
− | [https://www.cnblogs.com/stulzq/p/9297260.html Jenkins 集群搭建]
| + | docker-compose up -d |
| + | ERROR: The Compose file './docker-compose.yml' is invalid because: |
| + | Unsupported config option for services.jenkins: 'name' |
| | | |
− | =jenkins使用=
| |
| | | |
− | <pre>
| |
− | 要先安装maven 什么的
| |
| | | |
| | | |
− | Build
| |
− | Root POM pom.xml
| |
− | Goals and options clean install
| |
| | | |
| | | |
− | Post Steps
| |
− | Ex shell
| |
− | cd /var/jenkins_home/workspace/doll-api-test/target
| |
− | | |
| | | |
| + | 不用 volumes 会报错 |
| + | [root@prod-cailuw-marke-lvs02 docker4jenkins]# docker logs 7444b6cf02a2 |
| + | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied |
| + | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions? |
| + | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied |
| + | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions? |
| + | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied |
| | | |
− | sen build aritcle
| + | 居然再来一次 没有初始化界面 ? |
| | | |
− | ex command #记得要要全局那加ssh server
| + | firewall-cmd --permanent --add-port=7099/tcp |
| + | firewall-cmd --reload |
| | | |
| + | 还是不通 只能作域名了喽 hostname |
| | | |
| | | |
| </pre> | | </pre> |
| | | |
− | ==gradle == | + | = 常用命令= |
− | Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。
| + | 重启 |
− | 当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。
| + | http://localhost:8080/restart http://localhost:8080/reload |
− | | + | =install plugins= |
− | 和maven同级,更简洁一些
| |
− | | |
− | | |
− | https://docs.gradle.org/current/userguide/userguide.html
| |
− | | |
| ==maven== | | ==maven== |
− | <pre>
| |
− |
| |
− | 我试过 好像不用安装 jdk的呀 docker化的jenkins
| |
− |
| |
− | 安装在configureTools 全局配置那里 要加上maven 和填写版本 以这个为目录名 例如下面的maven3.6.2
| |
− |
| |
− |
| |
− |
| |
− | Build->Goals and options ->clean install -Pbeta -Dmaven.test.skip=true
| |
− | </pre>
| |
| | | |
− | [https://blog.csdn.net/xlgen157387/article/details/68961371 Jenkins部署Maven多环境项目(dev、beta、prod)的参数设置]
| + | === ins maven=== |
| + | 因为jenkins本身不带maven插件,所以需要自己安装下,由于我们的虚拟机中是没有直接安装maven软件的,我们可以在全局工具配置中安装maven, 选择一个合适的版本,勾选自动安装,之后直接保存,需注意的是,现在jenkins并不会立即给你安装maven软件 |
| | | |
− | [https://blog.csdn.net/u011781521/article/details/76696677 Jenkins系列(三)----Maven项目配置详解]
| + | 这是要做的动作 note |
| + | 接下来我们在插件管理中查找maven插件,我们选择好Maven Integration plugin插件,然后点击直接安装 |
| | | |
| + | ===配置maven=== |
| + | 大家都知道我们要从maven库下载代码需要配置setting.xml,用jenkins时也需要把setting.xml配置好。在目录/docker/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/conf下修改setting.xml文件 |
| | | |
− | ===maven 配置文件 ===
| |
− | <pre>maven 配置 可以在母机修改 注意 要先至少跑个工程后 才会安装maven 生成这个目录了
| |
| | | |
− | 有时要密码的 ,格式要小心 烦死了
| + | 新建 就可以看到 列表 有 构建一个maven 项目 安装成功 |
| | | |
− | /data/docker/volumes/docker4jenkins_jenkins_home/_data/tools/hudson.tasks.Maven_MavenInstallation/maven/conf/settings.xml
| + | ====maven 配置文件 ==== |
| + | <pre>maven 配置 可以在母机修改 |
| | | |
| /docker/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/conf下修改setting.xml文件。 | | /docker/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/conf下修改setting.xml文件。 |
| 母机可能的目录 | | 母机可能的目录 |
− | /home/data/docker/volumes/docker4jenkins_jenkins_home/_data/tools/hudson.tasks.Maven_MavenInstallation/maven3.6.2/conf | + | /home/data/docker/volumes/docker4jenkins_jenkins_home/_data/tools/hudson.tasks.Maven_MavenInstallation/maven3.6.2/conf</pre> |
− | | |
− | | |
| | | |
− | 位置
| + | ==JDK== |
− | 153 <mirror>
| |
− | 154 <id>mirrorId</id>
| |
− | 155 <mirrorOf>repositoryId</mirrorOf>
| |
− | 156 <name>Human Readable Name for this Mirror.</name>
| |
− | 157 <url>http://my.repository.com/repo/path</url>
| |
− | 158 </mirror>
| |
− | 159 -->
| |
− | 160 <mirror>
| |
− | 161 <id>nexus</id>
| |
− | 162 <mirrorOf>*</mirrorOf>
| |
− | 163 <url>http://192.168.4.189:8081/repository/maven-public/</url>
| |
− | 164 </mirror>
| |
− | 165 </mirrors>
| |
− | | |
− | | |
− | 公用的方便安装的如下配置
| |
− | <mirrors>
| |
− | <!-- mirror
| |
− | | Specifies a repository mirror site to use instead of a given repository. The repository that
| |
− | | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| |
− | | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
| |
− | |
| |
− | <mirror>
| |
− | <id>mirrorId</id>
| |
− | <mirrorOf>repositoryId</mirrorOf>
| |
− | <name>Human Readable Name for this Mirror.</name>
| |
− | <url>http://my.repository.com/repo/path</url>
| |
− | </mirror>
| |
− | -->
| |
− | <mirror>
| |
− | <id>alimaven</id>
| |
− | <name>aliyun maven</name>
| |
− | <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
| |
− | <mirrorOf>central</mirrorOf>
| |
− | </mirror>
| |
− | </mirrors>
| |
− | | |
− | | |
− | | |
− | | |
− | #lx
| |
− | <servers>
| |
− | <server>
| |
− | <id>nexus</id>
| |
− | <username>admin</username>
| |
− | <password>lxtxadmin123</password>
| |
− | </server>
| |
− | </servers>
| |
− | | |
− | <mirrors>
| |
− | <mirror>
| |
− | <id>nexus</id>
| |
− | <mirrorOf>*</mirrorOf>
| |
− | <url>http://192.168.4.189:8081/repository/maven-public/</url>
| |
− | </mirror>
| |
− | <!-- <mirror>-->
| |
− | <!-- <id>nexus-aliyun</id>-->
| |
− | <!-- <mirrorOf>central</mirrorOf>-->
| |
− | <!-- <name>Nexus aliyun</name>-->
| |
− | <!-- <url>http://maven.aliyun.com/nexus/content/groups/public</url>-->
| |
− | <!-- </mirror>-->
| |
− | | |
− | </mirrors>
| |
− | | |
− | | |
− | </pre>
| |
− | [https://blog.csdn.net/w13511069150/article/details/93161141 Jenkins修改Maven配置]
| |
− | | |
− | [https://blog.csdn.net/xxsstf/article/details/84991931 Jenkins使用, maven插件配置修改]
| |
− | | |
− | | |
− | [https://yq.aliyun.com/articles/752222 Maven国内可用下载速度快的仓库镜像(阿里Maven镜像地址)]
| |
− | | |
− | [https://www.cnblogs.com/xiao987334176/p/11433636.html Jenkins配置maven]
| |
− | | |
− | ===snapshot快照仓库和release发布仓库=== | |
− | maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版 本,release正式仓库则是用来保存稳定的发行版本。定义一个组件/模块为快照版本,只需要在pom文件中在该模块的版本号后加上-SNAPSHOT即可(注意这里必须是大写)。release版本不允许修改,每次进行release版本修改,发布必须提升版本号。而snapshot一般是开发过程中的迭代版本,snapshot更新后,引用的项目可以不修改版本号自动下载构建。
| |
− | | |
− | [https://www.cnblogs.com/molao-doing/articles/6379216.html MAVEN snapshot快照和release发布库的区别、作用]
| |
− | | |
− | [https://www.cnblogs.com/EasonJim/p/6852840.html Maven快照机制(SNAPSHOT)]
| |
− | | |
− | [http://www.huangbowen.net/blog/2016/01/29/understand-official-version-and-snapshot-version-in-maven/ 理解Maven中的SNAPSHOT版本和正式版本]
| |
− | | |
− | ==git branch==
| |
− | 这里应该 填写上操作过程 在我的geany上
| |
− | | |
− | [https://blog.csdn.net/jackyzheng/article/details/78750047 goodJenkins Git Parameter 插件配置过程]
| |
− | | |
− | [https://my.oschina.net/u/3493518/blog/1510531 Jenkins插件之——git Parameter插件]
| |
− | | |
− | | |
− | [https://blog.csdn.net/hwhua1986/article/details/53841741 Jenkins:使用Git Parameter插件实现tag或分支的选择性构建]
| |
− | | |
− | [https://blog.csdn.net/u012076316/article/details/52056107 jenkins构建时支持git选择分支]
| |
− | | |
− | [https://blog.csdn.net/qq_20641565/article/details/79132797 jenkins插件Git Parameter Plug-In分支构建项目]
| |
− | | |
− | [http://buxin-2008.iteye.com/blog/2357340 jenkins进行git多分支的docker镜像构建]
| |
− | | |
− | ==android==
| |
− | [ https://blog.csdn.net/youshi520000/article/details/81027940 Android 使用 Jenkins 实现自动化打包【流程】&【踩坑]
| |
− | | |
− | | |
− | == Jenkins的初级应用(2)-Invoke Phing targets==
| |
− | [https://www.cnblogs.com/hodge01/p/9367498.html Jenkins的初级应用(2)-Invoke Phing targets]
| |
− | | |
− | ==启动==
| |
− | ===supervisor===
| |
| <pre> | | <pre> |
− | #配合supervisor,把Jenkins直接变成一个服务。
| + | 1.JDK和JRE的区别 |
− | #可以在Linux上创建一个ci用户,然后,用supervisor启动并指定9090端口:
| + | JRE: Java Runtime Environment |
− | # /etc/supervisor/conf.d/ci.conf
| + | JDK:Java Development Kit |
| | | |
− | [program:ci]
| + | JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。 |
− | command=java -jar /home/ci/jenkins.war --httpPort=9090
| + | JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。 |
− | user=ci
| + | 如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。 |
− | autostart=true
| |
− | autorestart=true
| |
− | startsecs=30
| |
− | startretries=5
| |
− | </pre>
| |
| | | |
− | =权限控制=
| + | Jenkins--> |
| + | Update Center--> |
| + | 安装/更新 插件中 -> |
| + | Oracle Java SE Development Kit Installer |
| + | 可见 oracle jdk安装了 |
| | | |
− | ==Role-based Authorization Strategy==
| + | 注意,自动安装jdk需要你填入oracle的账号密码,这样Jenkins才能自动帮你到oracle安装。如果没有oracle账号</pre> |
| | | |
− | 可选插件-->Role-based Authorization Strategy
| + | [https://blog.csdn.net/anning_88/article/details/50635940 jenkins配置多个JDK] |
| | | |
− | | + | ==ssh plgins== |
− | 超级用户 root root
| |
− | other evan
| |
− | group ops java admin
| |
− | | |
− | ==基于项目(job)== | |
| <pre> | | <pre> |
− | Project roles 创建一个 dev 只配置所以 dev开头的内网项目
| + | --> Manager plugin -> Publish Over SSH |
| | | |
− | Role to add dev
| + | usage |
− | Pattern dev.* #配置
| |
| | | |
− | 选择【 Manage Roles】
| + | 全局配置 -》SSH Servers |
− | 在【Global roles】创建一个新的全局角色 anyone,该角色不开放系统权限,只读.
| + | Name 可以是别名 hostname 是ip |
| + | |
| + | ssh 那要添加你的pri key 远程服务器添加pubkey </pre> |
| | | |
− | 然后把你的号添加到 Global roles
| + | [https://tendcode.com/article/Publish-Over-SSH/ 【Jenkins 插件】使用 Publish Over SSH 远程传输文件和自动部署] |
| | | |
− | Assign Roles-- Item roles 里面 加入你的号 并勾上 dev
| + | ==dokcer 插件 == |
| + | 为了发布 docker |
| | | |
| + | =生成SSHKey= |
| | | |
− | 注意: Global roles 必要有 你要给别人用的用户名,不登录了什么 都没提示全局没有读权限 </pre>
| + | <pre>先进入容器 |
| | | |
− | ==权限see also==
| + | docker exec -it jenkins /bin/bash |
− | | + | 进入容器后生成sshkey |
− | [https://blog.csdn.net/Gred01/article/details/78587290 Jenkins教程四基于Role-based Authorization Strategy的用户权限管理]
| |
− | | |
− | [https://my.oschina.net/u/3413394/blog/1576357 enkins教程四 基于【Role-based Authorization Strategy】的用户权限管理]
| |
− | | |
− | [https://www.jianshu.com/p/7e148bcfb96e Jenkins使用教程之用户权限管理(包含插件的安装)]
| |
− | | |
− | [https://www.jianshu.com/p/6c274d9b22ad Jenkins自动化部署-权限管控篇 (六)]
| |
− | | |
− | =插件=
| |
− | | |
− | ==dashboard 插件==
| |
− | dashboard 插件 [https://wiki.jenkins-ci.org/display/JENKINS/Dashboard+View Dashboard View]
| |
− | 用来自定义自己的主页,例如对下列的 jenkins 的主页
| |
| | | |
− | == Wall display==
| + | |
− | 用来将 jobs 的状态更加直观地显示在大屏幕上
| |
| | | |
− | === ssh server===
| + | 获取公钥 |
| + | 1.进入容器 |
| + | 2. 直接cat 一下 mount的目录 eg tail /var/lib/docker/volumes/jenkins/_data/.ssh/id_rsa.pub</pre> |
| | | |
− | ====troubleshooting==== | + | =jenkins时区设置= |
| <pre> | | <pre> |
| | | |
− | jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [win8r2]. Message [USERAUTH fail]]
| + | 【系统管理】-【脚本命令行】里运行 |
− | 在jenkins 上使用publish over ssh ,报上述错误,
| + | System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai') |
− | | |
− | ssh server
| |
− | 1. 配置里面添加 jenkins pri key 2.远程被 jenkins 的远程那里添加jenkin的pub key
| |
− | | |
− | </pre>
| |
− | https://ask.csdn.net/questions/379784
| |
− | | |
− | =NODE=
| |
− | [https://blog.csdn.net/wanchaopeng/article/details/87934293 jenkins打包nodejs]
| |
| | | |
− | [https://www.cnblogs.com/vipzhou/p/7890016.html jenkins学习之自动打包构建nodejs应用]
| + | 如果想永久 还是加在 yaml文件里 |
| | | |
− | =xk=
| |
− | <pre>
| |
− | dev 开发环境
| |
− | beta 测试环境
| |
− | release 正式环境
| |
− | </pre>
| |
| | | |
− | =DB =
| + | 时间问题 以前思源的文档有 |
| + | -v /etc/localtime:/etc/localtime 让容器使用和服务器同样的时间设置</pre> |
| | | |
− | [https://www.jianshu.com/p/e0c1fbc98f0d Jenkins自动化部署-数据库篇 (五)]
| |
| | | |
− | [https://stackoverrun.com/cn/q/11775565 需要在Jenkins管道脚本中执行SQL脚本的工作策略]
| + | https://wiki.jenkins.io/display/JENKINS/Change+time+zone |
| | | |
− | [https://www.zhihu.com/question/61737048 jenkins 进行持续集成的时候,关于SQL执行的问题]
| + | =trouble = |
| | | |
− | [https://www.jianshu.com/p/e0c1fbc98f0d Jenkins自动化部署-数据库篇 (五)]
| + | 第二天不能登录 这个是输入错了吧 |
| + | Invalid username or password |
| | | |
− | =磁盘处理=
| |
− | [[Jenkins服务器磁盘空间管理]]
| |
| | | |
− | =trouble shooting= | + | ==Jenkins安装插件提速== |
− | == WeChat.java:[266,43] 找不到符号 ==
| |
| <pre> | | <pre> |
− | [ERROR] /root/.jenkins/workspace/release_read/xtwl_service/src/main/java/org/platform_service/universal/pay/WeChat.java:[266,43] 找不到符号
| |
| | | |
− | Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project xtwl_service: Compilation failure
| + | docker-compose exec --user root jenkins bash |
− | | + | |
− | 原来是我用了 clean package -Prelease 之前还替换了配置文件 哈哈 </pre>
| + | cd /var/jenkins_home/updates |
| + | |
| + | sed -i 's#http://updates.jenkins-ci.org/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json |
| | | |
− | == offline ==
| + | http://192.168.10.54:7099/restart |
− | 点击Continue,大部分人都会出现这个界面,毕竟在天朝,我们先选择跳过
| |
| | | |
| + | 重试生效 |
| | | |
− | ==project lxtx-hello-admin-dao: Could not resolve dependencies for project com.lxtx.hello:lxtx ==
| |
− | <pre>
| |
− | Waiting for Jenkins to finish collecting data
| |
− | [ERROR] Failed to execute goal on project lxtx-hello-admin-dao: Could not resolve dependencies for project com.lxtx.hello:lxtx-hello-admin-dao:jar:0.0.1: Could not find artifact com.lxtx.im:lxtx-admin-base-service:jar:0.1.6 in central (https://repo.maven.apache.org/maven2) -> [Help 1]
| |
− | [ERROR]
| |
− | [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
| |
− | [ERROR] Re-run Maven using the -X switch to enable full debug logging.
| |
− | [ERROR]
| |
− | [ERROR] For more information about the errors and possible solutions, please read the following articles:
| |
− | [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
| |
− | [ERROR]
| |
− | [ERROR] After correcting the problems, you can resume the build with the command
| |
− | [ERROR] mvn <goals> -rf :lxtx-hello-admin-dao
| |
| </pre> | | </pre> |
| + | https://blog.csdn.net/weixin_43557605/article/details/104587304 |
| | | |
− | === soult=== | + | ==Jenkins忘记密码 == |
| <pre> | | <pre> |
| | | |
− | docker dir
| + | #note 这是基于docker的jenkins |
− | /var/jenkins_home/.m2/settings.xml | + | jenkins@c58dc265c073:~/users$ pwd |
| + | /var/jenkins_home/users |
| | | |
− | 母鸡目录
| + | cat users.xml |
− | /volumes/docker4jenkins_jenkins_home/_data/.m2/settings.xml | + | <entry> |
| + | <string>lxtxadmin</string> |
| + | <string>lxtxadmin_7295399102977240796</string> |
| | | |
− | <?xml version="1.0" encoding="UTF-8"?>
| + | cd lxtxadmin_7295399102977240796/ |
− | | + | |
− | <!--
| + | cat config.xml | grep passwordHash |
− | Licensed to the Apache Software Foundation (ASF) under one
| + | <passwordHash>#jbcrypt:$2a$10$h/LCaTsmNht3F04LbZPsY.OtTyx1e/P7pit6Te7KjGVXkhe/caqyW</passwordHash> |
− | or more contributor license agreements. See the NOTICE file
| |
− | distributed with this work for additional information
| |
− | regarding copyright ownership. The ASF licenses this file
| |
− | to you under the Apache License, Version 2.0 (the
| |
− | "License"); you may not use this file except in compliance
| |
− | with the License. You may obtain a copy of the License at
| |
− | | |
− | http://www.apache.org/licenses/LICENSE-2.0
| |
| | | |
− | Unless required by applicable law or agreed to in writing,
| |
− | software distributed under the License is distributed on an
| |
− | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
| |
− | KIND, either express or implied. See the License for the
| |
− | specific language governing permissions and limitations
| |
− | under the License.
| |
− | -->
| |
| | | |
− | <!--
| + | sed -i 's!#jbcrypt:$2a$10$h/LCaTsmNht3F04LbZPsY.OtTyx1e/P7pit6Te7KjGVXkhe/caqyW!#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS!' config.xml |
− | | This is the configuration file for Maven. It can be specified at two levels:
| |
− | |
| |
− | | 1. User Level. This settings.xml file provides configuration for a single user,
| |
− | | and is normally provided in ${user.home}/.m2/settings.xml. | |
− | |
| |
− | | NOTE: This location can be overridden with the CLI option:
| |
− | |
| |
− | | -s /path/to/user/settings.xml
| |
− | | | |
− | | 2. Global Level. This settings.xml file provides configuration for all Maven
| |
− | | users on a machine (assuming they're all using the same Maven
| |
− | | installation). It's normally provided in
| |
− | | ${maven.home}/conf/settings.xml.
| |
− | |
| |
− | | NOTE: This location can be overridden with the CLI option:
| |
− | |
| |
− | | -gs /path/to/global/settings.xml
| |
− | |
| |
− | | The sections in this sample file are intended to give you a running start at
| |
− | | getting the most out of your Maven installation. Where appropriate, the default
| |
− | | values (values used when the setting is not specified) are provided.
| |
− | |
| |
− | |-->
| |
− | <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
| |
− | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
| |
− | xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
| |
− | <!-- localRepository
| |
− | | The path to the local repository maven will use to store artifacts.
| |
− | |
| |
− | | Default: ${user.home}/.m2/repository
| |
− | -->
| |
− | <localRepository>D:\tools\apache-maven-3.3.9-bin\apache-maven-3.3.9\repository</localRepository>
| |
| | | |
| + | 后者是111111的hash值 |
| | | |
− | <!-- interactiveMode
| + | docker-compose restart |
− | | This will determine whether maven prompts you when it needs input. If set to false,
| + | 当然 最后记得要改回得比较强的密码喽 |
− | | maven will use a sensible default value, perhaps based on some other setting, for
| |
− | | the parameter in question.
| |
− | |
| |
− | | Default: true
| |
− | <interactiveMode>true</interactiveMode>
| |
− | -->
| |
− | | |
− | <!-- offline
| |
− | | Determines whether maven should attempt to connect to the network when executing a build.
| |
− | | This will have an effect on artifact downloads, artifact deployment, and others.
| |
− | |
| |
− | | Default: false
| |
− | <offline>false</offline>
| |
− | -->
| |
− | | |
− | <!-- pluginGroups
| |
− | | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
| |
− | | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
| |
− | | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
| |
− | |-->
| |
− | <pluginGroups>
| |
− | <!-- pluginGroup
| |
− | | Specifies a further group identifier to use for plugin lookup.
| |
− | <pluginGroup>com.your.plugins</pluginGroup>
| |
− | -->
| |
− | <pluginGroup>org.sonatype.plugins</pluginGroup>
| |
− | <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
| |
− | </pluginGroups>
| |
− | | |
− | <!-- proxies
| |
− | | This is a list of proxies which can be used on this machine to connect to the network.
| |
− | | Unless otherwise specified (by system property or command-line switch), the first proxy
| |
− | | specification in this list marked as active will be used.
| |
− | |-->
| |
− | <proxies>
| |
− | <!-- proxy
| |
− | | Specification for one proxy, to be used in connecting to the network.
| |
− | |
| |
− | <proxy>
| |
− | <id>optional</id>
| |
− | <active>true</active>
| |
− | <protocol>http</protocol>
| |
− | <username>proxyuser</username>
| |
− | <password>proxypass</password>
| |
− | <host>proxy.host.net</host>
| |
− | <port>80</port>
| |
− | <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
| |
− | </proxy>
| |
− | -->
| |
− | </proxies>
| |
− | | |
− | <!-- servers
| |
− | | This is a list of authentication profiles, keyed by the server-id used within the system.
| |
− | | Authentication profiles can be used whenever maven must make a connection to a remote server.
| |
− | |-->
| |
− | <servers>
| |
− | <!-- server
| |
− | | Specifies the authentication information to use when connecting to a particular server, identified by
| |
− | | a unique name within the system (referred to by the 'id' attribute below).
| |
− | |
| |
− | | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
| |
− | | used together.
| |
− | | -->
| |
− | <server>
| |
− | <id>nexus</id>
| |
− | <username>admin</username>
| |
− | <password>lxtxadmin123</password>
| |
− | </server>
| |
− |
| |
− | | |
− | <!-- Another sample, using keys to authenticate.
| |
− | <server>
| |
− | <id>siteServer</id>
| |
− | <privateKey>/path/to/private/key</privateKey>
| |
− | <passphrase>optional; leave empty if not used.</passphrase>
| |
− | </server>
| |
− | -->
| |
− | </servers>
| |
− | | |
− | <!-- mirrors
| |
− | | This is a list of mirrors to be used in downloading artifacts from remote repositories.
| |
− | |
| |
− | | It works like this: a POM may declare a repository to use in resolving certain artifacts.
| |
− | | However, this repository may have problems with heavy traffic at times, so people have mirrored
| |
− | | it to several places.
| |
− | |
| |
− | | That repository definition will have a unique id, so we can create a mirror reference for that
| |
− | | repository, to be used as an alternate download site. The mirror site will be the preferred
| |
− | | server for that repository.
| |
− | |-->
| |
− | <mirrors>
| |
− | <!-- mirror
| |
− | | Specifies a repository mirror site to use instead of a given repository. The repository that
| |
− | | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| |
− | | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
| |
− | |
| |
− | <mirror>
| |
− | <id>mirrorId</id>
| |
− | <mirrorOf>repositoryId</mirrorOf>
| |
− | <name>Human Readable Name for this Mirror.</name>
| |
− | <url>http://my.repository.com/repo/path</url>
| |
− | </mirror>
| |
− | -->
| |
− | <!-- | |
− | <mirror>
| |
− | <id>nexus-aliyun</id>
| |
− | <mirrorOf>central</mirrorOf>
| |
− | <name>Nexus aliyun</name>
| |
− | <url>http://maven.aliyun.com/nexus/content/groups/public</url>
| |
− | </mirror>
| |
| | | |
− | <mirror>
| |
− | <id>nexus-aliyun</id>
| |
− | <mirrorOf>central</mirrorOf>
| |
− | <name>Nexus aliyun</name>
| |
− | <url>http://maven.aliyun.com/nexus/content/groups/public</url>
| |
− | </mirror>-->
| |
− |
| |
− | <mirror>
| |
− | <id>nexus</id>
| |
− | <mirrorOf>*</mirrorOf>
| |
− | <url>http://192.168.4.189:8081/repository/maven-public/</url>
| |
− | </mirror>
| |
− | <!--
| |
− | <mirror>
| |
− | <id>repo2</id>
| |
− | <mirrorOf>central</mirrorOf>
| |
− | <name>Human Readable Name for this Mirror.</name>
| |
− | <url>http://repo2.maven.org/maven2/</url>
| |
− | </mirror> -->
| |
− | </mirrors>
| |
− |
| |
− | <!-- profiles
| |
− | | This is a list of profiles which can be activated in a variety of ways, and which can modify
| |
− | | the build process. Profiles provided in the settings.xml are intended to provide local machine-
| |
− | | specific paths and repository locations which allow the build to work in the local environment.
| |
− | |
| |
− | | For example, if you have an integration testing plugin - like cactus - that needs to know where
| |
− | | your Tomcat instance is installed, you can provide a variable here such that the variable is
| |
− | | dereferenced during the build process to configure the cactus plugin.
| |
− | |
| |
− | | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles
| |
− | | section of this document (settings.xml) - will be discussed later. Another way essentially
| |
− | | relies on the detection of a system property, either matching a particular value for the property,
| |
− | | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a
| |
− | | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.
| |
− | | Finally, the list of active profiles can be specified directly from the command line.
| |
− | |
| |
− | | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact
| |
− | | repositories, plugin repositories, and free-form properties to be used as configuration
| |
− | | variables for plugins in the POM.
| |
− | |
| |
− | |-->
| |
− | <profiles>
| |
− | <!-- profile
| |
− | | Specifies a set of introductions to the build process, to be activated using one or more of the
| |
− | | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
| |
− | | or the command line, profiles have to have an ID that is unique.
| |
− | |
| |
− | | An encouraged best practice for profile identification is to use a consistent naming convention
| |
− | | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
| |
− | | This will make it more intuitive to understand what the set of introduced profiles is attempting
| |
− | | to accomplish, particularly when you only have a list of profile id's for debug.
| |
− | |
| |
− | | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
| |
− | <profile>
| |
− | <id>jdk-1.4</id>
| |
− |
| |
− | <activation>
| |
− | <jdk>1.4</jdk>
| |
− | </activation>
| |
− |
| |
− | <repositories>
| |
− | <repository>
| |
− | <id>jdk14</id>
| |
− | <name>Repository for JDK 1.4 builds</name>
| |
− | <url>http://www.myhost.com/maven/jdk14</url>
| |
− | <layout>default</layout>
| |
− | <snapshotPolicy>always</snapshotPolicy>
| |
− | </repository>
| |
− | </repositories>
| |
− | </profile>
| |
− | -->
| |
− |
| |
− | <!--
| |
− | | Here is another profile, activated by the system property 'target-env' with a value of 'dev',
| |
− | | which provides a specific path to the Tomcat instance. To use this, your plugin configuration
| |
− | | might hypothetically look like:
| |
− | |
| |
− | | ...
| |
− | | <plugin>
| |
− | | <groupId>org.myco.myplugins</groupId>
| |
− | | <artifactId>myplugin</artifactId>
| |
− | |
| |
− | | <configuration>
| |
− | | <tomcatLocation>${tomcatPath}</tomcatLocation>
| |
− | | </configuration>
| |
− | | </plugin>
| |
− | | ...
| |
− | |
| |
− | | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to
| |
− | | anything, you could just leave off the <value/> inside the activation-property.
| |
− | |
| |
− | <profile>
| |
− | <id>env-dev</id>
| |
− |
| |
− | <activation>
| |
− | <property>
| |
− | <name>target-env</name>
| |
− | <value>dev</value>
| |
− | </property>
| |
− | </activation>
| |
− |
| |
− | <properties>
| |
− | <tomcatPath>/path/to/tomcat/instance</tomcatPath>
| |
− | </properties>
| |
− | </profile>
| |
− | -->
| |
− | <profile>
| |
− | <id>nexus</id>
| |
− | <repositories>
| |
− | <repository>
| |
− | <id>central</id>
| |
− | <url>http://central</url>
| |
− | <releases><enabled>true</enabled></releases>
| |
− | <snapshots><enabled>true</enabled></snapshots>
| |
− | </repository>
| |
− | </repositories>
| |
− | <pluginRepositories>
| |
− | <pluginRepository>
| |
− | <id>central</id>
| |
− | <url>http://central</url>
| |
− | <releases><enabled>true</enabled></releases>
| |
− | <snapshots><enabled>true</enabled></snapshots>
| |
− | </pluginRepository>
| |
− | </pluginRepositories>
| |
− | </profile>
| |
− | </profiles>
| |
− |
| |
− | <!-- activeProfiles
| |
− | | List of profiles that are active for all builds.
| |
− | | -->
| |
− | <activeProfiles>
| |
− | <activeProfile>nexus</activeProfile>
| |
− | </activeProfiles>
| |
− |
| |
− | </settings>
| |
| </pre> | | </pre> |
| | | |
− | ==[[Jenkins更多错误]]==
| + | [https://www.jianshu.com/p/e8bc90a1aad8 Jenkins - Jenkins 忘记密码] |
| | | |
− | =进阶= | + | ==该Jenkins实例似乎已离线。 == |
− | [https://www.cnblogs.com/shenh/p/8963688.html jenkins + pipeline构建自动化部署]
| + | <pre> |
| + | Jenkins 2.176.3 |
| | | |
| + | 原因 近来网络管理又严格了 |
| | | |
− | [https://blog.csdn.net/wh211212/article/details/77482138 Jenkins + Pipeline 构建流水线发布]
| + | updates/default.json |
| | | |
| + | jenkins在下载插件之前会先检查网络连接,其会读取这个文件中的网址。默认是: |
| + | 访问谷歌 |
| | | |
− | [https://www.cnblogs.com/puresoul/p/4828913.html Jenkins内置环境变量的使用]
| + | 处理办法 改成可以直接访问的就行了 |
| | | |
− | https://www.w3cschool.cn/jenkins/jenkins-5h3228n2.html
| + | jenkins@jenkins-hellotest:~/updates$ pwd |
| + | /var/jenkins_home/updates |
| | | |
− | =参考=
| + | sed -i 's/google/baidu/' default.json |
| | | |
− | [https://jenkins-zh.cn/ Jenkins 中文社区]
| + | </pre> |
| | | |
− | [https://www.cnblogs.com/along21/p/9724036.html Jenkins持续集成01—Jenkins服务搭建和部署]
| + | ==打开主页空白== |
| + | <pre>打开 |
| + | http://192.168.10.214:7099/pluginManager/advanced |
| | | |
− | [[Jenkins用户手册]]
| + | 最后要恢复回来 ,不然打开主页空白呢 |
| + | http://updates.jenkins.io/update-center.json |
| + | https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json |
| | | |
− | [https://jenkins.io/doc/book/installing/#docker Installing Docker]
| + | /pluginManager/advanced 改回原来的 |
| + | http://updates.jenkins.io/update-center.json |
| | | |
− | [https://blog.csdn.net/jackyzheng/article/category/6849960 jenkins docs ]
| |
| | | |
− | [http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html Maven的安装、配置及使用入门]
| + | </pre> |
− | | |
− | [https://zh.wikipedia.org/wiki/Apache_Maven Apache Maven]
| |
− | | |
− | [https://zh.wikipedia.org/wiki/Gradle Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具]
| |
− | | |
− | [https://www.jianshu.com/p/1eff16f60297 Maven 使用教程]
| |
− | | |
− | [https://www.jianshu.com/p/60fb231a160e Jenkins学习之自动构建部署maven项目 have emailetc]
| |
− | | |
− | [https://www.liaoxuefeng.com/article/001463233913442cdb2d1bd1b1b42e3b0b29eb1ba736c5e000 使用Jenkins进行持续集成]
| |
| | | |
− | [http://blog.51cto.com/fluagen/40086 学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门)]
| + | https://blog.csdn.net/harry5508/article/details/91958249 |
| | | |
− | [http://blog.51cto.com/215687833/1916915 使用Jenkins 自动部署发布]
| + | https://www.cnblogs.com/effortsing/p/10013412.html |
| | | |
− | [https://www.cnblogs.com/yjmyzz/p/jenkins-tutorial-part-1.html jenkins 入门教程(上)]
| + | https://blog.csdn.net/huoyunshen88/article/details/8509886 |
| | | |
− | [https://www.cnblogs.com/yjmyzz/p/jenkins-tutorial-part-2.html jenkins 入门教程(中)]
| + | https://www.jianshu.com/p/1e411d225186 |
| | | |
− | [https://www.cnblogs.com/yjmyzz/p/jenkins-tutorial-part-3.html jenkins 入门教程(下)]
| + | =see also= |
| + | https://hub.docker.com/r/jenkins/jenkins |
| | | |
| + | [https://www.cnblogs.com/xiaoqi/p/docker-jenkins-cicd.html Docker+Jenkins持续集成环境(1)使用Docker搭建Jenkins+Docker持续集成环境] |
| | | |
| + | [http://dockone.io/article/2594 Jenkins与Docker的持续集成实践 ] |
| | | |
− | [https://blog.csdn.net/true100/article/details/47950215 Android项目利用jinkens自动打包]
| + | http://www.itmuch.com/work/jenkins-in-action/ |
− | | |
− | [http://blog.51cto.com/linuxg/1792086 Jenkins 持续集成平台构建之使用nexus搭建maven私有仓库]
| |
− | | |
− | [https://www.liaoxuefeng.com/article/001463233913442cdb2d1bd1b1b42e3b0b29eb1ba736c5e000 liaoxuefeng使用Jenkins进行持续集成]
| |
− | | |
− | [https://blog.csdn.net/yelllowcong/article/details/78285230 Jenkins之配置Maven和JDK-yellowcong]
| |
− | | |
− | [https://www.cnblogs.com/yangxia-test/p/4354328.html Jenkins学习二:Jenkins安装与配置]
| |
− | | |
− | [https://blog.csdn.net/Gred01/article/details/78481606 基于Linux实现Jenkins+maven+git+tomcat的自动化构建部署项目]
| |
− | | |
− | [https://blog.csdn.net/gbenson/article/details/50970289 Linux平台搭建Jenkins+Maven+Shell实现自动化构建部署]
| |
− | | |
− | ==docker==
| |
− | [https://juejin.im/post/5994d93ef265da24843e416c Jenkins与Docker的持续集成实践]
| |
− | | |
− | [https://www.cnblogs.com/xuezhigu/p/6690783.html 基于Docker构建带有Rsync的Jenkins]
| |
− | | |
− | [https://www.cnblogs.com/soar1688/p/6833540.html Jenkins Docker安装及Docker build step插件部署配置]
| |
− | | |
− | [https://www.kubernetes.org.cn/5230.html 原创:jenkins+github+docker+maven自动化构建部署]
| |
− | | |
− | == 权限==
| |
− | [https://blog.whsir.com/post-1785.html jenkins权限管理,不同用户显示不同项目]
| |
− | | |
− | [https://www.cnblogs.com/zz0412/p/jenkins_jj_14.html Jenkins进阶系列之——14配置Jenkins用户和权限]
| |
− | | |
− | [https://www.jianshu.com/p/7e148bcfb96e Jenkins使用教程之用户权限管理(包含插件的安装)]
| |
− | | |
− | [https://blog.csdn.net/itfootball/article/details/71404912 Jenkins用户权限管理]
| |
− | | |
− | ==maven==
| |
− | [https://blog.csdn.net/xlgen157387/article/details/68961371 Jenkins部署Maven多环境项目(dev、beta、prod)的参数设置]
| |
| | | |
− | [http://bookong.iteye.com/blog/2036633 通过Maven和Jenkins插件解决Java项目的配置管理] | + | [https://blog.csdn.net/xxsstf/article/details/84991931 Jenkins使用, maven插件配置修改] |
| | | |
− | ==优化==
| + | [https://www.jianshu.com/p/7883c251eb09 Jenkins+maven+docker 解决项目持续集成] |
− | [http://softcook.logdown.com/posts/728344-method-for-reducing-the-jenkins-project-build-disk-space 减少jenkins项目构建磁盘空间的方法] | |
| | | |
− | [https://blog.csdn.net/ZZY1078689276/article/details/77531325 Jenkins丢弃旧的构建] | + | [https://www.jianshu.com/p/0391e225e4a6 Docker版本Jenkins的使用] |
| | | |
− | [https://blog.csdn.net/qq_27791709/article/details/78835912 Jenkins-工作区清理插件] | + | ==learn== |
| + | [https://www.cnblogs.com/dzblog/category/945869.html Jenkins学习之路] |
| | | |
| [[category:ops]] | | [[category:ops]] |