当前位置: 首页 > wzjs >正文

郑州网站建设蝶动海南三亚8v1视频

郑州网站建设蝶动,海南三亚8v1视频,惠州seo排名公司,广告设计公司利润1.创建Job 登录Jenkins,点击新建Item,创建项目 选择Pipeline,然后点击确定 接下来主要在Pipeline script中编写脚本 2.签出Git仓库 2.1配置Git账号 Manage Jenkins->Security->Credentials 在凭据界面,选择全局 添加凭据,添加Git用…

1.创建Job

  • 登录Jenkins,点击新建Item,创建项目
    在这里插入图片描述
  • 选择Pipeline,然后点击确定
    在这里插入图片描述
  • 接下来主要在Pipeline script中编写脚本

2.签出Git仓库

2.1配置Git账号

  • Manage Jenkins->Security->Credentials 在凭据界面,选择全局
    在这里插入图片描述
  • 添加凭据,添加Git用户名和密码,ID是等下需要使用的。
    在这里插入图片描述

2.2 编写Git签出脚本

在这里插入图片描述

  • 点击 Build Now,就会执行刚刚的脚本。并在Jenkin主目录->workspace->项目名称 下签出对应的Git仓库

3.配置何时执行

3.1 手动执行

直接点击 Build Now 按钮,会立马执行。

3.2 间隔执行

  • 定时获取Git代码,代码更新则构建 (每5分钟执行一次)
    在这里插入图片描述
  • 定时构建,不管代码有没有更新(每5分钟执行一次)
    在这里插入图片描述

3.3 Git有更新主动推送构建

  • 生成触发地址
    在这里插入图片描述
  • 在Git中配置Web 钩子
    使用上面的地址(JENKINS_URL:替换成地址,TOKEN_NAME:替换为身份证令牌Vue1),配置到Git的Web钩子中。可以点击测试,看返回结果。
    在这里插入图片描述
  • 禁用跨站请求伪造(解决错误:No valid crumb was included in the request)
    Git仓库的Web 钩子界面,点击测试推送,返回的响应信息中,提示:No valid crumb was included in the request。
    在Manage Jenkins -> Script Console中执行
hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION = true
  • 安装Build Authorization Token Root 插件(解决错误:Authentication required)
    Git仓库的Web 钩子界面,点击测试推送,返回的响应信息中,提示:Authentication required。
    Manage Jenkins->Plugins 搜索Build Authorization Token Root,并点击安装
  • Git仓库添加允许列表
    找到gitea的安装目录gitea\custom\conf,编辑app.ini文件
    在这里插入图片描述

4.编写构建脚本

