标签: github-actions

如何测试自定义 GitHub 操作而不将其发布到市场?

我创建了一个 GitHub 操作,我正在寻找一种在将其发布到市场之前对其进行测试的方法。如何通过在同一存储库中创建工作流程文件来测试它?

我有以下工作流程。

name: "Build"
on:
  pull_request:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: test-action # name of my action
Run Code Online (Sandbox Code Playgroud)

github-actions

3
推荐指数
2
解决办法
3428
查看次数

Github 操作条件触发器

我需要帮助解决一些问题,我正在尝试根据 2 个不同的发布标签触发 2 个不同的工作流程。我希望 prod-* 触发生产工作流程,而 dev-* 触发开发工作流程。

问题是两个标签都会触发两个工作流程,我不知道如何解决这个问题

在此输入图像描述

(我已经取消了这两个操作,但它们触发了,如您所见) 在此输入图像描述

github github-actions building-github-actions

3
推荐指数
1
解决办法
3856
查看次数

Gtest discovery_tests 在 Github Actions 中失败:进程因超时而终止

我将 google-test(gtest) 与 CMake 结合使用,并将单元测试作为适用于 Linux 和 Mac 的 GitHub ci 作业运行。Linux 作业成功通过。但是,我在 mac runner 上遇到错误。错误是

CMake Error at /usr/local/Cellar/cmake/3.21.1/share/cmake/Modules/GoogleTestAddTests.cmake:77 (message):
  Error running test executable.

    Path: '/Users/runner/work/splitwebp/build/test/splitwebp_tests'
    Result: Process terminated due to timeout
    Output:
      

Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.21.1/share/cmake/Modules/GoogleTestAddTests.cmake:173 (gtest_discover_tests_impl)
Run Code Online (Sandbox Code Playgroud)

这是CMakelists.txt测试目录

# CMake config file for unit tests
# Requiring V 3.10 for gtest_discover_tests
cmake_minimum_required(VERSION 3.10)
find_package(OpenCV REQUIRED)
enable_testing()

# finds all .cpp files under this directory (./test) and add them to executable
file(GLOB_RECURSE tests "*.cpp") …
Run Code Online (Sandbox Code Playgroud)

macos cmake googletest ctest github-actions

3
推荐指数
1
解决办法
3609
查看次数

在 GitHub Actions 中缓存 python 依赖项的问题

我在 github 操作中有以下步骤:

steps:
      - name: Check out repository code
        uses: actions/checkout@v2

      - name: Cache dependencies
        id: pip-cache
        uses: actions/cache@v2
        with:
          path: ~.cache/pip
          key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
          restore-keys: |
            ${{ runner.os }}-pip-

      - name: Install dependencies
        if: steps.pip-cache.outputs.cache-hit != 'true'
        run: pip install -r requirements.txt
     
      - name: run mypy
        run: mypy .
Run Code Online (Sandbox Code Playgroud)

缓存工作正常,但是当发生缓存命中时,我尝试运行 mypy,它失败并显示:

Run mypy .
/home/runner/work/_temp/9887df5b-d5cc-46d7-90e1-b884d8c49272.sh: line 1: mypy: command not found
Error: Process completed with exit code 127.
Run Code Online (Sandbox Code Playgroud)

缓存依赖项的全部意义在于,我不必每次运行工作流程时都安装它们。如何使用缓存的依赖项?

python pip github github-actions

3
推荐指数
1
解决办法
2373
查看次数

GitHub 操作中奇怪的布尔计算

我正在尝试理解 GitHub 操作中的布尔表达式。该手册给出了以下不同类型文字的示例${{ false }},包括布尔值 as和${{ true }}

按照他们的指导,我使用以下步骤,将一个env部分设置VARF为 false 和VARTtrue,然后在run密钥中有一些测试输出:

  - name: Var test
    env:
      VARF: ${{ false }}
      VART: ${{ true }}
    run: |
      echo "VART=${{ env.VARF }}"
      echo "VART=${{ env.VART }}"
      echo "VARF && VART=${{ env.VARF && env.VART }}"
      echo "VARF || VART=${{ env.VARF || env.VART }}"
      echo "!VARF=${{ ! env.VARF }}"
      echo "!!VART=${{ !! env.VART }}"
Run Code Online (Sandbox Code Playgroud)

输出如下

VART=false
VART=true
VARF …
Run Code Online (Sandbox Code Playgroud)

github-actions

3
推荐指数
1
解决办法
3003
查看次数

如何在 GitHub actions 中发送 json 中的多行字符串?

