mac通过docker一键部署Jenkins

一、前言

程序猿开发任务本来就比较繁锁,如果搭建各种开源的软件还需要搜索这样那样的配置,那基本上两鬓斑白的头发基本上都快脱光了,如何找女朋友呢?难道一直和五姑娘为伴?所以自己当第一个吃螃蟹的人摸索了一些套路,编写一些简易的 shell 脚本帮我们快速的搭建服务器,猿们只要按着套路“一步一步”的操作,基本上都可以快速部署服务,也有《Jenkins自动安装脚本》,大家根据自己的实际情况进行操作。

二、系统配置

mac os:Monterey
mac version:12.4 (21F79)
mac type: MacBook Air (M1, 2020), Apple M1 docker desktop version:v4.10.0
docker version:v20.10.17
docker-compose version: v1.29.2

三、安装步骤

Dockerhub查看镜像地址

# 如果你比较懒可以使用最后的“Jenkins自动安装脚本”,mac电脑通用
https://hub.docker.com/r/jenkins/jenkins/tags

1、一键安装

1.1、下载脚本

https://gitee.com/xiaoyaojiugui/technical/blob/master/docker/foundations/cicd/jenkins

1.2、安装程序

# 跳转到指定文件夹,并执行如下命令:
sh ./jenkins.sh
1.2.1、安装程序详情
---------------函数开始执行---------------
1.1、检查必要软件,跳过此步骤,目录已存在[/Users/jason.zhuo/data/docker/apps/jdk-17]
1.2、检查必要软件,跳过此步骤,目录已存在[/Users/jason.zhuo/data/docker/apps/apache-maven-3.8.6]
1.3、检查必要软件,跳过此步骤,文件已存在[/Users/jason.zhuo/codes/leisure/doc/technical/docker/foundations/cicd/jenkins/software/jenkins.war] 2.1、执行创建容器操作,跳过此步骤,镜像已存在[jenkins/jenkins:latest]
2.2、执行创建容器操作,创建目录并授权,执行命令:sudo mkdir -p -v /Users/jason.zhuo/data/docker/volumes/jenkins/{jenkins-home,conf} && sudo chown -R jason.zhuo /Users/jason.zhuo/data/docker/volumes/jenkins
mkdir: created directory '/Users/jason.zhuo/data/docker/volumes/jenkins'
mkdir: created directory '/Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home'
mkdir: created directory '/Users/jason.zhuo/data/docker/volumes/jenkins/conf'
2.3、执行创建容器操作,执行命令:docker run -d -p 39090:8080 -p 50000:50000 -v /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home:/var/jenkins_home --name jenkins jenkins/jenkins:latest 2.4.1、执行创建容器操作,根据服务器性能调整时间,默认休息 10 秒,--> Tue 20 Sep 2022 11:12:41 AM CST <--
2.4.2、执行创建容器操作,根据服务器性能调整时间,默认休息 10 秒,--> Tue 20 Sep 2022 11:12:51 AM CST <--
2.5.1、执行创建容器操作,修改配置文件[/Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/hudson.model.UpdateCenter.xml]
2.5.2、执行创建容器操作,查看配置文件,执行命令:cat /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/hudson.model.UpdateCenter.xml | grep 'url' 2.5.3、执行创建容器操作,修改配置文件[/Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json]
sed -i "" 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json && sed -i "" 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json 2.5.5、执行创建容器操作,拷贝配置[/etc/profile]到本地并配置环境变量,执行命令:sudo docker cp $(docker ps -a | grep jenkins | awk '{print $1}'):/etc/profile /Users/jason.zhuo/data/docker/volumes/jenkins/conf/
2.6.1、执行重建容器操作,其容器为[jenkins/jenkins:latest],执行命令: docker run -d -p 39090:8080 -p 50000:50000 --privileged=true -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home:/var/jenkins_home -v /Users/jason.zhuo/data/docker/volumes/jenkins/conf/profile:/etc/profile -v /Users/jason.zhuo/data/docker/volumes/jenkins/conf/.bashrc:/root/.bashrc -v /Users/jason.zhuo/data/docker/apps/apache-maven-3.8.6:/usr/local/apps/apache-maven-3.8.6 -v /Users/jason.zhuo/data/docker/apps/jdk-17:/usr/local/apps/jdk-17 --name jenkins jenkins/jenkins:latest
2.6.2、复制Jenkins的最新war包到指定目录,执行命令:docker cp ./software/jenkins.war $(docker ps -a | grep jenkins | awk '{print $1}'):/usr/share/jenkins/jenkins.war
2.7.1、查看容器状态,执行命令:docker inspect --format='{{.State.Status}}' jenkins
2.7.2、查看容器状态,[exited],启动命令:docker start jenkins
jenkins
2.7.3、查看容器详情,执行命令:docker ps | grep jenkins/jenkins:latest 3.1、其他待执行命令,登录容器其命令为:docker exec -it -u root jenkins /bin/bash
3.2、其他待执行命令,复制最新war包其命令为:docker cp ./jenkins.war $(docker ps -a | grep jenkins | awk '{print $1}'):/usr/share/jenkins/jenkins.war
---------------函数执行完毕--------------- 注意:此处休息10秒,是因为刚启动该文件没有初始完成(hudson.model.UpdateCenter.xml)
1.2.2、下载必要软件详情
1、检查目标目录,待执行脚本的路径为[/Users/jason.zhuo/code/leisure/doc/technical/docker/foundations/cicd/software],包括如下文件:
2、检查目标目录,跳过此步骤,文件夹已存在[/Users/jason.zhuo/data/docker/apps] 3、检查Maven软件,其文件名[apache-maven-3.8.6],压缩包名[apache-maven-3.8.6-bin.tar.gz]
4、检查Maven软件,解压压缩包,执行命令:tar -zxf apache-maven-3.8.6-bin.tar.gz
5、检查Maven软件,拷贝到指定目录,执行命令:sudo cp -r apache-maven-3.8.6 /Users/jason.zhuo/data/docker/apps 6、检查JDK软件,其文件名[jdk-17],压缩包[jdk-17_linux-aarch64_bin.tar.gz]
7、检查JDK软件,解压压缩包,执行命令:tar -zxf jdk-17_linux-aarch64_bin.tar.gz
8、检查JDK软件,重命名文件,执行命令:sudo mv jdk-17.0.4.1 jdk-17
9、检查JDK软件,拷贝到指定目录,执行命令:sudo cp -r jdk-17 /Users/jason.zhuo/data/docker/apps 10、查看目标目录内容,执行命令:ls /Users/jason.zhuo/data/docker/apps

