在 GitHub 操作中,我使用脚本创建一个文件。然后我可以使用 git 创建一个分支,添加文件,提交文件并将分支推送到存储库。全部使用git。
然后我想在我的操作中创建 PR,因此我使用 GH CLI。在我的步骤中,这是与 PR 相关的部分:
echo "GH CLI Auth"
gh auth login --with-token < ${{ secrets.GITHUB_TOKEN }}
echo "Create PR"
gh pr create --reviewer myhandle --title "Show Notes ${{ env.NEWFILE_PATH }}" --body "Show Notes ${{ env.NEWFILE_PATH }}"
Run Code Online (Sandbox Code Playgroud)
但我收到错误。
GH CLI Auth
/home/runner/work/_temp/<GUID_CENSORED>.sh: line 13: ***: No such file or directory
Error: Process completed with exit code 1.
Run Code Online (Sandbox Code Playgroud)
我授予 GitHub 令牌对代码和拉取请求的写入权限。
permissions:
contents: write
pull-requests: write
Run Code Online (Sandbox Code Playgroud)
有没有办法通过提交消息值触发特定的 Github 操作工作流程?例如,如果我使用提交消息“smoke_test”进行推送,则只有(一个特定工作流程)烟雾测试工作流程应从一组工作流程中触发。请帮忙,谢谢!
我目前正在开发一个 android 项目,我使用 github action 来测试该项目。但每当构建时,都会因找不到文件而出现错误google-services.json。
产生的错误如下
File google-services.json is missing. The Google Services Plugin cannot function without it.
Run Code Online (Sandbox Code Playgroud)
现在,我不想google-services.json在 github 上提交或上传文件。那么,有没有其他方法可以解决这个问题呢?
我试图将 gradle 缓存保留在我的 GitHub 工作流程中,但它不起作用。我是 gradle 新手,正在努力找出如何/为什么无法在项目的工作流程构建之间保留 gradle 缓存
在我的 GitHub工作流程文件中,我有两个 gradle 缓存。一个是 gradle 缓存,另一个是 gradle 包装器:
- name: Setup Gradle Dependencies Cache
uses: actions/cache@v2
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}
- name: Setup Gradle Wrapper Cache
uses: actions/cache@v2
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
Run Code Online (Sandbox Code Playgroud)
本地 a./gradlew clean后跟 a./gradlew build将在大约 33 秒内构建我的项目...在 GitHub 上,需要 3 倍的时间(?):https://github.com/jactor-rises/jactor-persistence/runs/4794532441 ?check_suite_focus =真
如何在 GitHub 工作流程中设置有效的依赖项和包装器缓存?
因此,我正在尝试复制一个用于设置我在本地运行良好的 docker 堆栈的流程,在 Github 操作中在尽可能接近生产/现实世界的场景下执行一些测试。
但是,我在 GitHub 操作工作流程上遇到以下问题,导致失败:
psycopg2.OperationalError: could not translate host name "db" to address: Temporary failure in name resolution
Run Code Online (Sandbox Code Playgroud)
本质上,在本地网络中有效的方法在 Github 操作中不起作用。唯一看起来不同的可能是我在 Github 操作中使用的 docker 版本。
这是我的workflow/ci.yml文件:
psycopg2.OperationalError: could not translate host name "db" to address: Temporary failure in name resolution
Run Code Online (Sandbox Code Playgroud)
本质上,所有步骤都在进行,直到服务需要通过网络与服务api进行通信,例如,dbdb:5432
我的local.yml文件如下:
version: '3.8'
services:
traefik:
image: traefik:latest
container_name: traefik_proxy
restart: always
security_opt:
- no-new-privileges:true
command:
## API Settings - https://docs.traefik.io/operations/api/, endpoints - https://docs.traefik.io/operations/api/#endpoints ##
- --api.insecure=true # <== Enabling …Run Code Online (Sandbox Code Playgroud) 我在同一个 GitHub Actions 工作流程中有两项工作。第一个文件创建一个文件,第二个文件期望在第一个文件创建的同一目录中找到该文件。
我想我可以actions/cache@v3像这样使用它:
jobs:
job1:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: some_dir/my_file
key: my_file
... (create the file)
job2:
needs: job1
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: some_dir/my_file
key: my_file
... (use the file)
Run Code Online (Sandbox Code Playgroud)
GitHub Action 表示缓存已在 中成功恢复job2,但是,在job2我无法my_file在我期望的目录中找到它。问题是什么?
我想从文件中读取版本并v11.0.5.1.aws使用工作流程创建标签。然后我想在 docker 镜像中使用该标签。为此,我创建了一个分支作为 devops。
首先创建一个 VERSION 文件作为
1.1.3 20 Apr, 2022
Run Code Online (Sandbox Code Playgroud)
创建了一个工作流程作为release-version.yml
name: Release Version
on:
push:
branches:
- devops
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Bump version and push tag
uses: melheffe/version_release_composer@master
env:
PREPEND: 'v'
APPEND: '.aws' # must include '.' or it will append without separation
DRAFT: 'false'
PRERELEASE: 'true'
TOKEN: ${{ secrets.AUTH_TOKEN }}
TRIGGER: ${{ github.event.pull_request.base.ref }} # can use the triggering branch or define a fixed one like this: 'master' …Run Code Online (Sandbox Code Playgroud) 我有一个 Node.js 项目,其中包括 Istanbul,一个可以生成代码覆盖率报告的工具。我想查看该项目的 GitHub Pull 请求中的测试未涵盖哪些行以及哪些行已涵盖。
伊斯坦布尔允许我在目录中本地查看覆盖范围coverage/lcov-report,但我希望在 GitHub 中的拉取请求的“文件已更改”选项卡中看到此内容。
有一些工具可以提供可视化的逐行覆盖:
CodeCov 会执行此操作,但要求我将覆盖率报告上传到他们的服务器。
Covaralls也这样做,但要求您授予他们访问您的存储库的权限。

Jest覆盖率报告使用GitHub操作添加注释,但无法添加逐行测试覆盖率的视觉指示(例如突出显示)。
有没有其他方法可以在 GitHub Pull Request 中可视化逐行测试覆盖率?
在 GitHub Actions 上安装 Docker 的官方/推荐方式是什么?
特别是,我需要在 GitHub Actions 上运行自定义脚本,除其他任务外,该脚本还调用docker build和docker push.
我不想要构建/推送的预制操作,我想要访问该docker命令。
我应该怎么办?
我能找到的唯一官方操作使用 Docker Buildx 而不是普通的 docker:https://github.com/marketplace/actions/build-and-push-docker-images
除此之外,我可以找到此操作(https://github.com/marketplace/actions/setup-docker),但我不知道我是否可以信任该来源,因为它不是官方的。
有什么建议吗?如何docker在 GitHub Actions 上安装该命令?
在同一工作流程中重用相同的环境规则
在 Github 中运行我们的工作流程,我们将任务分为 2 个作业;使用 CodeDeploy 构建 docker 映像并附加标签并部署到 AWS。拆分任务的原因是为了避免在部署失败时创建新标签。
然而......使用环境保护规则会造成障碍,因为每项工作都需要获得批准(即使我们之前已经运行过相同的环境)
部署作业是一个有条件的作业,这意味着它取决于构建作业的成功。
有什么办法可以解决这个问题吗?
github-actions ×10
github ×3
docker ×2
github-cli ×2
android ×1
caching ×1
cicd ×1
commit ×1
environment ×1
firebase ×1
git-tag ×1
gradle ×1
linux ×1
triggers ×1
workflow ×1