Jenkins开发环境部署实践

讨论 · 本文由 · ITer · 发布于 1月前 · 62 阅读

Jenkins安装

环境要求:>=Linux kernel 3.10 、Docker;

这里主要阐述基于docker的安装,因为Jenkins官方docker镜像中已经集成好了java tomcat等环境,大量减少了我们的工作量。

步骤

  1. 准备工作
#安装docker【参考官方】

#创建Jenkins挂载目录,结构如下
> compose
    > docker-compose.yml
> jenkins
    > jenkins_home
    > run
    > .ssh

# 生成私钥和公钥
[root@ub-node-data ~] ssh-keygen -t rsa -C "jenkins@trmall"

#拷贝到./jenkins/.ssh目录
[root@ub-node-data ~] cp -r ~/.ssh/ .ssh/

  1. 编写docker-compose.yml 如下:

jenkins: image: jenkinsci/blueocean:latest hostname: trmall-data-jenkins networks: trnet: aliases: - trmall.manager.jenkins volumes: - ../jenkins/jenkins_home:/var/jenkins_home # Jenkins主目录 - ../jenkins/run/docker.sock:/var/run/docker.sock # docker 守护进程信息 - ../jenkins/.ssh/id_rsa:/var/jenkins_home/.ssh/id_rsa # 私钥 ports: - 8080:8080 - 50000:50000
  1. 创建构建容器
docker-compose -p trmall -f /trmall/compose/docker-compose.yml up -d
  1. 容器构建成功后,访问http://ip:8080 开始安装
# 查看初始令牌
docker exec -it trmall_jenkins_1 cat /var/jenkins_home/secrets/initialAdminPassword

.... 安装完成

Jenkins自动化部署任务

  1. 新建任务准备工作

    1. 添加gitLab凭据 填写Private Key
    2. 新建任务>一个自由风格的软件项目
    3. 源码管理>填写Repositories
    4. shell参考
    #!/bin/bash
    yes 2>/dev/null|scp -r ${WORKSPACE}/*  root@10.200.148.119:/trmall/projects/service-settlement # 拷贝工作空间代码到远程服务器 并输出执行过程的字符串
    ssh -tt root@10.200.148.119 "/trmall/bin/update service-settlement"
    

    至此还不可以部署噢,接下来我们还要设置免密登录,才可以实现远程执行shell

  2. 设置免密登录部署节点

    还记得之前生成的私钥和公钥吗?现在就要出场了


#检查用户组,若无gid 1000的组则创建Jenkins用户组和用户【注意:这里的uid、gid 1000必须和之后容器内的Jenkins这个用户gid一致】 [root@ub-node-data ~] groupadd -g 1000 jenkins && useradd -g jenkins -u 1000 jenkins #然后将宿主机上映射目录的私钥.ssh/id_rsa所属组用户都改为Jenkins [root@ub-node-data ~] chown -R jenkins:jenkins /trmall/jenkins/.ssh/id_rsa #或直接指定组id皆可,因为容器的本地数据卷中文件/目录的权限是和宿主机上一致的,只是uid/gid在Docker容器和宿主机中可能映射为不同的用户/组名称。 [root@ub-node-data ~] chown -R 1000 /trmall/jenkins/.ssh/id_rsa #然后将公钥 id_rsa.pub 拷贝到部署节点root/.ssh下并重命名为 authorized_keys实现远程免密登陆

至此,最简单的部署实践完成;若分布式大型项目还可以应用saltstack辅助我们支持更丰富的部署解决方案。

成为第一个本话题的爱慕者吧

评论数量:0