提交文档后,可以自动发布到服务器上。这时候,使用到了 jenkins。
使用 docker-compose 来安装,将接口映射到宿主机上的 8090,然后通过 nginx 进行跳转。
version: '3.7'services:#jenkinsjenkins:hostname: jenkinsimage: jenkins/jenkins:ltsuser: rootports:- 8089:8080restart: always# privileged: trueenvironment:- TZ=Asiz/Shanghaivolumes:- ${DATA_PATH}/jenkins:/var/jenkins_home- /var/run/docker.sock:/var/run/docker.sock- ${HOME}:/home- /usr/bin/docker:/usr/bin/docker- /etc/localtime:/etc/localtime:ro
安装说明
为了让容器可以利用宿主机的 docker,所以下面是必须的。
/var/run/docker.sock:/var/run/docker.sock/usr/bin/docker:/usr/bin/docker为了避免容器用户的权限问题,这里使用了
user: root
启动
docker-compose up --build -d
进入容器
docker-compose exec jenkins bash
在安装过程中遇到的问题:
image: jenkins/jenkins:lts
,那么还是使用现在的镜像。3 年前用 jenkinsci/blueocean,但是在使用过程中发现这不是最优的选择,因为 jenkinsci/blueocean 版本总是不能正常更新。
执行下面的命令,就可以了。
docker run \--rm \-d \--name jenkins \-u root \-p 8089:8080 \-v jenkins-data:/var/jenkins_home \-v /var/run/docker.sock:/var/run/docker.sock \-v "$HOME":/home \-v /etc/localtime:/etc/localtime:ro \jenkinsci/blueocean
安装完毕后,可以这么来访问。
# 访问 Jenkins/Blue Ocean Docker 容器docker exec -it jenkins bash
开打http://localhost:8089
打开服务器,如果是用 nginx 进行转发,那么就通过域名访问,例如:jenkins.redhtc.com
第一次登录,需要输入密码,密码这么得到。
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
然后设置管理员密码,密码一定要设置的长一点。
安装的插件有这些,在安装插件中,搜索下面关键词
安装完毕后重启
docker-compose restart
系统提示方向代理有问题
主要是 nginx 配置的有问题,修改一下 nginx 的配置就可以了。
主要的目的是将编译好的程序,通过 SSH 部署到服务器上。
在这个菜单中配置:系统管理>配置管理>
,可以配置多个,这里说明要配置的主要内容,下面是例子:
myserver
www
目录)这里有一个示例项目,一旦有代码提交,就自动进行编译,并且部署到服务器上。
在工程的根目录下创建Jenkins
文件,并且创建jenkins/scripts
目录,在目录中放置编译、测试、发布的脚本。
脚本的主要工作是:
这个脚本参考了 Jenkins 官网的例子,实际上里面包含了测试于中断两个服务,但是这两个服务被我给注释掉了,有兴趣可以具体看一下相关的内容。
小技巧
当有些语法不会写时,可以在Jenkins
的某个 Job 中,点击菜单流水线语法
,通过向导撰写语法,例如要写 SHH 的语法,可以这么来做。
在 Jenkins 中新建立一个 Job
按照提示,进行配置就可以了,在配置的过程中,需要在gitee
上做相应的内容。
gitee
上要做的内容有
Gitee webhook
上填写:本地Jenkins
回调的地址,见下图的说明Gitee webhook
上得到Gitee WebHook 密码
更详细的配置,见gitee 官网的说明
输入要下载的路径,并且配置路径脚本的名称,就是根目录下的文件。
gitee
配置说明担心找不到 gitee 如何配置,这里放了图片,实际上按照 gitee 的文档,一步一步配置就可以了。
在本地编辑文件后,进行git push
,然后到Jenkins
发现已经进行编译了。
这个例子与上面的 Gitee 的区别如下:
参考文档
添加 Jenkins 脚本
在工程的根目录下创建Jenkins
文件,并且创建jenkins/scripts
目录,在目录中放置编译、测试、发布的脚本。
sshPublisher 脚本的具体变量
登录 Gitlab 得到一个要访问的 Token,详细步骤见 Gitlab 官方文档
编译后要上传文件,所以在系统管理>系统配置
中添加一个新的目标服务器malladmin
。
配置完毕用户名与密码后,要进行一下测试,是否可行。
参考文档
安装插件
搜下面关键词安装插件
配置 gitlab 服务器
在这个菜单中配置:系统管理>配置管理>
,要在添加下拉框,选择第一个,会弹出第二图的对话框
这里是要弹出的对话框
这里没有使用上面两步添加的 token 也可以用了
如果在代码中进行这么配置:
这个是在 windows 环境下写 sh 脚本产生的问题。
可以在 Jenkins 中添加下面的脚本。
stage('Deliver') {steps {sh 'chmod 777 ./jenkins/scripts/deliver.sh'sh './jenkins/scripts/deliver.sh'sh 'ls'}}
我是怎么发现这个问题的?
设置一个input断点。然后登录到docker 容器中。进入alpine容器docker exec -it 容器id /bin/sh通过ls -l 查看是否可执行,发现没有可执行的状态
虽然现实编译成功,但是看日志后,发现编译错误。没有生成错误。 今后需要查查,如果编译不成功,怎么能提示错误。
记录当前容器配置的内容
adminpro https://gitlab.redhtc.com/wukong/wukong-mall-admin.gitantLearning https://gitee.com/fanhualei/wukong-mall-learn.gitGiteeTestkeycloak https://gitee.com/fanhualei/keycloak-doc.gitlittlefish-dolphin https://gitee.com/littlefishcode/3d-printer.gitlittlefish-www https://gitee.com/littlefishcode/littlefish.gitwukongDoc https://gitee.com/fanhualei/wukong-doc.gitwwwRedhtc https://gitee.com/fanhualei/redhtc-web.gitmalladmin /root/000myserver /data/my-nginx/nginx/ant-learningmyserverKeycloak /data/my-nginx/nginx/keycloakmyserverLittlefish-dolphin /data/my-nginx/nginx/littlefish-dolphinmyserverLittlefish-www /data/my-nginx/nginx/littlefish-wwwmyserverWukongDoc /data/my-nginx/nginx/wukong-docmyserverWwwRedhtc /data/my-nginx/nginx/www-redhtc
在使用 jenkins 中,还有以下问题,想着去解决。