标签: github-actions

如何在 Github 操作工作流文件中使用片段以避免重复?

问题:我们为 CI 使用 github 操作工作流,并且我们有许多 github 存储库。我需要能够一次更改每个存储库可重复的所有内容。

是否可以在 github 操作工作流 yml 文件中使用位于不同存储库中的 mb 的某个片段。

yaml github code-snippets github-actions

7
推荐指数
1
解决办法
936
查看次数

从私有存储库获取徽章的状态

我正在尝试在私人存储库(svg 图像)中获取徽章的状态,我是从未经身份验证的位置执行此操作,并且收到了预期的 404 错误消息。

有谁知道我应该如何将 access_token 信息添加到 GET 方法中才能实际获取其状态?

从 URL 调用徽章,如:

https://github.com/xx/yy/workflows/zz/badge.svg?event=push&access_token=hhhh
Run Code Online (Sandbox Code Playgroud)

返回 404。

此外,在请求的标头中设置令牌:

headers: {'Authorization': 'token hhhh', ... }
Run Code Online (Sandbox Code Playgroud)

返回 404。

谢谢!

github badge github-api github-actions

7
推荐指数
1
解决办法
245
查看次数

如何查看未加密的 git 机密?

背景

我的代码中有一些秘密,在了解 GitHub Actions 后,我决定将它们保存在存储库秘密菜单中,以便以后在我的管道中使用。

问题

但是,现在我需要访问这些秘密来开发新功能,而我不能。每次我尝试查看值时,它都会要求我更新机密。没有选择只是“看到”它们。

我不想更新任何东西,我只想看到它们的值。

如何在项目中查看我的机密的未加密值?

github github-actions

7
推荐指数
6
解决办法
2048
查看次数

如何根据分支设置工作流环境变量

我目前有两个几乎相同的 GitHub 操作工作流文件,只有一个配置为对分支上master的push/pull_requests 做出反应,另一个配置为production.

登台工作流程如下所示:

env:
  GCLOUD_PROJECT: my-project-stg
  VERCEL_TARGET: staging

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
Run Code Online (Sandbox Code Playgroud)

生产工作流程开始如下:

env:
  GCLOUD_PROJECT: my-project-prd
  VERCEL_TARGET: production

on:
  push:
    branches: [ production ]
  pull_request:
    branches: [ production ]
Run Code Online (Sandbox Code Playgroud)

其余的工作流文件是相同的,所以这显然不是很 DRY。

我想有 1 个单一的工作流文件,并以某种方式根据分支名称在两组变量之间切换。有没有办法实现这一点,或者我可能从错误的角度来解决这个问题?

如果可以在共享基本定义上扩展两个工作流文件,我猜也可以解决这个问题。

github environment-variables github-actions

7
推荐指数
2
解决办法
4573
查看次数

使用 docker/build-push-action 在 GitHub Actions 中本地构建 docker 镜像

我的项目中有几个 Dockerfile。一种是用于构建basic图像,其中包含一些业务级别的抽象。其他人正在根据basic图像构建服务。

所以在我的服务的 Dockerfiles 中,我有类似的东西

FROM my-project/base
# Adding some custom logic around basic stuff
Run Code Online (Sandbox Code Playgroud)

我使用 GitHub Actions 作为我的 CI/CD 工具。起初我有一个步骤将 docker 安装到我的工人中,然后运行如下:

- name: Build base image
  working-directory: business
  run: docker build -t my-project/base .

- name: Build and push service
  working-directory: service
  run: |
    docker build -t my-ecr-repo/service .
    docker push my-ecr-repo/service
Run Code Online (Sandbox Code Playgroud)

但是后来我找到了 docker/build-push-action 并决定在我的管道中使用它:

- name: Build business-layer container
  uses: docker/build-push-action@v2
  with:
    load: true
    tags: my-project/base
    context: business
    file: business/Dockerfile

- name: Build …
Run Code Online (Sandbox Code Playgroud)

docker github-actions

7
推荐指数
2
解决办法
5130
查看次数

如何在 github 操作中使用私有 docker 图像

我正在尝试在运行私有 docker 映像的 github-actions 中设置作业。我将使用容器选项在该 docker 镜像中进行构建。链接

我正在使用以下代码:

