标签: github-actions

如何覆盖 Github Actions 中的环境变量?

鉴于我有以下内容:

name: MyWorkFlow

on: push

env:
  FOO: bar1
jobs:
  myJob:
    - run: export FOO=bar2
    - run: echo $FOO
Run Code Online (Sandbox Code Playgroud)

输出是“bar1”。无论如何,我可以覆盖这些环境变量吗?

continuous-integration github-actions

8
推荐指数
1
解决办法
6077
查看次数

另一个作业的 Github Actions 中的 If 条件

我的用例是,当拉取请求评论中有触发词时触发文档构建。我正在使用pull-request-comment-trigger来了解代码中是否存在触发词。

知道 Action 被触发后,我想在存储库中运行一些命令。所以,我必须为此使用操作/结帐。

我的疑问是,在run命令内部,只有 Shell 命令有效,对吧?如果满足上述条件,我想再做一份工作。

我当前的 Yaml 文件

name: Testing GH Actions

on:
  pull_request:
    types: [opened]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: khan/pull-request-comment-trigger@master
        id: check
        with:
          trigger: "AppajiC"
          reaction: rocket
        env:
          GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
      - run:
        # Generally Anything here runs if below condition satisfies.
        # I want to run another job here, which uses actions/checkout@v2 action
        if: steps.check.outputs.triggered == 'true'
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

continuous-integration github github-actions

8
推荐指数
1
解决办法
2万
查看次数

如何使用 GitHub 操作测试 Python 项目的 Dockerfile?

  • 有时我们在编写docker文件时会出错。如果 Dockerfile 中有错误,docker 构建将会失败。

  • 有时我们可能会忘记在 Dockerfile 中指定依赖项。让我们举个例子。

