标签: github-actions

将 GOOGLE_APPLICATION_CREDENTIALS env var 与 GitHub Actions 密钥一起使用

我的问题很简单:我想运行依赖于GOOGLE_APPLICATION_CREDENTIALSGitHub Actions 密钥正确设置的代码。

问题是GOOGLE_APPLICATION_CREDENTIALS期望包含服务帐户文件的路径,秘密是否包含实际的服务帐户文件内容。

最好的做法是什么?


编辑

本质上,我运行一个 NodeJS 脚本,该脚本使用客户端库(PubSub、BigQuery 等)连接到多个 GCP 资源。据我了解,如果GOOGLE_APPLICATION_CREDENTIALS正确定义了 env var,它们就可以最轻松地工作。

google-cloud-platform github-actions

3
推荐指数
1
解决办法
5147
查看次数

在另一个存储库中使用该操作时如何访问 GitHub Action 存储库的文件?

我创建了一个 JavaScript 自动化,并在该脚本中创建了几个 YML 文件,并使用 fs 和 js-yaml 库导入它们。我已将此代码托管在存储库 A 中。

我想将我的存储库 A 转换为 GitHub 操作。我已按照GitHub 上的文档创建 JavaScript 操作。我已按照 GitHub 的建议使用verbal/ncc来创建一个包含所有库的文件。

但是当我在存储库 B 中使用此操作时,我收到一条错误消息,指出 yml 文件在上述路径中不可用。

GitHub 工作流程在执行期间是否下载操作的存储库?如果是,我如何将这些 yml 文件传递​​到脚本中?

如果没有,有哪些选项可以将这些文件传递到脚本中?

javascript github github-actions

3
推荐指数
1
解决办法
3766
查看次数

自动创建的 PR 不会触发 Github 工作流程

我实现了一个每周运行一次的工作流程,更新所有项目依赖项,并使用工作流程令牌打开一个包含更改的 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)

pull-request github-actions

3
推荐指数
1
解决办法
1989
查看次数

如何按特定顺序运行 GitHub actions .yaml 文件?

我有两个用于 GitHub 操作的 .yaml 文件。我需要仅在第一个文件之后执行第二个文件。如果作业都在​​其他文件中,我该如何实现这一点?

continuous-integration yaml action github github-actions

3
推荐指数
1
解决办法
2448
查看次数

actions/upload-pages-artifact 在 actions/upload-artifact 处失败,并显示“未在提供的路径中找到文件”

我想创建一个 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 …

emscripten github-pages github-actions

3
推荐指数
1
解决办法
4995
查看次数

GitHub Actions 工作流程不响应其他工作流程中的推送事件

我创建了一个工作流程,在推送分支 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-actions

3
推荐指数
1
解决办法
909
查看次数

Github Action : 如果 PR 已存在则停止该操作

我正在通过 GitHub 操作创建自动 PR,因此每当分支上发生新推送时dev。自动创建 PR 从devmaster

我想更改:如果 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)

github github-api github-actions

3
推荐指数
1
解决办法
2225
查看次数

Github Actions:在非草稿 PR 上运行工作流程

我有一个工作流程文件,我希望它在非草稿 PR 和 PR 的每个新提交上运行。

到目前为止,我尝试了两种方法:

  1. 使用 if 语句
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 转换为可供审核时,这不会触发工作流程。

  1. 使用类型声明
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 以及所有新提交上运行?

yaml github-actions

3
推荐指数
1
解决办法
2111
查看次数

自定义 GitHub Actions 中的新输出格式,因为 set-output 将被弃用

根据 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 文件中使用新格式的任何解决方案。

github github-actions

3
推荐指数
1
解决办法
1497
查看次数

Github 操作:在组织中的私人存储库上 Checkout@v3:未找到

我正在创建一个私有组织,并尝试通过检查一个私有存储库,然后在其中运行工作流,在我的私有存储库中创建可重用的工作流程。

我总是遇到同样的错误:

(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

3
推荐指数
1
解决办法
4967
查看次数