jobs:
  container1:
    runs-on: ubuntu-latest
    container: saeed/privateimage:1
    steps:
      - uses: actions/checkout@v2
      - run: |
          echo "Runs inside a container"
Run Code Online (Sandbox Code Playgroud)

但是我无法提供我的 docker hub 凭证,所以它失败了。

如何进行身份验证以提取该私有映像?

谢谢。

docker github-actions

7
推荐指数
3
解决办法
7190
查看次数

使用 github-actions 中的 python-coveralls 返回“无法提交覆盖范围:422 客户端错误”

Coveralls python 包装器 ( python-coveralls ) 最近收到了一个重大更新 (2.2.0 -> 3.0.0),我的 github-actions 工作流不再运行。

这是我的工作流程的相关部分:

  test:
    runs-on: ubuntu-latest
    steps:
    {... non-relevant steps...}
    - name: Run test suite
      run: tox -e $(echo py${{ matrix.python-version }}-mg${{ matrix.PYMONGO }} | tr -d . | sed -e 's/pypypy/pypy/') -- -a "--cov=my_project"
    - name: Send coverage to Coveralls
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      run: coveralls
Run Code Online (Sandbox Code Playgroud)

这曾经适用于以前版本的python-coveralls,所以tox命令不是问题

这是我收到的错误:

Submitting coverage to coveralls.io...
Could not submit coverage: 422 Client Error: Unprocessable Entity for url: https://coveralls.io/api/v1/jobs
resubmitting with …
Run Code Online (Sandbox Code Playgroud)

python coveralls github-actions

7
推荐指数
1
解决办法
429
查看次数

Github Actions Build - 在多个文件夹上推送到 ECR

我的 GitHub 存储库中有以下文件夹结构。

docker
  serverless
    dotnet
      2.1
        Dockerfile
      3.1
        Dockerfile
    python
      3.8
        Dockerfile
Run Code Online (Sandbox Code Playgroud)

现在我已经使用 github-actions 自动构建并推送到 ECR。

是否可以使用 github-actions 遍历每个文件夹并触发构建?

我想如果更改被推送到

  • 2.1Dockerfile图像应始终使用 2.1 标记并推送到 ECR

  • 如果更改在 3.1 中Dockerfile,则应始终标记为 3.1 并推送到 ECR。

关于如何使用 github-actions 实现这一目标的任何想法?

.net python automation docker github-actions

7
推荐指数
1
解决办法
161
查看次数

GitHub - 工作: 什么是: 使用操作/结帐

我看到了很多用途:

jobs:
  myjob:
    steps:
      - name: checkout
        uses: "actions/checkout@something"
      - ...
Run Code Online (Sandbox Code Playgroud)

但我找不到这条线的目的是什么:

uses : "actions/checkout@something"
Run Code Online (Sandbox Code Playgroud)

它与此相似吗?

 run: git checkout something   
Run Code Online (Sandbox Code Playgroud)

workflow github github-actions

7
推荐指数
2
解决办法
1661
查看次数

在自定义的 release.yml 文件中根据版本号获取 git 更改

我的目标是创建一个 GitHub 操作,当 release.yml 文件更改时,它将更新现有版本或在检查该版本是否为新版本后创建新版本,并根据先前的提交进行检查。最终想将此添加到我想添加操作和 release.yml 的其他项目中。

我目前遇到的问题是很难围绕如何去检测 release.yml 文件中的版本更改。

对于添加新版本的非常基本的用例,创建 action.yml 并添加的简单方法

version_1_0: # id of input
description: '1.0'
required: true
default: 'The most important changes are downgrading the artifact to java7 (from 8) and switching to gmavenplus plugin to compile groovy.
      Besides that, there is a lot of restructuring inside of the pom.xml file

      # Misc

      * Polishing (f2ec0bb, 9e2ae89 and 8654493)

      _Reviewed by_: @user' 
Run Code Online (Sandbox Code Playgroud)

稍后在 index.js 文件中

const version = core.getInput('version_1_0');
core.setOutput("ver", version);
Run Code Online (Sandbox Code Playgroud)

给出稍后可以在 GitHub 操作文件中获取和清理的输出,然后转发到发布步骤以用于创建发布

  push: …
Run Code Online (Sandbox Code Playgroud)

javascript release github autorelease github-actions

7
推荐指数
1
解决办法
141
查看次数