我想将多个秘密连接到 GitHub 上的工作流程操作中。
我想到的示例是创建从文件夹到文件名的完整路径。
我读过一些类似的帖子,但似乎没有人回答这个问题。如果我知道秘密的名称,我可以将单个 GitHub 秘密设置到环境变量中: env: PW_ID0007: "${{secrets.PW_ID0007}}" 如何在不知道秘密名称的情况下将所有秘密公开为环境变量(或者批量或以某种方式迭代它们并单独设置它们?)
要pytest
在 GitHub Actions 中运行,我必须传递一些secrets
Python 运行环境。例如,
- name: Test env vars for python
run: python -c 'import os;print(os.environ)'
env:
TEST_ENV: 'hello world'
TEST_SECRET: ${{ secrets.MY_TOKEN }}
Run Code Online (Sandbox Code Playgroud)
但是,输出如下:
environ({
'TEST_ENV': 'hello world',
'TEST_SECRET':'',
...})
Run Code Online (Sandbox Code Playgroud)
由于GitHub 的修订,它似乎不起作用。
根据 @raspiduino 的回答,我对导入环境变量的两个选项进行了更多探索。
name: python
on: push
jobs:
test_env:
runs-on: ubuntu-latest
steps:
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Test env vars for python
run: python -c 'import os;print(os.environ)'
env:
ENV_SECRET: ${{ secrets.ENV_SECRET }}
REPO_SECRET: ${{ …
Run Code Online (Sandbox Code Playgroud) 我有一个运行端到端测试的公共存储库。这些测试需要存储在 GitHub 中的机密。
相应的工作流程yaml
文件有如下pull_request
条目:
on:
pull_request:
....
Run Code Online (Sandbox Code Playgroud)
问题:如果我(所有者)自己创建拉取请求,工作流程将正确运行并访问机密。如果有人从分叉创建 PR,GitHub 会要求我批准运行,但是一旦我批准,工作流程将看不到这些秘密的值,并且测试将失败。
如果我更改pull_request
为pull_request_target
,它将正确访问秘密。然而,这样,在运行工作流程之前它不会征求我的批准(因此秘密很容易泄露)。
pull_request_target:
branches:
- main
Run Code Online (Sandbox Code Playgroud)
问题:当从分叉上运行 PR 时,如何使 GitHub 操作访问机密,同时仍需要批准运行?
continuous-integration github github-actions github-secret cicd
我有一个非 Spring Boot Java 应用程序,想要使用 GitHub Secrets 将一些密钥存储和读取到我的applications.properties
文件中。
我已经对这些值进行了 Base64 编码并将它们存储在 GH Secrets 中,现在我尝试在我的application.properties
文件中像这样访问它们:
com.stuff.some-prod-key=${{ secrets.SOME_PROD_KEY }}
Run Code Online (Sandbox Code Playgroud)
但是,当尝试使用此语法时,${{ secrets.SOME_PROD_KEY }}
如果我已将其硬编码到文件中,则该值将与实际值相对应application.properties
。
如果没有Spring Boot,这可能吗?如果是这样,我是否需要先让我的属性文件从另一个文件中读取它,还是我这样做完全错误?
我有一个可重用的工作流程,用于构建 Docker 映像并将其推送到 ECR。
工作流的输入之一用于指定 docker build 命令的参数。这是可重用工作流程中的命令:
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG ${{ inputs.DOCKER_BUILD_ARGS }} .
Run Code Online (Sandbox Code Playgroud)
在某些情况下,我需要 DOCKER_BUILD_ARGS 来包含机密,例如:
secrets:
AWS_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
uses: XXXXX/.github/workflows/DockerBuildPushECR.yml@main
with:
ECR_REGISTRY: XXXXXX
ECR_REPOSITORY: XXXXX
DOCKER_BUILD_ARGS: "--build-arg PASSWORD=${{ secrets.PASSWORD }}"
Run Code Online (Sandbox Code Playgroud)
GitHub 抱怨工作流程无效:“无法识别的命名值:‘秘密’”,因为它只需要秘密部分中的秘密。
我无法将它作为秘密传递,因为可重用工作流程不需要这个秘密,我只是希望它成为字符串的一部分......
无法使用 env,因为它无法与可重用工作流程结合使用
我怎样才能让这个场景发挥作用?
我有一个私有存储库,我正在尝试将 python-semantic-release 添加到 GitHub Actions 中。
当尝试增加版本号时,我收到错误消息,指出我没有对存储库的写访问权限。我已经使用了 Github Classic PAT 和 Finegrained PAT,但两者都不起作用。我授予了所有回购权限只是为了确保我没有搞砸任何事情。
我还在 GitHub Actions 中回应了我的 Secrets.TOKEN,以确保它们也被正确调用。
即使我已生成具有存储库所有权限的访问令牌,为什么我仍会收到写入错误?
主.ymlname: Semantic Release
on:
push:
branches:
- main
jobs:
release:
runs-on: ubuntu-latest
concurrency: release
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Step 1 - Echo out a GitHub Actions Secret to the logs
run: |
echo "The GitHub Action Secret will be masked: "
echo ${{ secrets.TOKEN }}
echo "Trick to echo GitHub Actions Secret: …
Run Code Online (Sandbox Code Playgroud) 当我做
${{ secrets.MY_SECRET }}
Run Code Online (Sandbox Code Playgroud)
它返回空字符串,
我是提交更改的人,它是我的存储库,因此应该不存在有关秘密授权的问题,并且也克隆了它而不是分叉,
这就是我的行动工作的样子
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js environment
uses: actions/setup-node@v2.1.5
- name: Download Modules
run: npm ci
- name: Test
env:
TEST_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TEST_SECRET: ${{ secrets.TEST_SECRET }}
run: |
echo ${#TEST_GITHUB_TOKEN}
echo ${#TEST_SECRET}
- name: React Build
run: npm run build
env:
CI: true
REACT_APP_FIREBASE_API_KEY: ${{ secrets.REACT_APP_FIREBASE_API_KEY }}
REACT_APP_PIXABAY_API_KEY: ${{ secrets.REACT_APP_PIXABAY_API_KEY }}
REACT_APP_TEST: 'TESTING'
- name: Upload a Build Artifact
uses: actions/upload-artifact@v2.2.3
with:
name: docs
path: './build' …
Run Code Online (Sandbox Code Playgroud)