【问题标题】:Secrets doesnt pass from github action secrets to reusable workflow in github actions秘密不会从 github 操作秘密传递到 github 操作中的可重用工作流
【发布时间】:2022-05-04 18:58:20
【问题描述】:

我在 github 操作中创建了秘密,并尝试在可重用的工作流程中使用它们,但我无法使其工作,但是,如果我通过调用者文件硬编码的秘密,它就可以正常工作

## set_env.yml
name: Sent Env Creds and Vars

on:
  push:
    branches:
      - main
      - dev
  pull_request:
    branches: [ main ]

jobs:
  deploy-dev:
    uses: ./.github/workflows/main.yml
    with:
      AWS_REGION: "us-east-2"
      PREFIX: "dev"
    secrets:
      AWS_ACCESS_KEY_ID: ${{ secrets.DEV_AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.DEV_AWS_ACCESS_KEY_ID }}

可重用工作流 = main.yml

## main.yml
name: Deploy to AWS  

# Controls when the workflow will run
on:
  workflow_call:
    inputs:
      AWS_REGION:
        required: true
        type: string
      PREFIX:
        required: true
        type: string
    secrets:
      AWS_ACCESS_KEY_ID:
        required: true
      AWS_SECRET_ACCESS_KEY:
        required: true

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  terraform-deploy:
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2

      # Runs a set of commands using the runners shell
      - name: Run a multi-line script
        run: | 
                echo Hello, Epsilon! You are in ${{ inputs.AWS_REGION }} region ${{ inputs.PREFIX }} region 
                for dir in $(ls -l | grep '^d' | awk '{print $9}'); do
                    PARENT_DIR=`pwd`
                    echo $dir
                    cd $dir
                    terraform init -backend-config=${PARENT_DIR}/${{ inputs.PREFIX }}-backend.tfvars
                    terraform validate
                    terraform plan -var-file=${{ inputs.PREFIX }}_vars.tfvars
                    ## terraform apply -input=false -auto-approve -var-file=${{ inputs.PREFIX }}_vars.tfvars
                    cd ..
                done
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

如果我在 set_env.yml 中硬编码秘密,同时像下面那样调用 main.yml,它就可以工作

  jobs:
      deploy-dev:
        uses: ./.github/workflows/main.yml
        with:
          AWS_REGION: "us-east-2"
          PREFIX: "dev"
        secrets:
          AWS_ACCESS_KEY_ID: <harcoded value>
          AWS_SECRET_ACCESS_KEY: <hardcoded value>

我一直在尝试以多种方式使其工作,但没有成功。请帮忙

【问题讨论】:

  • Terraform 有一个现成的 GitHub 操作:github.com/marketplace/actions/hashicorp-setup-terraform
  • @MarkoE 使用 terraform 云,但我们不是
  • 如果您不想使用,则不必使用 TF Cloud 设置。我对其进行了配置,使其适合我的需求。另外:Credentials for Terraform Cloud (app.terraform.io) __can__ be configured.
  • 这可能是 GH 权限/组织问题。确保该操作的机密可用且可访问。
  • @GuiFalourd 是的,我可以调用工作流。即使我在调用者中硬编码凭据,它也可以正常工作。 probelm 从我尝试使用来自 github-actions/screts 的秘密开始

标签: amazon-web-services github terraform github-actions


【解决方案1】:

从 2022 年 5 月 3 日起,现在可以使用新关键字 inherithttps://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_callsecretsinherit

在调用工作流中,你告诉它继承可重用工作流中的秘密:

jobs:
  deploy-dev:
    uses: ./.github/workflows/main.yml
    with:
      AWS_REGION: "us-east-2"
      PREFIX: "dev"
    secrets: inherit

这使得机密在可重用工作流程中像正常一样可用:

with:
  myInput: ${{ secrets.MY_SECRET }}

请注意,无需在 workflow_call 触发器上声明机密。

【讨论】:

    猜你喜欢
    • 2021-05-12
    • 2023-01-16
    • 2020-09-19
    • 2021-06-25
    • 2022-11-09
    • 2020-04-08
    • 2021-06-27
    • 2021-11-22
    • 2022-08-13
    相关资源
    最近更新 更多