zoukankan      html  css  js  c++  java
  • Docker安装Jenkins教程

    一、当前配置环境

    CentOS7: 1908

    IP:             192.168.81.103

    hostname: jenkins

    镜像:         jenkins/jenkins 

    二、准备工作

    1.关闭防火墙和SeLinux

    systemctl stop firewalld && systemctl disable firewalld
    setenforce 0
    sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux

    2.禁用swap交换分区

    swapoff -a && sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux 

    三、Docker安装

    1.配置docker源

    yum install -y wget
    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

    2.安装docker环境依赖

    yum install -y yum-utils device-mapper-persistent-data lvm2

    3.安装docker

    yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io -y 

    4.启动docker并设置为开机自启

    systemctl start docker && systemctl enable docker

    5.配置镜像加速

    # 这里使用的是我的阿里云镜像加速,可以自己去阿里云配置一个
    mkdir -p /etc/docker 
    tee /etc/docker/daemon.json <<-'EOF'
    {
        "registry-mirrors": ["https://mxdu1aof.mirror.aliyuncs.com"], 
        "exec-opts": ["native.cgroupdriver=systemd"]
    }
    EOF

    6.配置ipv4.ip_forward

    vim /etc/sysctl.conf
    ​
    # 在sysctl.conf的最后加入下面这一行
    net.ipv4.ip_forward=1

    7.重新启动守护进程并重启docker

    systemctl daemon-reload && systemctl restart docker 

    四、安装Docker版Jenkins

    1.下载jenkins镜像,选择jenkins/jenkins版本

    2.由于jenkins的docker版本没有dotnetcore环境,所以,我们要基于jenkins/jenkins镜像构建包含dotnetcore3.1环境的jenkins镜像

    mkdir -p /root/jenkins

    Dockerfile文件代码如下:

    FROM jenkins/jenkins
    ​
    # Switch to root to install .NET Core SDK
    USER root
    ​
    # Show distro information!
    RUN uname -a && cat /etc/*release
    ​
    # Based on instructiions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current
    # Install dependency for .NET Core 3
    RUN apt-get update
    RUN apt-get install -y curl libunwind8 gettext apt-transport-https
    ​
    # Based on instructions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current
    # Install microsoft.qpg
    RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
    RUN mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
    RUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list'
    ​
    # Install the .NET Core framework
    RUN apt-get update
    RUN apt-get install -y dotnet-sdk-3.1

    3.将Dockerfile文件拖入到/root/jenkins目录中,构建镜像

    cd /root/jenkins
    docker build -t my-docker-jenkins .

     4.通过my-docker-jenkins镜像运行容器

    docker run -d --name jenkins -p 8080:8080 
    -v /usr/bin/docker:/usr/bin/docker 
    -v /var/run/docker.sock:/var/run/docker.sock 
    -v /home/jenkins_home:/home/jenkins_home 
    -v /usr/jenkinsci/:/usr/jenkinsci/ 
    my-docker-jenkins

    命令行解读:

    第一行:将镜像容器以后台方式运行并命名为jenkins,并对外开放8080端口映射到jenkins内部的8080端口

    第二行:将宿主机上面的docker命令行挂载到容器上面,不然在执行jenkins任务时用到docker命令时会报docker:command not found

    第三行:将宿主机上的docker.sock挂载到容器中的相应位置,使得容器中的docker命令行能跟宿主机的docker通信

    第四行:挂载我们创建的配置文件存放目录到指定的文件夹

    第五行:挂载我们创建的配置文件存放目录到指定的文件夹,用于存放CICD的模板

    5.运行jenkins

    在浏览器输入192.168.81.103:8080

    通过镜像获取密码

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

    安装插件(如果遇到插件安装失败,重试就好了)并配置第一个用户名和密码

    安装后配置完用户,就可以使用Jenkins了

    五、使用Jenkins创建任务

    1.新建任务

    2.配置任务,通过gitee仓库

    我gitee上随便弄了个测试,由于是公开的就不需要凭证,如果是私有的gitlab的,就添加Credentials,如下所示

    3.构建触发器

    构建触发器比如在git提交代码后,Jenkins自动拉取代码后立即构建,这一步我们需要先在系统设置-->插件管理安装响应的插件,例如gitlab插件,我就把gitlab所有相关插件一并安装上。

    构建触发器如下,你也可以根据自己所需配置相关信息

    4.配置shell脚本

    由于我把shell脚本放在/usr/jenkinsci目录下了,也在启动容器的时候挂载了卷 -v /usr/jenkinsci/:/usr/jenkinsci/ ,所有在容器内部是获取的到的,也可以用以下命令处理

    #!/bin/bash -ilex
    ​
    dotnet restore
    mkdir -p /tmp/dotnet/publish/
    dotnet publish -c Release -r linux-x64 -o /tmp/dotnet/publish/
    echo "Successfully!!!! ^ please see the file ."
    cd /tmp/dotnet/publish/
    ​
    PROJECT_NAME=${JOB_NAME,,}
    IMAGE_VERSION=`date +%Y%m%d%H%M%S`
    IMAGE_VERSION_RANDOM=$RANDOM
    IMAGENAME=${JOB_NAME,,}$IMAGE_VERSION$IMAGE_VERSION_RANDOM
    echo 'start build image'
    # 项目的Dockerfile属性需要设为复制模式,不然publish后找不到
    docker build -t $IMAGENAME .
    echo 'end build image'
    rm -rf /tmp/dotnet/publish/

    5.配置完后立即构建,看看有没有失败的,如果失败了,可以点击构建的版本看看控制台输出什么错误,我是遇到挺多坑的,就是由于自己没配置好或者shell脚本没写好。

    主要有以下错误&分析&解决:

    1.xxx.sh:not found

    修改错误:在Execute shell中第一行改为这句话:#!/bin/bash -ilex

    2.docker: command not found

    修改错误:在docker run -d --name jenkins时,一定要映射-v /usr/bin/docker:/usr/bin/docker

    解决完bug也就构建成功了

     

    六、参考

    https://mp.weixin.qq.com/s/ngUfM27drd3fApC2PlJkOQ

    https://www.cnblogs.com/YahuiWang/p/jenkins-docker-dotnet-core-publish.html

    https://www.cnblogs.com/little-ab/p/12974139.html

  • 相关阅读:
    react-native中使用mobox数据共享
    vue cli3项目的pc自适应布局_vw
    webpack配置多页面和提取css
    react-native报错Encountered two children with the same key, `%s`.
    __proto__和prototype
    json-server配置模拟数据
    全局判断登录是否过期代码
    react-native环境搭建
    css的垂直居中常用几种方法
    进程和线程
  • 原文地址:https://www.cnblogs.com/cxt618/p/15021471.html
Copyright © 2011-2022 走看看