如何在GitHub工作流程中引用环境变量?

4

我正在尝试在进行curl请求时读取GitHub环境变量,但是这些变量没有解析,导致出现错误。我要读取的值是"KEY_VAULT"和"ACR_PATH:SNAPSHOT_VERSION",在"flow create container web"中。以下是我附加的GitHub工作流示例。

name: Pull Request

on:
  pull_request:
    types: [review_requested]

env:
 
  KEY_VAULT: "some vault"
  SNAPSHOT_VERSION: ${{ format('{0}-SNAPSHOT', github.event.number) }}
  GITHUB_ISSUE_NUMBER: ${{ github.event.number }}
  GITHUB_REPO: ${{ github.event.repository.name }}
  DEPLOYMENT_NOTIFICATION_URL_TOKEN: ${{ secrets.SOME_TOKEN }}
  DEPLOYMENT_URL_TOKEN: 123
  ENVIRONMENT: sandbox
jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0

      - name: Docker login
        #if: steps.pr-label.outputs.result == 'true'
        uses: azure/docker-login@v1
        with:
          login-server: acr-login.com
          username: user
          password: pwd

      - name: Publish Snapshot To ACR
        #if: steps.pr-label.outputs.result == 'true'
        run: |
          echo steps.pr-label.outputs.result
          echo Publishing to $ACR_PATH:$SNAPSHOT_VERSION
          docker build . -t $ACR_PATH:$SNAPSHOT_VERSION
          docker push $ACR_PATH:$SNAPSHOT_VERSION

      - name: Create Container Web
          #if: steps.pr-label.outputs.result == 'true'
        run: |
            AUTH_HEADER="Authorization: token $DEPLOYMENT_URL_TOKEN"
            CONTAINER_WEB_NAME="CONATINER"
            PROJECT_NAME="tirumalesh-automate"
            REGION="US"
         URL="https://abcd.com/$REGION/$PROJECT_NAME/container-web/$CONTAINER_WEB_NAME"
            PAYLOAD='{
                                 "spec": {
                                   "image": "${{env.ACR_PATH}}:${{env.SNAPSHOT_VERSION}}",
                                   "secrets": {
                                     "key_vaults": [
                                       {
                                         "name": "${{env.KEY_VAULT}}",
                                         "secrets": [
                                           {
                                             "name": "mysql-pwd",
                                             "environment_variable": "mysql_pwd"
                                           },
                                           
                                         ]
                                       }
                                     ],
                                   },
                                 }
                                 }'
            curl --location --request PUT 'https://abcd/us/projects/tirumalesh-automate/resources/container-web/configuration-service' \
            --header "$AUTH_HEADER" \
            --header 'Content-Type: application/json' \
                        --data-raw "$PAYLOAD"
1个回答

0

你在PAYLOAD周围使用了单引号,这意味着它会将字符串按字面意义解释而不会扩展任何内容。

请使用双引号并转义引号。

PAYLOAD="{
    \"spec\": {
        \"image\": \"${{env.ACR_PATH}}:${{env.SNAPSHOT_VERSION}}\",
        \"secrets\": {
            \"key_vaults\": [
                {
                    \"name\": \"${{env.KEY_VAULT}}\",
                    \"secrets\": [
                    {
                        \"name\": \"mysql-pwd\",
                        \"environment_variable\": \"mysql_pwd\"
                    },
                    
                    ]
                }
            ],
        },
    }
}"
curl --location --request PUT 'https://abcd/us/projects/tirumalesh-automate/resources/container-web/configuration-service' \
--header "$AUTH_HEADER" \
--header 'Content-Type: application/json' \
--data-raw "$PAYLOAD"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接