• .netcore 3全自动化发布部署Jenkins+GIT


    1.新建项目提交到Git。

      这里的git项目可以用GitLab也可以各大平台提供的,比如码云和coding。或者自己搭建个Git服务器。用vs2019新建个webapi项目。然后提交到git服务器。这里我用的是码云

     2.安装并运行Jenkins

      这里我的是centos7,前提是需要安装好java的jdk 1.8+

    Jenkins官网最新稳定版: https://pkg.jenkins.io/redhat-stable/

    windows下载:https://jenkins.io/download/  

    1)下载

    sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

    (2)导入秘钥

    sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

    (3)安装

    yum install jenkins

    (4)配置端口

    Jenkins的默认端口是8080,如果要修改的话使用以下命令,我这里修改为8070:

    vim /etc/sysconfig/jenkins

    jenkins_port:8070

    (5)启动Jenkins

    nohup  java -jar /usr/lib/jenkins/jenkins.war --httpPort=8070 &

    然后通过浏览器IP:Port查看Jenkins界面进行配置,首先需要输入系统自动生产的密码:

     复制图片上的路径,输入命令: cat 图片上的路径,如:cat /var/lib/jenkins/secrets/initialAdminPassword,复制密码粘贴确认就可以,之后进入Jenkins选择插件界面:

     选择安装默认插件。

    3.安装.Net Core SDK 3

    推荐按照官方地址操作https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-centos7

    sudo yum -y install dotnet-sdk-3.1

    安装完成之后输入命令 : dotnet --version

    验证安装是否安装成功

    4.配置Jenkins

    (1)新建一个自由风格的软件项目

     (2)填写源代码Git地址,用于Jenkins拉取代码:

     添加添加可以添加管理仓库的用户和密码,用户拉取源代码。

    可是设置定制构建执行代替手动执行,这里的设置是每5分钟发布一次,其实没必要,手动点构建更灵活。

    构建环境部分,可以指定发布的一些选项,就是发布之前删除之前的文件等

    构建。这里就是把文件获取到最新之后要执行的项目的编译,发布和启动网站。

     执行的shell脚本

    kill -9 `lsof -ti:5000`
    dotnet restore
    dotnet build
    dotnet publish
    BUILD_ID=DONTKILLME
    nohup dotnet ${WORKSPACE}/bin/Debug/netcoreapp3.1/publish/Apitest.dll &
    View Code

    其中shell里面的第一行,第一次构建的时候不需要,因为此时网站还没发布启动,不存在占用5000端口的程序,如果执行的话会造成shell中断。构建不成功。

    BUILD_ID=DONTKILLME 这句话的意思是Jenkins启动之后不要kill掉网站的进程。最开始没有加这个导致构建之后,看着网站明明启动了就是访问不了的假象。

    在dotnet 之前加nohup的意思是不占用终端,在后台进程的形式启动网站,避免一直占用终端,造成构建占用超时。

    由于网站启动后会占用5000端口,再次发布时会造成端口占用,网站启动不了,所以有了第一句 kill -9 `lsof -ti:5000` 每次发布时解除端口占用。 

     这样构建过程就完成了。以后每次有修改,只要把代码提交到git服务器,点击构建就能实现代码的自动拉取同步,程序的自动发布,网站的启动。

    输入地址 http:localhost:5000 就能直接访问,当然也可以运用nginx反向代理进行绑定访问。

     

  • 相关阅读:
    L16Vue工程化
    L16Vue组件
    L16VueRouter
    SQL 无符号(sighed)数相减报错的解决方法cast()函数
    python try: except: 处理死循环
    python 面试100题1
    日三省
    python math模块
    python 向集合追加元素 add()/update()
    PowerBI 使用函数Excel.Workbook(content)一次性合并多工作簿多表数据
  • 原文地址:https://www.cnblogs.com/Playfunny/p/12779459.html
Copyright © 2020-2023  润新知