# devops **Repository Path**: wkh-opensource/devops ## Basic Information - **Project Name**: devops - **Description**: 使用jenkins+gitlab+docker搭建一个轻量级微服务“自动化发布平台” - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2019-10-04 - **Last Updated**: 2022-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # devops 使用jenkins+gitlab+docker搭建一个轻量级微服务“自动化发布平台” * 1.在 ubuntu 安装 docker * 2.搭建本地 docker-registry 镜像库 * 3.用 dokcer 拉取 gitlab-ce 搭建代码仓库 * 4.用 docker 拉取 jenkins 构建jenkins-dood * 5.使用 jenkins-dood 实现自动化发布 ## 1.安装docker,这步没啥好说,不懂可以google和百度 ## 2.搭建本地 docker-registry 镜像库 * 拉取镜像 ```docker pull registry``` * 镜像web可视化(可选) ```docker pull hyper/docker-registry-web``` * 启动 docker registry 镜像库 ```docker run -d -p 5000:5000 --name registry-srv registry``` * 启动web可视化(可选) ``` docker run -it -p 8000:8080 --name registry-web --link registry-srv \ -e REGISTRY_URL=http://registry-srv:5000/v2 \ -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web ``` ## 3.用 dokcer 拉取 gitlab-ce 搭建代码仓库 * 拉取镜像 ```docker pull gitlab/gitlab-ce``` * 启动 gitlab (-h 后面为访问域名) ``` docker run -d \ -h localhost \ -p 443:443 -p 80:80 -p 22:22 \ --name gitlab \ -v /opt/gitlab/etc:/etc/gitlab \ -v /opt/gitlab/log:/var/log/gitlab \ -v /opt/gitlab/opt:/var/opt/gitlab \ gitlab/gitlab-ce ``` * 访问域名,初次使用需要创建默认root管理员密码,随便以后的使用,也可以注册其他帐号使用 * ssh认证需要设置本地git全局设置 用户名和邮箱自定义 ``` git config --global user.name "Jonluo" git config --global user.email "jonluo@example.com" ``` * 添加ssh公钥 * ssh-keygen -t rsa -C "jonluo@example.com" * 在控制台会看出保存的文件路径,用cat查看公钥并添加到root用户的SSH Keys中 ![](images/1.png) * 使用gitlab 创建项目正常编写代码提交 * git clone git@localhost:root/my-demo.git * 编写代码,项目代码为简单的springboot项目(my-demo目录) * git add -A * git commit -m'ok' * git push -u origin master ## 4.用 docker 拉取 jenkins 构建jenkins-dood * 拉取 jenkins 镜像 ```sudo docker pull jenkins``` * 利用Dockerfile构建jenkins-dood镜像(Dockerfile文件在jenkins-dood目录下,在这目录下执行命令) ```docker build . -t jenkins-dood``` * 运行jenkins-dood镜像 * 创建挂载目录和需要给挂载的目录授权给当前用户 ``` sudo mkdir /opt/jenkins-dood sudo chown -R 1000:1000 /opt/jenkins-dood sudo chown -R 1000:1000 /var/run/docker.sock ``` * 跑镜像 ``` docker run --name my-jenkins-dood \ -p 8080:8080 \ -p 50000:50000 \ -v /etc/timezone:/etc/timezone \ -v /etc/localtime:/etc/localtime \ -v /opt/jenkins-dood:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/usr/bin/docker \ --link gitlab:localhost \ -d jenkins-dood ``` * 配置 jenkins-dood * 在浏览器中数据输入 http://localhost:8080 * 在jenkins启动的时候,设置了文件夹的挂在,所以 cat 挂载路径/secrets/initialAdminPassword 查看 * 输入初始化密码使用jenkins * 接着安装插件,在系统管理-插件管理-搜索maven插件(Maven Integration plugin) * 在系统管理-Global Tool Configuration下安装maven ![](images/4.png) # 实现自动化发布 * 在jenkins中新建maven任务 ![](images/2.png) * 使用git方式,输入地址,有认证的添加gitlab认证帐号密码,无认证无需添加 ![](images/3.png) * Build中输入pom.xml文件和maven命令clean package ![](images/5.png) * 在构建后操作中增加Archive the artifacts步骤添加存档文件 target/*.jar ![](images/6.png) * 在Post Steps中添加Execute shell添加shell ``` # 定义变量 API_NAME="mydemo" API_VERSION="1.0.0" API_PORT=9090 IMAGE_NAME="127.0.0.1:5000/com.jonluo/$API_NAME:$BUILD_NUMBER" CONTAINER_NAME=$API_NAME-$API_VERSION # 进入target目录复制Dockerfile文件 cd $WORKSPACE/target cp classes/Dockerfile . # Build Images docker build -t $IMAGE_NAME . # Push Images docker push $IMAGE_NAME # Delete Container cid=$(docker ps | grep "$CONTAINER_NAME" | awk '{print $1}') if [ "$cid" != "" ];then docker rm -f $cid fi # Run Container docker run -d -p $API_PORT:8080 --name $CONTAINER_NAME $IMAGE_NAME # Delete Dockerfile rm -f Dockerfile ``` ![](images/7.png) * 保存,立即构建(第一次构建的时间可能很长) * 查看日志 Finished: SUCCESS 表示成功 ![](images/8.png) * 然后打开浏览器,访问localhost:9090 输出 Hello 验证成功