假设我有一个 python 脚本,可以截取任何网页(提供了 URL)的屏幕截图。

  • 现在,在我的代码中我使用 pyppeeteer(无头 chrome/chromium 自动化库(puppeteer 的非官方端口)
  • pyppeeteer 使用 chromium 和 chrome 驱动程序。这些已经安装在我的机器上。因此,运行pytest 将在我的本地开发环境中通过。
  • RUN我忘记在 dockerfile 中指定将安装 chromium 和 chrome 驱动程序的命令。因此在容器内运行测试将会失败。(尽管docker build会成功。)

我想自动化构建 docker 镜像并在容器中运行测试的任务。

在本地机器上,我可以运行docker build -t myproj .构建。

为了测试,我可以运行docker run -it myproj pytest(如果我忘记添加RUN安装 chromium 和 chromedriver,那么我的 pytest 将在容器内失败)

我希望我能够解释我的目的。

通常,在 github actions 中,python 源代码可以在 ubuntu、mac、windows 等上运行。除了不同的操作系统之外,我还想构建和测试我的 dockerfile。

python testing docker github-actions

8
推荐指数
1
解决办法
3801
查看次数

GITHUB ACTIONS 替换字符串中的字符

我正在尝试替换 GITHUB 操作步骤中变量中的字符

  - name: Set Up DB Name
    run: |
      DB_NAME="${GITHUB_REF_SLUG/-/_}"
      echo $DB_NAME
Run Code Online (Sandbox Code Playgroud)

我收到了错误的请求错误

我究竟做错了什么?

replace github-actions

8
推荐指数
1
解决办法
2万
查看次数

有没有办法隐藏 Github 上的分支?

我正在寻找一种在 github 上隐藏分支的方法,有可能吗?例如:我是存储库所有者,我想要三个贡献者,他们不能在主分支上合并,但他们可以打开 PR 并且他们看不到其他分支,只能看到他们自己的分支和主分支。我需要这个到一个特定的存储库。

有谁知道如何做到这一点?Github 操作或类似的东西?

我知道这可能会引起争议,但是......

谢谢你!:D

github github-api github-actions

8
推荐指数
0
解决办法
3273
查看次数

如何在没有大量推送的情况下测试 GitHub CI?

当我使用 GitHub Actions 创建新工作流程时,我有以下繁琐的工作流程:

  1. 编辑.github/workflows/ci.yml
  2. git commit --amend -mhope
  3. git push -f
  4. 转到我的浏览器,按 F5,单击工作流程并祈祷
  5. 从我的旧头上拔掉一些头发,最终转到 1

还有更好的选择吗?

git github-actions

8
推荐指数
1
解决办法
2468
查看次数

GitHub Actions 上传工件未从 npm run build 中找到提供的路径

我正在尝试使用 CICD 原则建立一个 React 网站。我可以在本地运行它,使用“npm run build”获取构建文件夹,并且当我手动将文件推送到 S3 时,网站运行良好。但是,当我尝试通过 github 操作运行构建和部署时,upload-artifacts 步骤会给出以下警告:“警告:在提供的路径中找不到文件:构建”。不会上传任何工件。” 显然,部署作业会失败,因为它找不到任何要下载的工件。究竟为什么会发生这种情况?自从在构建后运行 ls 将其列为当前工作目录中的文件夹之一以来,肯定会创建构建文件夹。

name: frontend_actions
on:
  workflow_dispatch:
  push:
    paths:
      - 'frontend/'
      - '.github/workflows/frontend_actions.yml'
    branches:
      - master
defaults:
  run:
    working-directory: frontend
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-node@v2
    - name: npm install
      run: npm install
    - name: npm build
      run: npm run build
      env:
        CI: false
    - name: Upload Artifact
      uses: actions/upload-artifact@master
      with:
        name: build
        path: build
  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: …
Run Code Online (Sandbox Code Playgroud)

npm github-actions cicd

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

GitHub Actions 单个存储库中的多个操作

我在 Github 存储库中有一个应用程序代码,我想自定义管道的某些阶段,并希望编写自己的自定义操作(在私有存储库中),因为这些自定义操作必须放置在操作所在的存储库中要运行我可以在单个存储库中保存多个操作吗?

还有什么方法可以在组织内的私人回购中使用这些回购?

github github-actions

8
推荐指数
1
解决办法
5606
查看次数

Github 工作流程不会从环境中读取变量

以下是我的简单 github 工作流程。它的目的是打印环境变量。

name: verify

on:
  workflow_dispatch:

jobs:
  read_env_variables:
    environment: build 
    runs-on: [ self-hosted, onprem_dae, docker ]
    steps:
      - name: cat on branch file
        run: |
          echo ${{ env.SOME_VARIABLE }}
Run Code Online (Sandbox Code Playgroud)

我创建了一个名为“build”的环境。在此环境中,我有一个名为SOME_VARIABLE设置为xyz 的环境变量。

当工作流程被触发时,我期望回显值xyz但实际值​​是“”。是不是少了点什么?

environment github-actions

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

将动态 Github 工作流矩阵与输入值和预定义值相结合

我有一个工作 GitHub 工作流程,它使用矩阵并构建所有定义的产品。

name: Build

on:
  push:
    tags:
      - "*"
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
       product: [yellow, green, black]
       limits: [10,20,50,100]

    steps:
      - uses: actions/checkout@v2
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    ...
Run Code Online (Sandbox Code Playgroud)

现在希望能够手动触发构建过程并使用输入值仅构建我想要的产品。我可以在 Github 界面上输入值,但看起来使用它们的语法不正确。

构建:.github#L1 评估作业“构建”的“策略”时出错。.github/workflows/build.yml(行:27,列:18):意外值“黄色”,.github/workflows/build.yml(行:28,列:17):意外值“50”

此外,如何将所有预定义产品的先前自动构建与通过一个工作流程内的输入手动完成的产品结合起来?

name: Build

on:
  push:
    tags:
      - "*"
  workflow_dispatch:
    inputs:
      product:
        description: "Product"
        default: "yellow"
      limit:
        description: "Limit"
        default: "50"

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        product: ${{ github.event.inputs.product}}
        limits: ${{ github.event.inputs.limit }}

        # product: [yellow, green, black]
        # limits: [10,20,50,100]

    steps: …
Run Code Online (Sandbox Code Playgroud)

github github-actions

8
推荐指数
2
解决办法
6350
查看次数