node {try {stage('SCM') {git branch: 'dev', credentialsId: 'Test', url: 'http://127.0.0.1:3000/Test.git'// 更新子模块bat 'git submodule update --init --recursive'bat 'git submodule update --remote'}stage('BUILD') {bat 'dotnet build'}stage('DEPLOY') {bat 'dotnet publish  Test.csproj -c Release -o D:/publish/Test'}}  catch(Exception e){}
}

5.发送邮件

当构建失败时,发送邮件通知。

5.1 配置邮件信息

  • 创建邮箱凭据,步骤参考【配置Git账号】
  • 配置邮箱服务器信息 Manage Jenkins->System->Extended E-mail Notification
    在这里插入图片描述
  • 编写邮件发送脚本
node {stage('SCM') {emailext (subject: "编译失败: ${env.JOB_NAME} [${env.BUILD_NUMBER}]",body: """<p><b>${env.JOB_NAME} [${env.BUILD_NUMBER}]</b> <span style="color:red;">编译失败</span>.</p><p>详情: <a href="${env.BUILD_URL}console">${env.BUILD_URL}console</a></p><br>""",to: "Test@163.com",mimeType: 'text/html',from: "codebuild@163.com")}
}

6.发布.NET Core 程序

一般Jenkins与应用站点不在同一台服务器,我们可以通过共享文件夹的方式,再使用命令,复制文件到应用站点服务器。

  • 编写powershell脚本文件 copy.ps1
if (!(Test-Path "Y:\")) { 
net use Y: \\192.168.1.100\website /user:administrator 123456
}
Start-Sleep 5
$source = "D:\publish\Test"  
$destination = "Y:\Test"  
$timeThreshold = (Get-Date).AddHours(-1) # 设置时间阈值为一个小时前  # 定义要排除的文件扩展名或名称  
$excludeExtensions = @(".pdb")  
$excludeNames = @("tempfile.txt", "backup.log")  # 使用Get-ChildItem获取文件,并通过管道传递给Where-Object进行筛选  
Get-ChildItem -Path $source -Recurse |   Where-Object {   # 检查文件的最后写入时间是否早于阈值  #$_.LastWriteTime -lt $timeThreshold -and  # 检查文件扩展名是否不在排除列表中  (-not $excludeExtensions.Contains($_.Extension.ToLower())) -and  # 检查文件名是否不在排除列表中  (-not $excludeNames.Contains($_.Name.ToLower()))  } |   ForEach-Object {  # 构造目标路径  $destinationPath = $_.FullName.Replace($source, $destination)  # 如果当前项是文件夹,则创建目标文件夹  if ($_.PSIsContainer) {  New-Item -ItemType Directory -Path $destinationPath -Force | Out-Null  } else {  # 否则,复制文件  Copy-Item -Path $_.FullName -Destination $destinationPath -Force  }  
}
  • 编写jenkins脚本
powershell  "D:/publish/Test.ps1"

7.启动/停止应用站点

替换.NET Core程序时,需要先停止IIS之后才能替换。我们可以在IIS中部署另外一个程序,该程序可以用来停止/启动应用程序池和应用站点。当我们需要发布.NET Core程序时,我们可以先停止应用程序和应用站点,发布成功后,在启动应用程序池和应用站点。
以下代码需要安装Microsoft.Web.Administration、System.ServiceProcess.ServiceController类库

    [Route("api/[controller]/[Action]")][ApiController]public class IISController : ControllerBase{public string GetName(){return "IIS";}/// <summary>/// 启动站点/// </summary>/// <param name="siteName"></param>/// <returns></returns>[HttpGet("{siteName}")]public bool StartSite(string siteName){var webManager = new ServerManager();var startSite = webManager.Sites[siteName];if (startSite == null){return false;}if (startSite.State.Equals(ObjectState.Stopped)){startSite.Start();}return true;}/// <summary>/// 停止站点/// </summary>/// <param name="siteName"></param>/// <returns></returns>[HttpGet("{siteName}")]public string StopSite(string siteName){var webManager = new ServerManager();var startSite = webManager.Sites[siteName];if (startSite == null){return "不存在";}if (startSite.State.Equals(ObjectState.Started)){startSite.Stop();}return "成功了";}/// <summary>/// 启动应用池/// </summary>/// <param name="poolName"></param>/// <returns></returns>[HttpGet("{poolName}")]public bool StartPool(string poolName){var webManager = new ServerManager();var applicationPool = webManager.ApplicationPools[poolName];if (applicationPool == null){return false;}if (applicationPool.State.Equals(ObjectState.Stopped)){applicationPool.Start();}return true;}/// <summary>/// 停止应用池/// </summary>/// <param name="poolName"></param>/// <returns></returns>[HttpGet("{poolName}")]public bool StopPool(string poolName){var webManager = new ServerManager();var applicationPool = webManager.ApplicationPools[poolName];if (applicationPool == null){return false;}if (applicationPool.State.Equals(ObjectState.Started)){applicationPool.Stop();}return true;}/// <summary>/// 启动服务/// </summary>/// <param name="serviceName"></param>/// <returns></returns>[HttpGet("{serviceName}")]public IActionResult StartService(string serviceName){try{using (var serviceController = new ServiceController(serviceName)){if (serviceController.Status == ServiceControllerStatus.Stopped || serviceController.Status == ServiceControllerStatus.Paused){serviceController.Start();serviceController.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(30));}return Ok($"Service {serviceName} started successfully.");}}catch (Exception ex){return StatusCode(500, $"An error occurred while trying to start the service: {ex.Message}");}}/// <summary>/// 启动服务/// </summary>/// <param name="serviceName"></param>/// <returns></returns>[HttpGet("{serviceName}")]public IActionResult StopService(string serviceName){try{using (var serviceController = new ServiceController(serviceName)){if (serviceController.Status == ServiceControllerStatus.Running){serviceController.Stop();serviceController.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(30));}return Ok($"Service {serviceName} stopped successfully.");}}catch (Exception ex){return StatusCode(500, $"An error occurred while trying to stop the service: {ex.Message}");}}}

8.完整Jenkins脚本

node {try {stage('SCM') {git branch: 'dev', credentialsId: 'Test1', url: 'http://127.0.0.1:3000/Test.git'// 更新子模块bat 'git submodule update --init --recursive'bat 'git submodule update --remote'}stage('BUILD') {bat 'dotnet build'}stage('DEPLOY') {bat 'dotnet publish  Test/Test.csproj -c Release -o D:/publish/Test'}stage('STOPSITE') {bat "curl -X GET \"http://192.168.1.100:2000/api/iis/StopSite/Test\""}stage('STOPPOOL') {bat "curl -X GET \"http://192.168.1.100:2000/api/iis/StopPool/Test\""}stage('COPY') {powershell  "D:/publish/test.ps1"}stage('STARTPOOL') {bat "curl -X GET \"http://192.168.1.100:2000/api/iis/StartPool/Test\""}stage('STARTSITE') {bat "curl -X GET \"http://192.168.1.100:2000/api/iis/StartSite/Test\""}}  catch(Exception e){// 构建失败时捕获异常并发送邮件emailext (subject: "编译失败: ${env.JOB_NAME} [${env.BUILD_NUMBER}]",body: """<p><b>${env.JOB_NAME} [${env.BUILD_NUMBER}]</b> <span style="color:red;">编译失败</span>.</p><p>详情: <a href="${env.BUILD_URL}console">${env.BUILD_URL}console</a></p><br>""",to: "test@163.com",mimeType: 'text/html',from: "test2@163.com")}
}

文章转载自:

http://C9tQM8ht.zrrgx.cn
http://Zi54rSoJ.zrrgx.cn
http://MZhYwkQu.zrrgx.cn
http://F1mr9Jrt.zrrgx.cn
http://4YRiYTcy.zrrgx.cn
http://Tp2CbafC.zrrgx.cn
http://Vfks8TLv.zrrgx.cn
http://hYqEqwrd.zrrgx.cn
http://JELJjUzA.zrrgx.cn
http://s2o9k5cj.zrrgx.cn
http://XXo185mM.zrrgx.cn
http://HU1XlZbO.zrrgx.cn
http://kePnCOiw.zrrgx.cn
http://npmItJh8.zrrgx.cn
http://Hr8oyzI3.zrrgx.cn
http://MjyydaJb.zrrgx.cn
http://t7xn5v6y.zrrgx.cn
http://hhKBV49r.zrrgx.cn
http://3AaAtPxa.zrrgx.cn
http://SREbCKvy.zrrgx.cn
http://yxuB78qR.zrrgx.cn
http://GHP0bdhs.zrrgx.cn
http://SQ5QvYmT.zrrgx.cn
http://cCR7K0jV.zrrgx.cn
http://YJCXTXQs.zrrgx.cn
http://aTLIGYEb.zrrgx.cn
http://qU3nXyZE.zrrgx.cn
http://F64l08PA.zrrgx.cn
http://ho8cVScl.zrrgx.cn
http://A9oqWwsr.zrrgx.cn
http://www.dtcms.com/wzjs/631225.html

相关文章:

  • 做有声小说网站建材网站建设 南宁
  • 在线做章网站昆明做网站建设
  • 自己电脑做网站 外网无法访问综合商城网站程序
  • 济南市建设监理有限公司网站国际公司图片
  • 秦皇岛网站建设服务苏州做公司网站
  • wordpress附件管理seo优化标题 关键词
  • 建设单位经常去哪个网站苏州手机网站建设多少钱
  • 上海专业网站建设信息图书页面设计模板
  • dedecms产品展示织梦模板(营销型网站)滨州做网站的科技公司
  • 遂宁建设网站天津画册设计公司
  • 网站售后服务国家企用信用信息公示系
  • 动易网站做值班表潍坊模板建站定制网站
  • 网站建设首选公司商标注册号在哪个位置
  • 西城区网站建设推广seo深圳市住房和建设局网站住房保障
  • 网站代码快捷键系部网站建设中期检查总结
  • 构建网站空间深建小程序
  • 襄阳定制型网站开发四川省城乡建建设人事考试网站
  • 建设银行网站修改预留手机号pythonunicode转码
  • 加强人社局网站建设长沙传媒公司
  • 厦门做网站seo学校建设网站的目的和意义
  • 网站规划和建设的步骤查询网站备案查询
  • 菏泽机关建设网站wordpress滑动相册
  • 网站备案 个人组网方案丹江口市建设局网站
  • 四川建设网网网站维护电话凡客现在还能买吗
  • 网站的域名能换吗东莞百姓网交友
  • 中国建设银行郑州分行网站网站建设产品手册
  • 周末做兼职上什么网站找wordpress添加feed格式
  • 网站加载优化wordpress淘宝客 瀑布流
  • 深圳市企业网站建设服务器销售
  • 国家城乡与住房建设部网站手机网站开发报价单