标签: github-actions

如何在 GitHub Action 工作流程中的推送或合并之前获取先前的提交?

我在一个新项目中使用Nx来支持 monorepo。Nx 的一个好处是它可以确定 monorepo 中的哪些应用程序受到一系列更改(开始提交、结束提交)的影响。因此,如果您有一堆应用程序,您只需构建、测试和部署实际受更改影响的应用程序,而不是整个 monorepo。

我想设置一个 GitHub Action 工作流程,以仅在推送或合并到 master 时部署受影响的应用程序。但是,我无法弄清楚如何获得更改范围的“开始提交”。换句话说,如何获取上次部署的提交哈希?

GitHub 提供了一个 env 变量,GITHUB_SHA但这是触发工作流程的提交(即“结束提交”)。它还提供GITHUB_BASE_REF但仅适用于从分叉仓库运行的工作流与头部仓库相比。

CircleCIpipeline.git.base_revision为此目的。GitHub Actions 有类似的东西吗?

git github github-actions nrwl-nx

9
推荐指数
1
解决办法
3131
查看次数

在 Github Actions 中读取 JSON 文件

我想读取一个 JSON 文件并在 Github Actions YAML 文件中的字符串中使用一个属性。我该怎么做呢?(我想要的版本package.json

json yaml github-actions

9
推荐指数
6
解决办法
1万
查看次数

Github Actions - 有没有办法在获得正确反馈的同时继续出错?

我是 Github Actions 的新手,我正在尝试找到一种方法来实现以下功能:每当一个步骤失败时,它会显示它失败(将提供正确的反馈),但仍会继续执行其他步骤。

目前,失败导致步骤停止:

步骤失败阻止下一步开始

我见过最流行的建议是使用 continue-on-error,但这似乎使该步骤的结论为“成功”,除非您进入日志,否则不会显示它失败。

失败的步骤似乎是成功的

在上面的屏幕截图中,“秘密”步骤失败了,但除非输入日志,否则它似乎是成功的。

在阅读此线程时,我开始怀疑 GH 操作中可能尚不存在此功能。

我还尝试为每个步骤和/或工作使用条件。例如,我尝试过: if: ${{ success() }} || ${{ failure() }} - 这根本没有提供所需的功能,步骤失败并且下一步没有开始。

if: succeeded() || failed()- 从上面的 Github 社区线程中获取此语法,但它生成了一个语法错误(这是有道理的,因为它与此处指定的语法不兼容)。

总而言之,我正在寻找一种方法来使失败的步骤表明它们失败了,并且仍然使工作流继续进行下一步。

谢谢!

continuous-integration continuous-deployment github-actions

9
推荐指数
3
解决办法
3498
查看次数

如何安排 GitHub Actions 每晚构建,但仅在最近代码更改的地方运行它?

我想使用 GitHub Actions 进行自动夜间构建(来自开发分支的每日快照)。

为了降低计费成本,我希望 GitHub Actions 工作流仅在自上次 GitHub Actions 夜间构建工作流运行以来有新提交时触发(或执行操作)。

如何安排 GitHub Actions 每晚构建,但仅在自上次每晚运行以来代码发生更改的地方运行它?

请注意,还有其他 GitHub 操作工作流程,不会干扰此夜间构建。

github-actions

9
推荐指数
2
解决办法
1996
查看次数

Github Actions:如何从工作流调度事件运行在非主分支上创建的工作流?

有人可以帮助我了解 Github 操作选项卡的行为吗?作为在第三方 repo 上工作的 Actions 新手,我希望能够在分支上创建一个操作并在workflow_dispatch事件上执行它。我没有成功地做到这一点,但我发现了以下几点:

  • Action 选项卡将根据与上次执行的工作流相关的分支更改它找到工作流和操作代码的分支。例如,如果使用Run Workflow按钮从 Action 选项卡执行某个工作,并且Use Workflow From下拉列表设置为某个分支,Branch-A,则将采用 Actions 选项卡左侧的Workflows面板的内容来自 Branch-A 的.github/版本。
  • 这个工作流程提供workflow_dispatch事件触发。文本不会随着分支而改变。它似乎是从主人那里拿来的。或者,它可能取自最后一组结果。我没有对此进行测试,因为无论哪种方式,这都不是有用的行为。

解决方法是执行推送事件,这没问题,但这似乎与 Github 的高标准设计格格不入。

以上听起来是否 a) 关于正确和 b) 无论您如何看待它,而不是最佳行为?或者,是否有更好的方法来构建和测试操作?

github-actions

9
推荐指数
4
解决办法
2482
查看次数

GitHub 操作工作流计划不适用于非默认分支

