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



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

/home/runner/work/_temp/c6144b9a-c8e3-489a-ae97-795f592c57f0.sh: line 6: /config: Permission denied
echo: write error: Broken pipe

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/

编辑:

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

但是,我仍然难以将 github 秘密变量通过管道传输到文件中,因为 github 屏蔽了机密并且 im 返回了一个错误。

base64: invalid input

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

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

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

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

更改此行:

sudo echo $KUBECONFIG_B64DATA | base64 --decode > /config

sudo bash -c 'base64 --decode <<< "$KUBECONFIG_B64DATA" > /config'

sudo tee /config > /dev/null < <(base64 --decode <<< "$KUBECONFIG_B64DATA")

相关内容

最新更新