当前位置: 移动技术网 > IT编程>开发语言>.net > 本地Docker Jenkins构建dotnet core web应用到Linux服务器 Docker上

本地Docker Jenkins构建dotnet core web应用到Linux服务器 Docker上

2019年12月09日  | 移动技术网IT编程  | 我要评论

射鸡英雄传在线观看511,李开复的创新工场,迪克奥迪逊

1、准备工作

环境

  • 本地: windowsdocker
  • 代码仓库:git
  • 服务器:linuxdocker

前提准备

  1. 创建个有dockerfile文件的dotnet core 3 web项目
    新建一个dotnet 3.0的web项目,在项目文件夹添加dockerfile文件,内容如下:

    from mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim as base
    workdir /app
    expose 80
    copy . .
    entrypoint ["dotnet", "webapplication.dll"]
  2. 准备git仓库,将项目的代码上传上去
  3. 构建有dotnet core 3.0 环境jenkins

    from jenkins/jenkins:lts
    # 切换root用户安装东西
    user root
    # show distro information!
    run uname -a && cat /etc/*release
    run apt-get update
    run apt-get install -y curl libunwind8 gettext apt-transport-https
    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'
    run apt-get update
    run apt-get install -y dotnet-sdk-3.1
    # 切换回来jenkins用户
    user jenkins

因为jenkins里面是没有dotnetcore环境的,所以需要本地创建个支持dotnetcore环境的。
找个地方新建文件夹,创建dockerfile文件,内容如上。

  1. build镜像并运行容器

    docker build . -t jenkins_dotnet

    这里等待时间会比较长~

    # 运行刚刚构建好的容器
    docker run -d  --name jenkins -p 8080:8080 jenkins_dotnet
  2. 打开jenkins,安装推荐插件
    打开 ,可以看到

    docker exec -it jenkins bash
    dotnet --version
    cat /var/jenkins_home/secrets/initialadminpassword

    把密码复制出来登录,点击左边按钮安装推荐插件

    这里时间也会比较长,如果有部分安装失败了,等剩余的安装完后点击重试即可,如果服务器上还没有docker,现在可以去装下,装了的也可以连上服务器,去执行docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim拉取下dotnet core 3.1的镜像,等会创建镜像的时候就会快一点啦

    插件安装完后,会有一些创建管理员和地址配置,搞一下吧。

    如果有插件安装失败,点过重试安装插件的,现在需要docker restart jenkins重启下应用,然后重新打开使用创建的管理员登录。

2、搞好了,开始干活

哦,还有些需要安装的插件 =.=||

需要安装的插件:

  • scp publisher
  • publish over ssh
  • environment injector

进入 系统管理>插件管理->可选插件->输入插件名称->勾选需要插件->点击安装

安装完后,设置下这些插件,进入系统管理->系统配置,

  1. scp publisher设置
    ctrl + f 搜下 scp找到scp repository hosts-scp sites设置位置,点新增
    hostname: 服务器ip地址
    port:端口,默认22、
    root repository path:文件存放目录
    user name:登录用户名
    password/passphrase:密码

  2. publish over ssh 设置
    ctrl + f 搜下 scp找到scp repository hosts-ssh server设置位置,点新增再点高级勾选上 use password authentication, or use a different key
    name:名称
    hostname:服务器ip地址
    username:登录用户名
    remote directory:远程目录
    passphrase / password:密码
    port:连接端口(默认22)

配置完后别忘记点保存。

创建构建任务第一种:自由风格的软件项目

点击新建任务, 选择构建一个自由风格的软件项目

  1. 源码管理设置
    选择git,在repository url填入git仓库地址

  2. 触发构建器
    可以配置一些定时构建等,我这里只是测试所以没有选择触发器。

  3. 构建环境
    1. 勾选delete workspace before build starts
    2. 勾选inject environment variables to the build process,存放构建是需要用到的环境变量
  4. 构建- 添加执行shell步骤
    增加构建步骤-执行shell,脚本如下:

    #切换目录
    cd ./webapplication
    #还原nuget包
    dotnet restore
    #编译
    dotnet build
    #删除之前发布文件
    cd ./bin
    rm -rf web-publish
    rm -f web-publish.tar
    cd ..
    #发布
    dotnet publish -o ./bin/web-publish
    #删除配置文件
    cd ./bin/web-publish
    cp ../../dockerfile .
    rm -rf config
    cd ..
    #压缩
    tar -cvf web-publish.tar web-publish 
  5. 构建后步骤
    1. 上传文件到服务器
      增加构建后操作步骤-选择publish artifacts to scp repository ,填入需要上传的压缩文件

      这里文件目录的基础目录是workspace,如果不知道具体的地址,可以先不创建构建后步骤保存下,然后点击立即构建,等待成功后,点击工作空间看下文件路径是怎样的,比如我的是这样的:

      得到压缩文件目录是webapplication/bin/web-publish.tar

    2. 添加 服务器上要执行的shll命令 步骤

    增加构建后操作步骤- 选择 send build artifacts over ssh

    这里要新增两个transfers set,在第一个transfersexec command输入创建镜像脚本:

    # 工作目录
    work_dir="/root/publish/webapplication";
    cd ${work_dir}
    # 删除原有发布文件夹
    rm -rf web-publish;
    # 解压
    tar -xvf web-publish.tar;
    #删除文件压缩包
    rm -f web-publish.tar;
    #切换生成目录
    cd web-publish/
    #备份镜像
    #停止容器
    docker stop ${docker_container_name};
    #删除容器
    docker rm ${docker_container_name};
    #删除镜像
    docker rmi $(docker images | grep ${docker_image_name});
    #创建镜像
    docker build -t ${docker_image_name} ./;

    在第二个transfersexec command,输入运行容器命令:

    # 运行容器
    docker run -d -p 8001:80 --name  ${docker_container_name}  ${docker_image_name}

    到这里所有的设置都已经搞好啦,别忘记点击保存,点击立即构建 测试一下吧~

创建构建任务第二种:流水线[pipeline](未完成)

todo:评论有位哥推荐流水线 可视化会好一点,有空再去尝试下发出来~

成果展示

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网