GitHub Actions 中的环境和可重用工作流程

2023-12-10

我想找到一种方法将环境:语句从可重用工作流程移动到调用工作流程。 可重用工作流程的开始是:

name: Reusable Terraform Action
on: 
  workflow_call:
    inputs:
      working-folder:
        description: The name of the client folder to process
        required: true
        type: string

jobs:
  Terraform:
    ***environment: Development***    
    env:
      ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }}
      ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }}
      ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }}
      ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }}
    runs-on: ubuntu-latest
    defaults:
      run:
        shell: bash
        working-directory: ${{ inputs.working-folder }}

调用流程为:

name: Deployment TF Reuse
on:  
  workflow_dispatch:
jobs:
  walm:
    uses: ./.github/workflows/reuse-terraform.yml
    with:
      working-folder: r3us-walm

无论我尝试将环境:开发行放在调用工作流程中的何处,它都会使解析步骤失败。

如果我能找到一种方法来像这样获取它们,我不介意将这 4 个秘密作为参数传递给可重用工作流程,但它仍然抱怨“uses:”语句。

name: Deployment TF Reuse
on:  
  workflow_dispatch:
jobs:
  walm:
    environment: Development
    uses: ./.github/workflows/reuse-terraform.yml
    with:
      working-folder: r3us-walm
      secrets:
        ACID: ${{ secrets.ARM_CLIENT_ID }}
        ACS: ${{ secrets.ARM_CLIENT_SECRET }}
        ATID: ${{ secrets.ARM_TENANT_ID }}
        ASID: ${{ secrets.ARM_SUBSCRIPTION_ID }}    

在这个美妙的帮助下article和想法来自Azeem,我设法让它工作。

这是我的简单呼叫/呼叫者工作流程:

name: Calling Workflow

on:
  workflow_dispatch:

jobs:
  deploy_dev:
    name: Deploy to Dev
    uses: ./.github/workflows/reuse.yml
    with:
      environment: Development
    secrets:
      PASSWORD: ${{ secrets.PASSWORD }}
      
  deploy_prod:
    name: Deploy to Prod
    needs: deploy_dev
    uses: ./.github/workflows/reuse.yml
    with:
      environment: UAT
    secrets:
      PASSWORD: ${{ secrets.PASSWORD }}

并且,所谓的可重用工作流程是:

name: Called Workflow

on:
  workflow_call:
    inputs:
      environment:
        type: string
        description: environment to deploy to
        required: true
    secrets:
      PASSWORD:
        required: true

jobs:
  deploy:
    name: Deploy to ${{ inputs.environment }}
    runs-on: ubuntu-latest
    environment: ${{ inputs.environment }}
    
    steps:
    - name: Dump Password
      run: |
        echo Password is $PASSWORD
        if [[ $PASSWORD == *"password"* ]]; then
          echo "This is the UAT password!"
        else
          echo "This is NOT the UAT password!"
        fi
      env:
        PASSWORD: ${{ secrets.PASSWORD }}

除了学习如何将环境作为参数传递之外,我还记得简单的小工作流程最适合检查方法。

Thanks!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GitHub Actions 中的环境和可重用工作流程 的相关文章