1.3、启动成功后,即可正常访问

http://localhost:39090/login

1.4、查看登录密码

docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

1.5、插件自定义安装

注意:此处不安装任何插件,因为Jenkins的官方插件下载地址速度非常慢。

1、获取密码,登录即可;
2、“选择插件来安装”而非社区推荐的插件 --> 选择“无” --> 然后点击“安装”即可;
3、创建第一个管理员账户,只有创建了新账户并成功登录后,才能执行如下《步骤1.6》



1.6、修改国内插件下载源

注意:执行完命令后请重启!执行完命令后请重启!执行完命令后请重启!

1、Jenkins的官方插件下载地址速度非常慢,需要替换成国内插件地址;
2、手动更新配置,复制《1.2.1 安装程序详情》中的《2.5.3命令》,在终端执行即可;
3、执行完以下命令,需要重启 jenkins 才能生效; # 解决打开登录界面时一直在转圈圈,程序自动更新 update-center.json
sed -i "" 's/https:\/\/updates.jenkins.io\/update-center.json/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins\/updates\/update-center.json/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-data/hudson.model.UpdateCenter.xml # 替换成国内插件地址,手动更新 default.json
# 其实有很多朋友会问,为什么更新 default.json 不放在 shell 脚本中操作呢?之前试过在 shell 脚本中更新,但只要没有创建第一个管理员账户,那 default.json 配置就会被还原成官方配置,请执行命令;
sed -i "" 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json && \
sed -i "" 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' /Users/jason.zhuo/data/docker/volumes/jenkins/jenkins-home/updates/default.json

1.7、容器内下载最新版本Jenkins

1.7.1、以root用户登录容器
1、以root用户登录容器
docker exec -it -u root jenkins /bin/bash 2、跳转到指定目录
cd /usr/share/jenkins 3、让环境变量生效
source /etc/profile
1.7.2、在容器中下载jenkins的最新war包
# 1、如果容器内没有wget命令,则安装应用:
sudo apt-get update && apt-get install wget # 2、下载最新的镜像
wget http://mirrors.jenkins.io/war/latest/jenkins.war
1.7.3、新旧war包替换
# 1、移除旧war包
rm -rf jenkins.war # 2、重命令新war包
mv jenkins.war.1 jenkins.war
1.7.4、退出容器,并重启应用
docker restart jenkins

