github-actions - 如何在 GitHub 操作中屏蔽多行值?
问题描述
行动:
- id: sets-a-secret
run: |
local_secret=$(doppler secrets get GAR_JSON_KEY --plain)
echo "::add-mask::$local_secret"
echo "::set-output name=my-secret::$local_secret"
env:
DOPPLER_TOKEN: ${{ secrets.DOPPLER_TOKEN }}
local_secret
等于:
{
"type": "service_account",
"project_id": "contrawork"
}
在 GitHub 日志中,只有值的第一行是隐藏的:
##[debug]/usr/bin/bash -e /var/actions-runner/_runners/1/_work/_temp/10dcce73-cb22-43d9-853d-6c9674f6895e.sh
::add-mask::***
"type": "service_account",
"project_id": "contrawork"
}
::set-output name=my-secret::***
##[debug]steps['sets-a-secret']['outputs']['my-secret']='***'
"type": "service_account",
"project_id": "contrawork"
}
##[debug]Finishing: Run local_secret=$(doppler secrets get GAR_JSON_KEY --plain)
add-mask
避免在输出中暴露多行值的正确方法是什么?
解决方案
您可以通过屏蔽每一行来做到这一点。
这是一个例子:
name: Multiline variables
on:
push:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Set multiline env variable
run: |
echo 'MULTI<<EOF' >> $GITHUB_ENV
echo -e "Test\nstring" >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- name: Mask multiline env
run: |
while read -r line;
do
echo "::add-mask::${line}"
done <<< "${{ env.MULTI }}"
- name: Print multiline secret
run: echo -e "${{ env.MULTI }}"
推荐阅读
- kotlin - 在 Kotlin 中隐藏基类构造函数参数
- python - 表输入参数和标量输出参数
- java - 什么是隐藏堆栈帧?
- php - 如何使用 for 循环使用多维索引数组?
- git - 适用于非常小的开发团队的 GIT 功能分支策略
- javascript - 确认数据是否已呈现的方法
- php - JQUERY AJAX GET 和 POST 访问不同的文件?
- java - Spring boot、ElasticSearch 和 TestContainers 集成测试。拒绝连接
- javascript - 使用模型 [Angular] 的嵌套对象填充选择下拉列表
- java - Android Studio 的模拟器摄像头倒置打开?