6 Star 10 Fork 6

Jonluo / devops

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 4.61 KB
一键复制 编辑 原始数据 按行查看 历史
jonluo 提交于 2018-01-07 23:13 . 自动化发布

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中
  • 使用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

实现自动化发布

  • 在jenkins中新建maven任务
  • 使用git方式,输入地址,有认证的添加gitlab认证帐号密码,无认证无需添加
  • Build中输入pom.xml文件和maven命令clean package
  • 在构建后操作中增加Archive the artifacts步骤添加存档文件 target/*.jar
  • 在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  

  • 保存,立即构建(第一次构建的时间可能很长)
  • 查看日志 Finished: SUCCESS 表示成功
  • 然后打开浏览器,访问localhost:9090 输出 Hello 验证成功
Shell
1
https://gitee.com/jonluo/devops.git
git@gitee.com:jonluo/devops.git
jonluo
devops
devops
master

搜索帮助