我正在处理 GitHub actions,并且有一个情况需要将多行字符串作为 json 发送。我收到一些意外的令牌错误。

这是我的 test.md 和工作流程:

---------------------------
  **test**
  - update something
  - another (update)
  
  **test2**
  - Add `test` to param
  
Run Code Online (Sandbox Code Playgroud)
steps:
    - uses: actions/checkout@v2
    - name: Get Log
      id: getLog
      run: |
        CHANGELOG="$(cat test.md)"
        CHANGELOG="$($CHANGELOG//'%'/'%25')"
        CHANGELOG="$($CHANGELOG//$'\n'/'%0A')" 
        CHANGELOG="$($CHANGELOG//$'\r'/'%0D')"
        echo "::set-output name=changeLog::$CHANGELOG"
    - name: Invoke CLI workflow with changelog
      uses: benc-uk/workflow-dispatch@v1
      with:
        workflow: Workflow publish
        token: ${{ secrets.TOKEN }}
        repo: repo/name
        inputs: '{ "changeLog": "${{steps.getLog.outputs.changeLog}}"}'

Run Code Online (Sandbox Code Playgroud)

我收到意外的令牌错误。怎么解决这个问题?

提前致谢

string github-actions

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

使用 GitHub Actions 构建 Docker 镜像:没有这样的文件或目录

我们打算使用 Git Actions 在每次提交时构建 Docker。

这是我们当前的 Git Actions yml:

# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the workflow will run
on:
  push:
    branches: 
      - '**'
  pull_request:
    branches:
      - '**'

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:

  docker-build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2 …
Run Code Online (Sandbox Code Playgroud)

docker github-actions

3
推荐指数
1
解决办法
5613
查看次数

Github 工作流程 CI/CD 失败

我使用 github 工作流程的 CI/CD 管道失败,并出现以下错误:

错误:无法成功处理命令 '##[add-path]/opt/hostedtoolcache/aws/0.0.0/x64'。错误:该add-path命令被禁用。ACTIONS_ALLOW_UNSECURE_COMMANDS请升级到使用环境文件或通过将环境变量设置为 来选择不安全的命令执行true。有关更多信息,请参阅:https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/

这是我的container.yml 文件

name: deploy-container

on:
  push:
    branches:
      - master
      - develop
    paths:
      - "packages/container/**"

defaults:
  run:
    working-directory: packages/container

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - run: npm install
      - run: npm run build

      - uses: chrislennon/action-aws-cli@v1.1
      - run: aws s3 sync dist s3://${{ secrets.AWS_S3_BUCKET_NAME }}/container/latest
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
Run Code Online (Sandbox Code Playgroud)

知道为什么会发生这种情况。提前致谢

pipeline amazon-web-services github-actions cicd

3
推荐指数
1
解决办法
979
查看次数

npm ci 命令到底有什么作用?为什么它在所有 ci 管道中使用而不是 npm install ?

我对整个 CI/CD 世界有点陌生,但每当我看到config.yml任何 Node js 项目中的文件时,总是会npm ci出现npm install. 我已经从文档中阅读了一些内容,但我仍然不清楚。有人可以用清晰简洁的语言解释一下吗?

continuous-integration github node.js npm github-actions

3
推荐指数
1
解决办法
2573
查看次数

如何安全地允许 Github Actions 检查 PR 并在评论中发布结果

我正在尝试了解 Github Actions (GHA) 中的安全模型。假设我对公共仓库有以下要求:

  1. 允许打开来自分叉存储库的拉取请求
  2. GHA 应该对拉取请求运行单元测试
  3. GHA 应将单元测试结果作为 PR 评论发布

为了使第三个要求起作用,拉取请求需要访问具有存储库写入权限的 GITHUB_TOKEN。这将需要以下两个权限:

  • 从分支拉取请求运行工作流程。
  • 从分叉拉取请求将写入令牌发送到工作流程

首先,从分支拉取请求运行工作流程。 其次,将写入令牌从分叉拉取请求发送到工作流程

现在,如果将写入令牌发送到分叉 PR 中的工作流程,那么如何防止黑客更改 PR 中的工作流程并将其用于任意数量的恶意目的(在原始存储库中创建恶意版本或窃取存储库机密)?我知道您可以限制令牌的权限,但这是在工作流程内完成的;黑客可以像 PR 的一部分一样轻松地消除限制。

有没有什么方法可以在不存在安全漏洞的情况下完成这三个要求?

security github github-actions

3
推荐指数
1
解决办法
1559
查看次数