我在一个新项目中使用Nx来支持 monorepo。Nx 的一个好处是它可以确定 monorepo 中的哪些应用程序受到一系列更改(开始提交、结束提交)的影响。因此,如果您有一堆应用程序,您只需构建、测试和部署实际受更改影响的应用程序,而不是整个 monorepo。
我想设置一个 GitHub Action 工作流程,以仅在推送或合并到 master 时部署受影响的应用程序。但是,我无法弄清楚如何获得更改范围的“开始提交”。换句话说,如何获取上次部署的提交哈希?
GitHub 提供了一个 env 变量,GITHUB_SHA但这是触发工作流程的提交(即“结束提交”)。它还提供GITHUB_BASE_REF但仅适用于从分叉仓库运行的工作流与头部仓库相比。
CircleCIpipeline.git.base_revision为此目的。GitHub Actions 有类似的东西吗?
我想读取一个 JSON 文件并在 Github Actions YAML 文件中的字符串中使用一个属性。我该怎么做呢?(我想要的版本package.json)
我是 Github Actions 的新手,我正在尝试找到一种方法来实现以下功能:每当一个步骤失败时,它会显示它失败(将提供正确的反馈),但仍会继续执行其他步骤。
目前,失败导致步骤停止:

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

在上面的屏幕截图中,“秘密”步骤失败了,但除非输入日志,否则它似乎是成功的。
在阅读此线程时,我开始怀疑 GH 操作中可能尚不存在此功能。
我还尝试为每个步骤和/或工作使用条件。例如,我尝试过:
if: ${{ success() }} || ${{ failure() }} - 这根本没有提供所需的功能,步骤失败并且下一步没有开始。
if: succeeded() || failed()- 从上面的 Github 社区线程中获取此语法,但它生成了一个语法错误(这是有道理的,因为它与此处指定的语法不兼容)。
总而言之,我正在寻找一种方法来使失败的步骤表明它们失败了,并且仍然使工作流继续进行下一步。
谢谢!
我想使用 GitHub Actions 进行自动夜间构建(来自开发分支的每日快照)。
为了降低计费成本,我希望 GitHub Actions 工作流仅在自上次 GitHub Actions 夜间构建工作流运行以来有新提交时触发(或执行操作)。
如何安排 GitHub Actions 每晚构建,但仅在自上次每晚运行以来代码发生更改的地方运行它?
请注意,还有其他 GitHub 操作工作流程,不会干扰此夜间构建。
有人可以帮助我了解 Github 操作选项卡的行为吗?作为在第三方 repo 上工作的 Actions 新手,我希望能够在分支上创建一个操作并在workflow_dispatch事件上执行它。我没有成功地做到这一点,但我发现了以下几点:
解决方法是执行推送事件,这没问题,但这似乎与 Github 的高标准设计格格不入。
以上听起来是否 a) 关于正确和 b) 无论您如何看待它,而不是最佳行为?或者,是否有更好的方法来构建和测试操作?
我正在尝试在名为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) 我有两个存储库。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 包存储库并且成功了,但我仍然无法在包部分看到这个包
https://i.stack.imgur.com/WV7fr.jpg
https://i.stack.imgur.com/kGOFG.png
请参考所附截图,可见npm publish成功。我可能会错过什么?
我正在 Github 上运行google-github-actions/deploy-cloudrun操作,在尝试将 docker 映像推送到 Artifact Registry 时失败。
Google Artifact Registry失败name invalid: Missing image name. Pushes should be of the form docker push HOST-NAME/PROJECT-ID/REPOSITORY/IMAGEGithub 操作 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
我在 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
github-actions ×10
git ×2
github ×2
docker ×1
git-branch ×1
json ×1
nrwl-nx ×1
variables ×1
yaml ×1