如何将 github 秘密变量通过管道传输到文件中

Kay*_*Kay 2 kubectl github-actions

我有一个 github 管道,并将 github sercret 变量通过管道传输到文件中,但出现以下错误。

/home/runner/work/_temp/c6144b9a-c8e3-489a-ae97-795f592c57f0.sh: line 6: /config: Permission denied
echo: write error: Broken pipe
Run Code Online (Sandbox Code Playgroud)

name: pipeline

on: [ push ]

env:

  KUBECONFIG_B64DATA: ${{ secrets.KUBECONFIG_B64DATA }}

  deploy:
    name: Deploy
    # if: startsWith(github.ref, 'refs/tags/')
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@master

    - name: Setup Kubectl
      run: |
        sudo apt-get -y install curl
        curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
        chmod +x ./kubectl
        sudo mv ./kubectl /usr/local/bin/kubectl
        sudo echo $KUBECONFIG_B64DATA | base64 --decode > /config
        sudo mkdir -p ~/.kube
        sudo mv config /root/.kube/
Run Code Online (Sandbox Code Playgroud)

编辑:

我使用不同的文件夹来获取传递的权限 isuses (/tmp/config)

然而,我仍然很难将 github 秘密变量通过管道传输到文件中,因为 github 掩盖了秘密,并且我返回了错误。

base64: invalid input
Run Code Online (Sandbox Code Playgroud)

我相信这是因为当你回显一个秘密时,你只是得到 **** 而不是实际值

Sho*_*har 7

我在这个问题上花了4个小时。然后找到了隐藏在评论中的解决方案。

正如@Kay所指出的,这是由空格引起的。这样做为echo "${KUBECONFIG_B64DATA// /}" | base64 --decode > /tmp/config我解决了问题。

只是将其作为官方答案发布,以便其他人以后更容易找到它。