更新时间:2024-06-17 GMT+08:00
分享

搭建Jenkins和Gitlab环境

前提条件

  • 创建一个新的VPC,本示例中名为vpc-X,所使用网段为192.168.0.0/16。
  • 创建一台位于vpc-X(192.168.0.0/16网段)的ECS服务器,推荐规格为4vCPUs 16GiB,系统为Huawei Cloud EulerOS 2.0,并绑定一个弹性公网IP用于拉取公网镜像。

安装指定版本的Docker

  1. 登录ECS服务器。
  2. 在Huawei Cloud EulerOS 2.0操作系统下,可以使用如下命令快速安装最新版本的Docker。如以下命令无法自动化安装,请根据操作系统进行手动安装,详细操作请参见Docker Engine installation

    dnf install docker

  3. 查看Docker是否安装成功。

    docker info

Gitlab安装及配置

  1. 拉取 Gitlab 镜像。

    docker pull gitlab/gitlab-ce

  2. 运行容器。

    docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

  3. 查询容器状态。

    docker ps | grep gitlab

  4. 在Gitlab上创建项目时,生成项目的URL访问地址是通过容器的hostname进行生成的,即容器的id。作为Gitlab服务器,需要一个固定的 URL访问地址,因此需要配置gitlab.rb(宿主机路径:/home/gitlab/config/gitlab.rb)。

    1. 在宿主机上通过vi打开文件/home/gitlab/config/gitlab.rb。
      vi /home/gitlab/config/gitlab.rb
      添加内容如下:
      external_url 'http://**.**.**.**' //宿主机外部IP,如EIP
      gitlab_rails['gitlab_ssh_host'] = '**.**.**.**' //宿主机外部IP,如EIP
      gitlab_rails['gitlab_shell_ssh_port'] = 222 //此端口是启动容器时的端口映射,222->22
    2. 保存修改内容。

  5. 重启容器。

    docker restart gitlab

  6. 使用浏览器访问“ECS EIP:80”,登录Gitlab服务, 默认用户名为root,初始登录密码存放在gitlab容器的/etc/gitlab/initial_root_password路径下。

    您可以通过以下命令获取:
    docker exec gitlab cat /etc/gitlab/initial_root_password

Jenkins安装及配置

  1. 拉取Jenkins镜像。

    docker pull jenkins/jenkins:lts

  2. 运行Jenkins容器。

    由于后续需要在Jenkins容器里执行docker build等相关命令,因此该容器需具备docker in docker(dind)的能力,因此需要将docker.sock与docker挂载到容器。

    docker run -d -p 8000:8080 -p 50000:50000 \
     -v /var/jenkins_home:/var/jenkins_home \
     -v /var/run/docker.sock:/var/run/docker.sock \
     -v /usr/bin/docker:/usr/bin/docker \
     --name myjenkins --privileged=true -u root jenkins/jenkins:lts

  3. 测试Jenkins容器是否能执行docker命令。

    docker exec myjenkins docker ps

    如果遇到报错:docker: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory。执行下面命令解决

    docker exec myjenkins sh -c "apt-get update && apt-get install -y libltdl7"

  4. 使用浏览器访问“ECS EIP:8000”,登录Jenkins服务,默认用户名为admin,初始登录密码存放在/var/jenkins_home/secrets/initialAdminPassword路径下。

    您可以通过以下命令获取密码:

    docker exec myjenkins cat /var/jenkins_home/secrets/initialAdminPassword

  5. 登录Jenkins后,选择安装推荐的插件。完成初始配置后,即可进入Jenkins页面。

  6. 安装kubectl命令行工具。

    1. 将kubectl下载到本地,建议和用户要使用的集群版本保持一致。详情请参见安装kubectl
      wget https://dl.k8s.io/release/v*.*.*/bin/linux/amd64/kubectl  // v*.*.*为集群版本
    2. 将kubectl复制到Jenkins容器内。
      docker cp kubectl myjenkins:/usr/bin/
      docker exec myjenkins chmod +x /usr/bin/kubectl

  7. 配置Jenkins免密拉取Gitlab代码。

    1. 获取SSH公钥。
      docker exec -it myjenkins ssh-keygen -t rsa

      按Enter跳过填写其他参数,默认可无需填写。

      查看生成的公钥。

      docker exec myjenkins cat /root/.ssh/id_rsa.pub
    2. 在Gitlab中搜索SSH,添加一个新密钥。

    3. 输入SSH公钥。

    4. 保存SSH Key。

相关文档