美文网首页ASP.NET Core
Docker + Jenkins + ASP.NET Core

Docker + Jenkins + ASP.NET Core

作者: GongZH丶 | 来源:发表于2019-06-06 14:48 被阅读0次

    目的:搭建一个在linux服务器上持续部署asp.net core项目的例子,asp.net core项目和Jenkins都是容器化部署。
    环境:ubuntu 18.04 (centos也可以)
    Docker version 18.09.6
    基础Jenkins镜像 jenkins/jenkins

    持续集成是什么?http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html

    Jenkins介绍https://blog.csdn.net/miss1181248983/article/details/82840006

    1.在ubuntu服务器上,安装docker

    安装方式参考文档:https://docs.docker.com/install/linux/docker-ce/ubuntu/
    加入docker用户组:https://docs.docker.com/install/linux/linux-postinstall/

    2.构建Jenkins镜像,以jenkins/jenkins镜像为基础

    FROM jenkins/jenkins:lts
    # 可以根据需要安装工具
    USER root
    RUN apt-get update && apt-get install -y sudo && rm -rf /var/lib/apt/lists/*
    RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
    USER jenkins
    

    如果不想自己构建镜像,可以直接用我构建好的,在docker hub上:forestgzh/jenkins (不保证长期有效。。)

    3.在码云Gitee上托管asp.net core的项目代码(因为码云有免费私人仓库。。)

    image.png

    4.启动Jenkins

    在服务器上启动forestgzh/jenkins镜像:

    docker run --name my-jenkins -p 8080:8080 -p 50000:50000 \
        -v ~/jenkins:/var/jenkins_home \
        -v /usr/bin/docker:/bin/docker \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -d forestgzh/jenkins
    

    -v /var/run/docker.sock:/var/run/docker.sock 这条指令是为了Jenkins容器内能与宿主机的docker通信,这条非常关键。

    5.配置Jenkins

    Jenkins容器启动完成后,用 ‘docker logs 容器名’ 查看密码:一串数字,一眼就看到了,
    然后在浏览器打开:http://ip:8080 ,ip是服务器的ip地址

    进去后输入刚刚docker logs查看到的密码,进去后设置用户,一直下一步就可以了。
    然后点击系统管理->插件管理->下载Gitee插件


    image.png

    然后,系统管理->系统设置,配置如下:
    具体配置过程参考:https://gitee.com/help/articles/4193#article-header0

    image.png

    配置完后保存。

    回到首页,新建一个任务:


    image.png

    然后配置任务:


    image.png

    然后配置Build Triggers


    image.png

    最后,最重要的是Build,下拉框选择执行shell:


    image.png
    #!/bin/bash
    # 获取短版本号
    GITHASH=`git rev-parse --short HEAD`
    sudo docker stop testjenkins
    sudo docker rm testjenkins
    echo ---------------Building Docker Image...------------------
    sudo docker build -t testjenkins:$GITHASH .
    sudo docker tag testjenkins:$GITHASH testjenkins:latest
    echo ---------------Launching Container...------------------
    sudo docker run --name testjenkins -d -p 5000:80 testjenkins:latest
    

    Jenkins就是根据前面的触发器触发这个脚本去构建镜像,持续部署。
    这边设的是每两分钟,可以自行设置Gitee webhook 触发构建,Gitee webhook参考文档:https://gitee.com/help/articles/4193#article-header13

    配置完后保存,查看任务,可以看到构建部署历史:

    image.png

    再看项目,每次提交后,能访问到最新的页面:


    image.png

    相关文章

      网友评论

        本文标题:Docker + Jenkins + ASP.NET Core

        本文链接:https://www.haomeiwen.com/subject/buayxctx.html