我正在尝试在名为workflow-test. 它必须按计划运行,每 24 小时运行一次。此工作流必须运行 python 脚本并提交和推送 python 脚本所做的更改。我让它在推送上工作,但它似乎没有按计划工作。我查看了有关此主题的每个问题并尝试了所有解决方案,但无济于事。

这是我的代码:

name: update-state
on: 
  schedule:
    - cron: '0 0 * * *'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Git checkout
        uses: actions/checkout@v2
        with:
          ref: workflow-test

      - name: Setup python
        uses: actions/setup-python@v1
        with:
          python-version: '3.x'
      - name: Execute script
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
          python scripts/script.py
        
      - name: Commit files
        run: |
          git config --local user.email "action@github.com"
          git config --local user.name "GitHub Action" …
Run Code Online (Sandbox Code Playgroud)

git git-branch github-actions

9
推荐指数
1
解决办法
3618
查看次数

当我尝试从 ghcr.io 提取图像时,为什么会收到“来自守护程序的错误响应:被拒绝”

我有两个存储库。A和B。

在 A 里面,我有一个 docker 镜像。假设它的名字是ghcr.io/org/a

在 B 内部,我有一个想要使用这个包的操作。两个存储库都是私有的。

这是我的操作代码:

    - name: Log in to GitHub Container Repository
    run: |
      echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
    - name: Pull the image
    run: |
      docker pull ghcr.io/org/a:latest    
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我首先登录 ghcr.io 并收到消息Login succeeded。然后我想从我的其他存储库中提取图像。

但我收到这个错误:

来自守护程序的错误响应:被拒绝

但是,当我从自己的计算机登录 ghcr.io 时,我可以访问这两个存储库,并且可以从我的任何私有存储库中提取任何图像。

为什么B的GitHub Action登录后无法从A拉取镜像?

github-actions

9
推荐指数
3
解决办法
7544
查看次数

Github 包已成功发布,但未显示在“Packages”部分中

我有一个包发布到了 Github 包存储库并且成功了,但我仍然无法在包部分看到这个包

https://i.stack.imgur.com/WV7fr.jpg

https://i.stack.imgur.com/kGOFG.png

请参考所附截图,可见npm publish成功。我可能会错过什么?

github github-actions github-packages

9
推荐指数
3
解决办法
5994
查看次数

Docker 推送“缺少映像名称”-从 Github Actions 推送到 GCP Artifact Registry 时出错

我正在 Github 上运行google-github-actions/deploy-cloudrun操作,在尝试将 docker 映像推送到 Artifact Registry 时失败

  1. 我通过身份池进行身份验证
  2. docker镜像构建成功
  3. 但是,将图像推送Google Artifact Registry失败name invalid: Missing image name. Pushes should be of the form docker push HOST-NAME/PROJECT-ID/REPOSITORY/IMAGE

Github 操作 YML

# Authenticate Docker to Google Cloud Artifact Registry
  - name: Docker Auth
    id: docker-auth
    uses: 'docker/login-action@v1'
    with:
      username: 'oauth2accesstoken'
      password: '${{ steps.auth.outputs.access_token }}'
      registry: '${{ env.GAR_LOCATION }}-docker.pkg.dev'

  - name: Build and Push Container
    run: |-
      docker build -t "${{ env.GAR_LOCATION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.SERVICE …
Run Code Online (Sandbox Code Playgroud)

docker google-cloud-platform github-actions google-artifact-registry

9
推荐指数
2
解决办法
3101
查看次数

GitHub Actions:在矩阵定义中使用变量?

我在 GitHub Action 配置中有以下代码:

name: Build & Tests

on:
  pull_request:

env:
  CARGO_TERM_COLOR: always
  ZEROCOPY_MSRV: 1.61.0
  ZEROCOPY_CURRENT_STABLE: 1.64.0
  ZEROCOPY_CURRENT_NIGHTLY: nightly-2022-09-26

jobs:
  build_test:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        # See `INTERNAL.md` for an explanation of these pinned toolchain
        # versions.
        channel: [ ${{ env.ZEROCOPY_MSRV }}, ${{ env.ZEROCOPY_CURRENT_STABLE }}, ${{ env.ZEROCOPY_CURRENT_NIGHTLY }} ]
        target: [ "i686-unknown-linux-gnu", "x86_64-unknown-linux-gnu", "arm-unknown-linux-gnueabi", "aarch64-unknown-linux-gnu", "powerpc-unknown-linux-gnu", "powerpc64-unknown-linux-gnu", "wasm32-wasi" ]
        features: [ "" , "alloc,simd", "alloc,simd,simd-nightly" ]
        exclude:
          # Exclude any combination which uses a non-nightly toolchain but
          # enables nightly …
Run Code Online (Sandbox Code Playgroud)

variables continuous-integration environment-variables github-actions

9
推荐指数
1
解决办法
7285
查看次数