{
  "schemaVersion": "0.11.0",
  "canonical": "https://www.pystone.net/notes/jenkins-cross-language-integration/",
  "atlas": "https://www.pystone.net/?node=jenkins-cross-language-integration#knowledge-atlas",
  "markdown": "https://www.pystone.net/notes/jenkins-cross-language-integration.md",
  "context": "https://www.pystone.net/notes/jenkins-cross-language-integration.context.json",
  "knowledgeVersion": "224c990773de.5fa8af6e39fa",
  "build": {
    "siteCommit": "224c990773de166d23a886306577dd90379529ce",
    "notesCommit": "5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a",
    "builtAt": "1970-01-01T00:00:00.000Z",
    "version": "224c990773de.5fa8af6e39fa"
  },
  "id": "note:jenkins-cross-language-integration",
  "slug": "jenkins-cross-language-integration",
  "title": "【Jenkins】各种语言、程序之间的沟通",
  "type": "note",
  "visibility": "public",
  "idStability": "rename-stable",
  "author": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "publisher": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "aliases": [],
  "summary": "【Jenkins】各种语言、程序之间的沟通",
  "contentRole": "unspecified",
  "isMoc": false,
  "mocRecognition": "none",
  "generated": false,
  "attribution": "unspecified",
  "domain": "10-计算机、信息技术与工程",
  "tags": [],
  "mocs": [],
  "contentHash": "273b2d851c82203fab70176eb4d12aabb4454892c24baab922752caeb7afb1c7",
  "assets": [],
  "headings": [
    {
      "depth": 1,
      "text": "【Jenkins】各种语言、程序之间的沟通",
      "anchor": "jenkins各种语言程序之间的沟通",
      "citation": "https://www.pystone.net/notes/jenkins-cross-language-integration/#jenkins%E5%90%84%E7%A7%8D%E8%AF%AD%E8%A8%80%E7%A8%8B%E5%BA%8F%E4%B9%8B%E9%97%B4%E7%9A%84%E6%B2%9F%E9%80%9A"
    },
    {
      "depth": 2,
      "text": "关于环境变量",
      "anchor": "关于环境变量",
      "citation": "https://www.pystone.net/notes/jenkins-cross-language-integration/#%E5%85%B3%E4%BA%8E%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"
    },
    {
      "depth": 3,
      "text": "bat脚本环境变量",
      "anchor": "bat脚本环境变量",
      "citation": "https://www.pystone.net/notes/jenkins-cross-language-integration/#bat%E8%84%9A%E6%9C%AC%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"
    },
    {
      "depth": 3,
      "text": "Pipeline环境变量",
      "anchor": "pipeline环境变量",
      "citation": "https://www.pystone.net/notes/jenkins-cross-language-integration/#pipeline%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"
    },
    {
      "depth": 3,
      "text": "不同位置环境变量的交互",
      "anchor": "不同位置环境变量的交互",
      "citation": "https://www.pystone.net/notes/jenkins-cross-language-integration/#%E4%B8%8D%E5%90%8C%E4%BD%8D%E7%BD%AE%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E4%BA%A4%E4%BA%92"
    },
    {
      "depth": 2,
      "text": "关于Exit",
      "anchor": "关于exit",
      "citation": "https://www.pystone.net/notes/jenkins-cross-language-integration/#%E5%85%B3%E4%BA%8Eexit"
    },
    {
      "depth": 3,
      "text": "C# Exit以",
      "anchor": "c-exit以",
      "citation": "https://www.pystone.net/notes/jenkins-cross-language-integration/#c-exit%E4%BB%A5"
    },
    {
      "depth": 4,
      "text": "C# Exit方法",
      "anchor": "c-exit方法",
      "citation": "https://www.pystone.net/notes/jenkins-cross-language-integration/#c-exit%E6%96%B9%E6%B3%95"
    },
    {
      "depth": 4,
      "text": "bat脚本处理执行结果",
      "anchor": "bat脚本处理执行结果",
      "citation": "https://www.pystone.net/notes/jenkins-cross-language-integration/#bat%E8%84%9A%E6%9C%AC%E5%A4%84%E7%90%86%E6%89%A7%E8%A1%8C%E7%BB%93%E6%9E%9C"
    },
    {
      "depth": 3,
      "text": "bat Exit",
      "anchor": "bat-exit",
      "citation": "https://www.pystone.net/notes/jenkins-cross-language-integration/#bat-exit"
    },
    {
      "depth": 4,
      "text": "Jenkins Pipeline中",
      "anchor": "jenkins-pipeline中",
      "citation": "https://www.pystone.net/notes/jenkins-cross-language-integration/#jenkins-pipeline%E4%B8%AD"
    }
  ],
  "claims": [],
  "outgoing": [],
  "incoming": [
    {
      "id": "note:software-engineering-and-quality",
      "title": "软件工程与质量保障",
      "url": "https://www.pystone.net/notes/software-engineering-and-quality/",
      "atlas": "https://www.pystone.net/?node=software-engineering-and-quality#knowledge-atlas",
      "label": "软件工程与质量保障",
      "origin": "explicit",
      "humanReviewed": true,
      "context": "CI-CD与质量保障/CI-CD工具链中的“【Jenkins】各种语言、程序之间的沟通”导航项",
      "citation": "https://www.pystone.net/notes/software-engineering-and-quality/#ci-cd%E4%B8%8E%E8%B4%A8%E9%87%8F%E4%BF%9D%E9%9A%9Cci-cd%E5%B7%A5%E5%85%B7%E9%93%BE"
    }
  ],
  "contentMarkdown": "# 【Jenkins】各种语言、程序之间的沟通\n\n﻿# 【Jenkins】各种语言、程序之间的沟通\n\n> 创建时间：2021/4/13 17:21\n\n* 关于环境变量\n    * bat脚本环境变量\n    * Pipeline环境变量\n    * 不同位置环境变量的交互\n  * 关于Exit\n    * C# Exit以\n      * C# Exit方法\n      * bat脚本处理执行结果\n    * bat Exit\n      * Jenkins Pipeline中\n\n## 关于环境变量\n\nJenkinsPipeline中涉及到Pipeline script与bat脚本、shell脚本之间的互相调用，而不同脚本环境变量使用的语法规则不同，环境变量的作用范围也不同，导致不同的阶段用不同的方式设置、修改环境变量会有一些坑点。\n\n### bat脚本环境变量\n\n```csharp\nstring a = &quot;test&quot;;\nstring tmp = &quot;est&quot;;\nstring b = &quot;t&quot; + tmp;\nConsole.WriteLine(string .ReferenceEquals(str1, str2));\n\n```\n\n### Pipeline环境变量\n\n```csharp\nstring a = &quot;test&quot;;\nstring tmp = &quot;est&quot;;\nstring b = &quot;t&quot; + tmp;\nConsole.WriteLine(string .ReferenceEquals(str1, str2));\n\n```\n\nPipeline代码中使用\n\n```csharp\nstring a = &quot;test&quot;;\nstring tmp = &quot;est&quot;;\nstring b = &quot;t&quot; + tmp;\nConsole.WriteLine(string .ReferenceEquals(str1, str2));\n\n```\n\nsh中使用\n\n```csharp\nstring a = &quot;test&quot;;\nstring tmp = &quot;est&quot;;\nstring b = &quot;t&quot; + tmp;\nConsole.WriteLine(string .ReferenceEquals(str1, str2));\n\n```\n\nbat中使用\n\n```csharp\nstring a = &quot;test&quot;;\nstring tmp = &quot;est&quot;;\nstring b = &quot;t&quot; + tmp;\nConsole.WriteLine(string .ReferenceEquals(str1, str2));\n\n```\n\n### 不同位置环境变量的交互\n\n## 关于Exit\n\n### C# Exit以\n\n#### C# Exit方法\n\n```csharp\nstring a = &quot;test&quot;;\nstring tmp = &quot;est&quot;;\nstring b = &quot;t&quot; + tmp;\nConsole.WriteLine(string .ReferenceEquals(str1, str2));\n\n```\n```csharp\nstring a = &quot;test&quot;;\nstring tmp = &quot;est&quot;;\nstring b = &quot;t&quot; + tmp;\nConsole.WriteLine(string .ReferenceEquals(str1, str2));\n\n```\n\nTerminates this process **immediately** and returns an exit code to the operating system.\nUse **0** (zero) to indicate that the process completed **successfully**.\n\n```csharp\nstring a = &quot;test&quot;;\nstring tmp = &quot;est&quot;;\nstring b = &quot;t&quot; + tmp;\nConsole.WriteLine(string .ReferenceEquals(str1, str2));\n\n```\n\n#### bat脚本处理执行结果\n\n```csharp\nstring a = &quot;test&quot;;\nstring tmp = &quot;est&quot;;\nstring b = &quot;t&quot; + tmp;\nConsole.WriteLine(string .ReferenceEquals(str1, str2));\n\n```\n```csharp\nstring a = &quot;test&quot;;\nstring tmp = &quot;est&quot;;\nstring b = &quot;t&quot; + tmp;\nConsole.WriteLine(string .ReferenceEquals(str1, str2));\n\n```\n\n### bat Exit\n\n在CMD中调用 `exit n`，会直接退出cmd\n\n```csharp\nstring a = &quot;test&quot;;\nstring tmp = &quot;est&quot;;\nstring b = &quot;t&quot; + tmp;\nConsole.WriteLine(string .ReferenceEquals(str1, str2));\n\n```\n\n#### Jenkins Pipeline中\n\n在Jenkins Pipeline中的bat脚本中\n\n  * `exit 0` \\- 表示该脚本正常结束，继续后面的步骤\n  * `exit 1` \\- 错误退出，该阶段会爆红，流水线中止\n\n\n若将returnStatus设置为true，可以获取该脚本的返回状态，在`exit 1`的情况下也不会中止流水线。\n\n**shell 出错后继续，取 shell 输出值。**\n\n```csharp\nstring a = &quot;test&quot;;\nstring tmp = &quot;est&quot;;\nstring b = &quot;t&quot; + tmp;\nConsole.WriteLine(string .ReferenceEquals(str1, str2));\n\n```\n```csharp\nstring a = &quot;test&quot;;\nstring tmp = &quot;est&quot;;\nstring b = &quot;t&quot; + tmp;\nConsole.WriteLine(string .ReferenceEquals(str1, str2));\n\n```\n"
}