随机推荐

  • 为方法调用的每个实例返回相同的值

    嗨 我没有使用 PowerMockito 而是使用普通的 PowerMockito 并尝试模拟如下内容 when any File class canWrite thenReturn Boolean FALSE 但我得到一个NullPoin
  • 如何在android中制作带有进度状态的圆形进度条?

    我想显示如下图所示的进度条以及进度状态 任何人都可以给我解决方案吗 None
  • 使用malloc动态创建字符串数组

    我正在尝试使用 C 语言创建一个字符串数组malloc 数组将保存的字符串数量可以在运行时更改 但字符串的长度将始终保持一致 我已经尝试过这个 见下文 但是遇到了麻烦 任何正确方向的提示将不胜感激 define ID LEN 5 char
  • 属性的属性有意义吗?

    因为这是一个关于设计的问题 所以我首先会说我拥有什么和我想要什么 I have使用组合的设计 ACell对象持有一个Shape and a Background对象 本例中是定制的 这两个都有自己的数据来定义它们 这是代码中的示例 clas
  • grep 匹配某个模式的行,以及匹配前后的行,直到不同模式

    Start pattern abc d End pattern Start pattern abc d ef ghij klm no End pattern Start pattern abc def hij End pattern Sta
  • 更快(更具可扩展性)的DataSet.Merge?

    我们在应用程序中使用强类型数据集 导入数据时我们使用方便的DataSet Merge 将 DataRows 从一个 DataSet 复制到另一个 DataSet 的操作 StringCollection lines ReadFromFile
  • Git 将修补程序分支合并到功能分支

    假设我们在 Git 中有以下情况 创建的存储库 mkdir GitTest2 cd GitTest2 git init master 中发生一些修改并提交 echo On Master gt file git commit a m Init
  • 使用 Google Apps 脚本删除 Google 文档中的表格行

    我正在尝试使用 Google Apps 脚本使用从电子表格到 Google 的信息来大量创建文档 但我不知道如何使用 Table 类 特别是方法 RemoveRow 我创建了一个示例 不太复杂 来说明我的问题 我有一个名为 销售报告 该文档
  • JavaScript 每次调用函数时都会编译该函数吗?

    假设我有这个功能 function A function B return 1 return 1 B 是否起作用B每次调用函数时都会编译A 我记得有人说不会 但我的记忆力已经生锈了 找不到参考资料 JavaScript 标准规定 JavaS
  • 某些三星设备上的编辑文本有限?

    我正在尝试将长文本从 SD 卡读取到 Android 中的编辑文本中 在几乎所有设备上 除了某些三星设备外 此功能都运行良好 当我尝试读取超过 10kb 的任何内容时 我读取的字符串也会获取整个文件 当我尝试将其添加到编辑文本时 它在 10
  • 如何在脚本内触发大括号扩展?

    我正在编写一个需要使用 shell 的大括号扩展的脚本 但我尝试过的任何方法都不起作用 对于 人为的 实例 假设我有一个包含字符串的变量 thing 01 02 我 显然 想将其扩展到 thing01 thing02 从脚本内部 我该怎么做
  • 为什么删除 DOCTYPE 后高度 100% 仍有效?

    这是整个代码 div style background color green height 100 width 100 div 什么也没有出现 但是如果我删除第一行 doctype 所有页面如预期一样都是绿色的 我有两个问题 我该如何制作
  • UIActivityViewController 相当于 ios 5

    我正在尝试分享应用程序中的一些文本 如果用户安装了ios 6我将调用UIActivityViewController来共享 但是 如果用户有 ios 5 是否有类似的东西我可以调用 并且有按钮可以分享到邮件和 Twitter 在 ios 5
  • 什么时候需要在Python中的整数两边添加引号[重复]

    这个问题在这里已经有答案了 我刚刚了解到Python中没有整数的引号 但为什么在这种情况下需要它 character name Tom age 50 print There once was a man named character na
  • API 平台 JWT:找不到“GET /api/login”的路由

    我成功安装了 API 平台 它与我的所有实体配合良好 现在我正在尝试使用 LexikJWTAuthenticationBundle 添加 JWT 身份验证 但是当我发送登录请求时 我得到 找不到 GET api login 的路由 我的请求
  • 如何使用JS传播剩余破坏来删除嵌套属性?

    尝试使用扩展运算符剩余破坏来删除多个属性 因此药物名称被删除 但我有嵌套对象mailPrice copayEmployer那并没有被破坏 你知道什么是错误实施的吗 main js const transformedResponse tran
  • 成员函数指针和继承

    因此 为了方便起见 我正在开发一个简单的 win32 包装器 但我遇到了一个稍微复杂的问题 这还有很多其他成员 但我省略了一些 只留下有问题的成员 class Windows AbstractWindow public void Insta
  • WCF ServiceRoute 路由前缀可以包含路径值吗?

    目前我使用这个 RouteTable Routes Add new ServiceRoute API new WebServiceHostFactory typeof MySite Web MyServiceV1 使此 url 指向 MyS
  • 如何在 Pytz 中使用缩写时区名称(PST、IST)

    我需要知道如何在 pytz 上使用缩写时区名称 如 PST IST 等 的方法 现在我可以使用时区名称 例如 America Los Angeles 在时区之间进行转换 相反 我需要找到使用时区名称 如 PST IST 等 的方法 我现在用
  • GitHub Actions 中的环境和可重用工作流程

    我想找到一种方法将环境 语句从可重用工作流程移动到调用工作流程 可重用工作流程的开始是 name Reusable Terraform Action on workflow call inputs working folder descri