Azure pipeline 配置根据条件执行脚本

Azure pipeline 配置根据条件执行脚本

Intro

我的应用通过 azure pipeline 来做持续集成,之前已经介绍了根据不同分支去打包不同的package,具体的就不再这里详细介绍了,可以参考 持续集成之nuget进阶,nuget 包可以做到根据不同的分支来
发布不同的包,那么我的应用一定也可以做到不同的分支发布不同 tag 的 docker 镜像,最后通过 azure pipeline 内置的 Condition 来做判断,可以加一些条件脚本在满足特定条件下才执行的脚本再加上变量控制,就可以比较好的实现根据分支策略来发布不同 tag 的 docker 镜像了

Solution

来看一下修改之后的 azure-pipelines.yaml 示例配置吧:

steps:
# ...
- script: docker push $(latestImageName)
  displayName: 'Push latest image'
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/dev'))

- script: docker push $(stableImageName)
  displayName: 'Push stable image'
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))

- task: [email protected]
  displayName: 'Run shell inline on remote machine'
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/dev'))
  inputs:
    sshEndpoint: 'weihanli-vm'
    runOptions: inline

    inline: |
      kubectl set image deployment/activityreservation activityreservation=$(imageName) --record=true

当前面的 step 运行成功并且是 master 分支的 build 时,发布 tag 为 stable 的 docker 镜像,如果是 dev 分支则发布 tag 为 latest 的 docker 镜像,并且仅当当前分支为 dev 时才执行部署操作。

完整配置可以在 Github
上获取

CI 执行过程

上图是一个 dev 分支的 build,从上面的截图可以看到,只有 master 分支才执行的 step,没有被执行,直接跳过了

Reference

  • < https://docs.microsoft.com/zh-cn/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml >

原文地址:https://www.cnblogs.com/weihanli/p/11674842.html

时间: 2024-10-04 15:56:56

Azure pipeline 配置根据条件执行脚本的相关文章

让Mac OS X系统启动时执行脚本

公司购买了Zoho公司的资产管理软件 AssetExplorer,该资产管理软件可以通过在客户机电脑上安装Agent客户端软件收集客户机的硬件及软件信息.公司有若干台iMac电脑,运 行的是Mac OS X 10.6的系统,由于AssetExplorer只支持Windows版本的Agent,对于其他系统的计算机需要通过在客户端执行bash脚本文件的方 式,收集客户机的信息并上传到服务器.这就要求客户机的Mac OS X系统启动的时候能够自动执行脚本程序,而且要基于系统服务层面,用户无需登录,脚本

开源项目福利-github开源项目免费使用Azure PipeLine

微软收购Github后,很多人猜想微软可能会砍掉VSTS,然而事实VSTS并没有砍掉,关于Azure Devops的详细信息可以查看 这篇博客,如果想查看原文也可以从链接里提供的原始地址里查看. 今天要介绍的是做Azure devops的ci部分:Azure Pipeline. VSTS升级到Azure Devops之后对开源开发者带来的重大利好消息就是Github开源项目可以免费,无限时和并行运行10个CI/CD作业. 下面将简要介绍Azure PipeLine以及如何把Azure PipeL

ssh连接远程主机执行脚本的环境变量问题

用ssh命令ssh [email protected] "/web/tomcat-7000/bin/startup.sh" 登陆到远程机器remote上执行脚本时,遇到一个奇怪的问题:tomcat服务不能启动 Neither the JAVA_HOME nor the JRE_HOME environment variable is definedAt least one of these environment variable is needed to run this progr

windows2003 iis php 配置后无法执行php页面

1.问题:可以访问静态页面,无法访问php脚本页面,显示404 解决: windows2003 iis php 配置后无法执行php页面

linux下定时执行脚本

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业.由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动.关闭这个服务: 1.cron的启动 /sbin/service crond start //启动服务/sbin/service crond stop //关闭服务/sbin/service crond restart //重启服务/sbin/service crond reload //重新载入配置 你也可以将这个服务在系统启动的时候自动启动:

windows 建立任务执行计划 自动执行脚本

对于windows服务器网站如果要定时执行脚本,则需要在windows控制面板里找到 管理工具,点击任务计划程序,创建任务填写任务名称 触发器里新建触发条件,设置间隔时间 在操作项,新建触发时需要做的操作,这时我们在新建一个批处理文件,里面写入要执行的命令, 例如: "E:\phpStudy\php\php-5.5.38\php.exe" -f  "E:\phpStudy\test.php"; 或者直接执行url方法 "E:\phpStudy\php\ph

Jmeter 批量执行脚本之-----------Ant

一.环境介绍&准备: 1)jmeter3.2版本,需配备jdk1.8(或其他jmeter版本): 2)ant下载,并配置环境变量: a.下载地址:http://ant.apache.org/bindownload.cgi b. 配置环境变量: c.检查是否生效:命令行输入ant -v,出现以下表示成功 3)拷贝jar包:将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中 4)修改Jmeter的bin目录下jmeter.propert

ssh 连上主机,并用nohup后台执行脚本

以下本脚本实现了:先从本地复制脚本到远程主机,再用ssh连上远程主机,执行之前复制的脚本(由于脚本需要执行很长时间,故放到后台执行),此脚本仅用于备忘,如有不足敬请指点! #!/bin/bash cd /tmp i=1 #ip.txt保存主机列表,第三列为IP,第二列为主机名,第一列为主机所在地址 cat ip.txt|while read line do IP=`echo $line|awk '{print $3}'` addr=`echo $line|awk '{print $1}'` ec

Linux下定时执行脚本(转自Decode360)

文章来自:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html Decode360's Blog  老师(业精于勤而荒于嬉 QQ:150355677 MSN:[email protected]) 菜鸟表示不会写shell脚本,但还是能够看懂的,昨天因为传了太多数据,结果namenode进入了safe mode,然后小伙伴赶紧就暂停了每天早晨4点自动执行的数据合并压缩和传输的脚本,今天我自己准备改,才发现这篇博文. 先说说