1.8、手动安装社区推荐的插件

注意:如果安装插件时失败,且有提示要更新 Jenkins 版本,操作请按《步骤1.7》

Jenkins -> Manage Jenkins -> Manage Plugins,点击Available

序号 插件 是否安装
1 Folders yes
2 OWASP Markup Formatter
3 Build Timeout yes
4 Credentials Binding
5 Timestamper yes
6 Workspace Cleanup yes
7 Ant yes
8 Maven Integration yes
9 GitHub Branch Source yes
10 Git yes
11 Pipeline yes
12 Pipeline: Groovy yes
13 Pipeline: Stage View yes
14 Pipeline: Declarative yes
15 Pipeline: Basic Steps yes
16 SSH Build Agents yes
17 Publish Over SSH yes
18 Matrix Authorization Strategy
19 Parameterized Trigger yes
20 Email Extension yes
21 JUnit yes
22 Localization: Chinese (Simplified) yes

1.9、解决问题

  • 打开登录界面时,一直停留在“Please wait while Jenkins is restarting ...”

    解决方案:请参考《步骤1.6》

  • Jenkins的官方插件下载地址速度非常慢,需要替换成国内插件地址

    解决方案:请参考《步骤1.6》

  • Docker 中的 Jenkins 重启时,“/etc/profile”环境变量失效

    解决方案:

    1.在/root/.bashrc文件最下面添加如下指令:source /etc/profile

    2.保存文件,然后执行:source /root/.bashrc

1.10、卸载程序

备注:此步骤请慎用,执行脚本时后面加任意参数即可卸载

# 参数1:即删除容器
sh ./jenkins.sh del1 # 参数1:删除容器和文件夹
sh ./jenkins.sh delete # 参数2:即删除镜像,删除后需要重新下载镜像才能初始化容器
sh ./jenkins.sh del1 del2

1.10.1、卸载程序详情

---------------函数开始执行---------------
1.1、执行容器删除操作,跳过此步骤,检查必要软件
2.1、执行容器删除操作,跳过此步骤,删除原镜像[jenkins/jenkins:latest]
2.2、执行容器删除操作,跳过此步骤,创建目录[/Users/jason.zhuo/data/docker/volumes/jenkins]
2.3、执行容器删除操作,跳过此步骤,第一次初始化容器[jenkins]
2.4、执行容器删除操作,跳过此步骤,休眠 120 秒
2.5、执行容器删除操作,跳过此步骤,修改配置文件
2.6、执行容器删除操作,执行命令:docker stop jenkins && docker rm jenkins
2.6、执行容器删除操作,成功删除容器[jenkins]
2.7、执行容器删除操作,跳过此步骤,第二次初始化容器[jenkins]
2.8、执行容器删除操作,跳过此步骤,检查容器状态
2.9.1、执行容器删除操作,删除文件夹,执行命令:sudo rm -rf /Users/jason.zhuo/data/docker/volumes/jenkins
2.9.2、执行容器删除操作,成功删除文件夹[/Users/jason.zhuo/data/docker/volumes/jenkins]
---------------函数执行完毕---------------

四、总结

自动化脚本安装完成后,本地的 Jenkins 基本上就可以随便玩,文章如有不对之处请留言,会及时修正,谢谢阅读!!

五、后记

所有文章均为本人原创,本人写作的目的就是想帮助对技术有需要的人,所以欢迎同行转载本站文章,但是,希望您注明来源,并留下原文链接地址,这是对文章作者的尊重,也是对知识的尊重。

