我的问题很简单:我想运行依赖于GOOGLE_APPLICATION_CREDENTIALSGitHub Actions 密钥正确设置的代码。
问题是GOOGLE_APPLICATION_CREDENTIALS期望包含服务帐户文件的路径,秘密是否包含实际的服务帐户文件内容。
最好的做法是什么?
编辑
本质上,我运行一个 NodeJS 脚本,该脚本使用客户端库(PubSub、BigQuery 等)连接到多个 GCP 资源。据我了解,如果GOOGLE_APPLICATION_CREDENTIALS正确定义了 env var,它们就可以最轻松地工作。
我创建了一个 JavaScript 自动化,并在该脚本中创建了几个 YML 文件,并使用 fs 和 js-yaml 库导入它们。我已将此代码托管在存储库 A 中。
我想将我的存储库 A 转换为 GitHub 操作。我已按照GitHub 上的文档创建 JavaScript 操作。我已按照 GitHub 的建议使用verbal/ncc来创建一个包含所有库的文件。
但是当我在存储库 B 中使用此操作时,我收到一条错误消息,指出 yml 文件在上述路径中不可用。
GitHub 工作流程在执行期间是否下载操作的存储库?如果是,我如何将这些 yml 文件传递到脚本中?
如果没有,有哪些选项可以将这些文件传递到脚本中?
我实现了一个每周运行一次的工作流程,更新所有项目依赖项,并使用工作流程令牌打开一个包含更改的 PR。
name: Automatic dependency update
"on":
workflow_dispatch: null
schedule:
- cron: 0 0 * * 1
jobs:
update:
name: Update to latest versions
runs-on:
- self-hosted
- default-runner
steps:
- name: Checkout Project
uses: actions/checkout@v2
- name: Install Java
uses: actions/setup-java@v2
- name: Update Versions
run: |
./gradlew useLatestVersions --info
- name: Commit and open PR
uses: peter-evans/create-pull-request@v3
with:
commit-message: Update to latest versions
committer: Update Bot <workflow@xxx.com>
branch: auto-dependency-update
base: dev
delete-branch: true
title: Automatic dependency update
draft: …Run Code Online (Sandbox Code Playgroud) 我有两个用于 GitHub 操作的 .yaml 文件。我需要仅在第一个文件之后执行第二个文件。如果作业都在其他文件中,我该如何实现这一点?
我想创建一个 GitHub 工作流,使用 emscripten 和 cmake 构建 C++ 应用程序,并将其部署到 GitHub Pages。我的工作流程工作如下所示。
environment:
name: github-pages
url: ${{steps.deployment.outputs.page_url}}
runs-on: ubuntu-latest
container:
image: emscripten/emsdk
steps:
- uses: actions/checkout@v3
- run: cmake -B $GITHUB_WORKSPACE/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEMSCRIPTEN=ON
- run: cmake --build $GITHUB_WORKSPACE/build --config ${{env.BUILD_TYPE}}
# actions/upload-pages-artifact uses this directory, but it doesn't exist in the image
- run: mkdir -p ${{runner.temp}}
- uses: actions/configure-pages@v1
- uses: actions/upload-pages-artifact@v1
with:
path: $GITHUB_WORKSPACE/build
- id: deployment
uses: actions/deploy-pages@v1
Run Code Online (Sandbox Code Playgroud)
upload-pages-artifact运行 tar 并在日志中列出要部署的所有文件。运行时upload-artifact日志显示Warning: No files were …
我创建了一个工作流程,在推送分支 A 时自动将分支 A 合并到分支 B 中,并创建了一个在推送分支 B 时运行的工作流程。但是,当推送分支 B 时,工作流不会运行。这是 GitHub 规范吗?如果是这样,我想知道是否有文档或问题明确说明了这一点。
name: CI
on:
push:
branches: [ "A" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Merge branch B
run: |
git fetch
git checkout B
git merge A
git push origin B
Run Code Online (Sandbox Code Playgroud)
name: CI-2
on:
push:
branches: [ "B" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Test
run: echo Hello
Run Code Online (Sandbox Code Playgroud) 我正在通过 GitHub 操作创建自动 PR,因此每当分支上发生新推送时dev。自动创建 PR 从dev到master
我想更改:如果 PR 已存在 ( master<- dev),则无需运行此操作,那么如何检查 PR 是否已存在?
GitHub 行动
name: Pull Request Action
on:
push:
branches: ['dev']
jobs:
create-pull-request:
runs-on: ubuntu-latest
steps:
- name: Create Pull Request
uses: actions/github-script@v6
with:
script: |
const { repo, owner } = context.repo;
const result = await github.rest.pulls.create({
title: 'Master Sync : Auto Generated PR',
owner,
repo,
head: '${{ github.ref_name }}',
base: 'master',
body: [
'This PR is auto-generated …Run Code Online (Sandbox Code Playgroud) 我有一个工作流程文件,我希望它在非草稿 PR 和 PR 的每个新提交上运行。
到目前为止,我尝试了两种方法:
name: Test
on:
pull_request:
branches:
- master
jobs:
test:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
Run Code Online (Sandbox Code Playgroud)
当 PR 转换为可供审核时,这不会触发工作流程。
name: Test
on:
pull_request:
branches:
- master
types:
- ready_for_review
jobs:
test:
runs-on: ubuntu-latest
Run Code Online (Sandbox Code Playgroud)
当新提交推送到 PR 时,这不会触发工作流程。
如何添加条件,以便我的工作流程在非草稿 PR 以及所有新提交上运行?
根据 GitHub 最近的公告,github 操作set-output将于明年被弃用。我能够echo "{name}={value}" >> $GITHUB_OUTPUT在工作流程文件中使用新格式 ( ),并且它有效。但我们还有一个用 python 编写的自定义 GitHub 操作(私有操作),我们也将set-output其用作main.py:
output_matrix = json.dumps(jsondata)
print(f"::set-output name=output_matrix::{output_matrix}")
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试过的是:
print(f"output_matrix = {output_matrix} >> $GITHUB_OUTPUT")
但这似乎没有帮助。我们如何set-output在自定义 github 操作 python 文件中使用新格式的任何解决方案。
我正在创建一个私有组织,并尝试通过检查一个私有存储库,然后在其中运行工作流,在我的私有存储库中创建可重用的工作流程。
我总是遇到同样的错误:
(https://i.stack.imgur.com/eEymF.png)
管道代码:
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
NET_6_Pipeline:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
repository: <ORGNAME>/<REPONAME>
token: ${{ secrets.TOKEN }}
path: reusable-actions
- uses: ./reusable-actions/BuildNET.yml@main
with:
secrets: inherit
Run Code Online (Sandbox Code Playgroud)
我创建了具有几乎所有权限的令牌,并将其放入我的组织机密中(我们已付款,因此可以在私人存储库中使用组织机密)
github-actions ×10
github ×4
yaml ×2
action ×1
emscripten ×1
github-api ×1
github-pages ×1
javascript ×1
pull-request ×1