mac通过docker一键部署Jenkins的更多相关文章

  1. mac通过docker一键部署MySQL8

    目录 mac通过docker一键部署MySQL8 一.前言 二.系统配置 三.安装步骤 Dockerhub查看镜像地址 1.一键安装 1.1.克隆脚本 1.2.安装程序 1.2.1.安装程序详情 1. ...

  2. mac通过docker一键部署Nexus3

    目录 mac通过docker一键部署Nexus3 一.前言 二.系统配置 三.安装步骤 1.Dockerhub查看镜像地址 2.一键安装 2.1.克隆脚本 2.2.安装程序 2.2.1.程序安装详情 ...

  3. Mac通过docker一键部署airflow

    目录 Airflow部署及使用 1.Dockerhub查看镜像地址 2.拉取docker镜像 3.在宿主机创建外挂文件夹 4.创建docker容器 5.重新创建docker容器 5.1.查看airfl ...

  4. Docker一键部署Hadoop心得(一)

    最近一直在折腾使用docker一键部署全分布式hadoop集群,虽然一键部署的脚本写好了并且可以成功运行出各个节点,但在运行一个wordcount实例时出现了错误,错误如下: java.io.IOEx ...

  5. 使用Docker 一键部署 LNMP+Redis 环境

    使用Docker 部署 LNMP+Redis 环境 Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linu ...

  6. 基于Docker一键部署大规模Hadoop集群及设计思路

    一.背景: 随着互联网的发展.互联网用户的增加,互联网中的数据也急剧膨胀.每天产生的数据量数以万计,本地文件系统和单机CPU已无法满足存储和计算要求.Hadoop分布式文件系统(HDFS)是海量数据存 ...

  7. Helm Chart 一键部署 Jenkins

    Jenkins Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.目前提供超过1000个插件来支持构建.部署.自动化, 满足任何项目的需要. Jenki ...

  8. RabbitMQ集群 Docker一键部署

    以下内容来自网络转载 步骤1. 安装docker 以centos7为例,https://docs.docker.com/engine/installation/linux/centos/ 步骤2. 创 ...

  9. Docker:docker安装部署jenkins

    Docker安装步骤请转到:https://www.cnblogs.com/nhdlb/p/11262527.html 查看docker的jenkins镜像版本 #查看jenkins版本命令 dock ...

随机推荐

  1. docker仓库之harbor的基本使用(二)

    1 1.配置docker使用harbor仓库上传下载镜像 2 #注意:如果我们配置的是https的话,本地docker就不需要任何操作就可以访问harbor 3 测试机器 4 root@ubuntu1 ...

  2. pinia 入门及使用

    自上月从上海结束工作回来 在家闲来无事 想写点东西打发时间 也顺便学习学习新的技术.偶然发现了 pinia 据说比vuex好用些 所以便搭了个demo尝试着用了下 感觉确实不错,于是便有了这篇随笔. ...

  3. async和await详解

     async和await详解 1.非UI线程中执行 Test()函数带有async 和await ,返回值写成Task. 1 using System; 2 using System.Threadin ...

  4. 使用Django2.0.4集成钉钉第三方扫码登录

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_124 钉钉作为阿里旗下的一款免费移动通讯软件,受众群体越来越多,这里我们使用Django来集成一下钉钉的三方账号登录,首先注册钉钉 ...

  5. 5.30 NOI 模拟

    $5.30\ NOI $模拟 高三大哥最后一次模拟考了,祝他们好运 \(T1\)装箱游戏 显然可以将四种字母之间的空缺当做状态枚举 那么这道题就很显然了 #include<bits/stdc++ ...

  6. 5.6 NOI模拟

    \(5.6\ NOI\)模拟 明天就母亲节了,给家里打了个电话(\(lj\ hsez\)断我电话的电,在宿舍打不了,只能用教练手机打了) 其实我不是很能看到自己的\(future,\)甚至看不到高三的 ...

  7. 技术分享 | 将GreatSQL添加到系统systemd服务

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1 ...

  8. MySQL8.0解决“MySQL 服务无法启动。 服务没有报告任何错误。”

    TL;NRs 初始化服务时最好使用mysqld --initialized --console命令: MySQL8.0的配置变量与MySQL5.7不同,[mysqld]下面设置字符集的变量名为char ...

  9. ATOM使用的一点心得与技巧——在一个窗口打开多个项目

    atom作为一个后起之秀,我个人是觉得越用越好用.虽然sublimet也很棒,但是在ubuntu里不能使用中文很是恼火.网上关于修复这个bug的办法实在太多了.果断选择省事的atom.虽然比起subl ...

  10. 基于SpringSecurity的@PreAuthorize实现自定义权限校验方法

    一.前言 在我们一般的web系统中必不可少的就是权限的配置,也有经典的RBAC权限模型,是基于角色的权限控制.这是目前最常被开发者使用也是相对易用.通用权限模型.当然SpringSecurity已经实 ...