标签: github-actions

如何在 github-actions 中运行针对 localhost 的 playwright?

我正在尝试对 github-actions 运行剧作家 E2E 测试,但到目前为止尚未成功。

    - name: Run build and start
      run: |
        yarn build:e2e
        yarn start:e2e &
    - name: Run e2e
      run: |
        yarn e2e
Run Code Online (Sandbox Code Playgroud)

我不认为服务器在playwright运行时正在运行,因为所有 e2e 测试最终都失败了。

运行构建并启动

Done in 192.91s.
yarn run v1.22.19
$ env-cmd -f environments/.env.e2e next start
ready - started server on 0.0.0.0:3000, url: ***
Run Code Online (Sandbox Code Playgroud)

运行 e2e

Test timeout of 270000ms exceeded while running "beforeEach" hook.
Run Code Online (Sandbox Code Playgroud)

我非常确定剧作家无法http://localhost:3000从上一步连接到,这就是所有测试超时的原因。

next.js github-actions playwright

6
推荐指数
1
解决办法
4021
查看次数

当代码推送到分支时,GitHub 工作流程无法运行

GitHub 中的 CI/CD 管道需要首先将代码从dev分支推送到test分支,然后在test代码推送到分支后立即在test分支上运行工作流。

当代码从 GitHub 外部的 devbox推送到分支时,下面dev-environ-workflow的代码确实成功地代码从分支推送到分支。devtestdev

问题是,test-environ-workflow当代码从 .push 推入test分支时,无法运行dev-environ-workflow

任何 GitHub 帐户都可以仅使用三个文件和以下结构来重现此问题:

.gihub/workflows/
    dev-workflow.yaml
    test-workflow.yaml
myapp.py
Run Code Online (Sandbox Code Playgroud)

myapp.py

.gihub/workflows/
    dev-workflow.yaml
    test-workflow.yaml
myapp.py
Run Code Online (Sandbox Code Playgroud)

dev-workflow.yaml

print('Hello from myapp!')
Run Code Online (Sandbox Code Playgroud)

test-workflow.yaml

name: dev-environ-workflow
on:
  push:
    branches:
      - dev
jobs:
  push-to-test-branch:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - shell: bash
        name: Push changes to test branch
        env:
          GIT_PAT: ${{ secrets.GIT_PAT …
Run Code Online (Sandbox Code Playgroud)

github github-actions

6
推荐指数
1
解决办法
791
查看次数

无法将某个团队添加为 GitHub 环境保护规则的审核者

我在 GitHub 上有一个名为“team-core”的团队。

该团队拥有对某个私有存储库的写入权限

“团队核心”具有对存储库的写入权限

我在 GitHub 中为此存储库设置了一个环境“qa”。

我想向该环境添加一条保护规则,需要团队核心上的任何人进行审核。

然而,尽管“团队核心”具有写入权限(文档说他们只需要读取权限),但他们没有出现在该规则的可能审阅者列表中。

“团队核心”未出现在可能的列表中

其他 4 个团队确实出现在该菜单中(1 个具有读取权限,2 个具有写入权限,1 个具有存储库的管理员角色)。

如何让Team core成为环保规则的审核者?

其他发现

可以为同一存储库的分支保护规则中的选项添加此团队,允许您输入团队(“限制谁可以驳回拉取请求审查”、“允许指定参与者绕过所需的拉取请求”和“限制谁可以推送到匹配的分支”)。

github github-actions

6
推荐指数
1
解决办法
883
查看次数

获取整个 Github Actions 工作流程的状态,而不仅仅是单个作业的状态

我正在尝试从 Guthub Actions 工作流程向 slack 发送有关工作流程成功/失败的消息。

  finally:
    runs-on: ubuntu-latest
    needs: ['ci-build', 'lint-yaml', 'lint-json', 'lint-env-files', 'lint-folders', 'lint-filenames', 'shellcheck', 'lint-dockerfile']
    if: always()

    steps:
      - name: Send pipeline status to Slack
        if: always()
        uses: kpritam/slack-job-status-action@v1
        with:
          job-status: ${{ job.status }}
          slack-bot-token: ${{ secrets.SLACK_BOT_TOKEN }}
          channel: C0438TFQNPM # pipelines channel
Run Code Online (Sandbox Code Playgroud)

发送消息有效。但${{ job.status }}不代表整个pipeline的状态,只代表最后一个job。

如果任何作业中的任何步骤失败,我想发送失败消息。这是我用于测试的工作流程运行:https://github.com/sebastian-sommerfeld-io/docker-image-adoc-antora/actions/runs/3096876874

工作流程本身按预期工作。但我的松弛消息报告“成功”。它应该报告“失败”,因为一项作业失败,随后跳过另一项作业。

有人知道如何获取整个工作流程的状态,而不仅仅是 Github Actions 工作流程中的单个作业吗?

github github-actions

6
推荐指数
1
解决办法
3839
查看次数

Rust 的 Github 操作显示 Node.js 警告 (12 - 16)

有谁知道为什么这里需要 Node.js 吗?


name: Rust

on:
  push:
    branches: [ "develop" ]
  pull_request:
    branches: [ "develop" ]

env:
  CARGO_TERM_COLOR: always

jobs:
  fmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true
          components: rustfmt
      - uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check
...
Run Code Online (Sandbox Code Playgroud)

锈病

Node.js 12 操作已弃用。有关更多信息,请参阅: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/

请更新以下操作以使用 Node.js 16:actions-rs/toolchain、actions-rs/cargo

完整源码

rust github-actions

6
推荐指数
1
解决办法
4273
查看次数

在存储库之间共享 GitHub 环境

我想要将它们部署到数百个存储库和数十个环境。

是否可以定义一次环境并在多个存储库中使用它,而不是在每个存储库中创建每个环境?

如果没有,是否有其他解决方法来创建数千个不同的环境?

github-actions

6
推荐指数
0
解决办法
119
查看次数

Nextjs 的 Github Actions Build 失败,给出:错误:错误:0308010C:数字信封例程::不支持

Nextjs 的 GitHub Actions 构建失败,我有以下 GitHub 工作流程文件:

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
    # Checks-out …
Run Code Online (Sandbox Code Playgroud)

node.js next.js github-actions yarn-v2

6
推荐指数
1
解决办法
2082
查看次数

如何在 Githubactions 中从 ECR 中提取 docker 镜像

我正在尝试从 ECR 中提取 docker 映像并将其部署到 ec2 实例上。然而它抛出了一个错误,比如

docker pull  $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG

======END======
err: invalid reference format
2022/11/03 15:31:54 Process exited with status 1
Run Code Online (Sandbox Code Playgroud)

我的 yml 文件是:

name: Docker Image CI

on:
  push:
    branches: [ "main" ]

jobs:

  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Configure AWS credentials
      uses: aws-actions/configure-aws-credentials@v1
      with:
        aws-access-key-id: ${{ secrets.TF_USER_AWS_KEY }}
        aws-secret-access-key: ${{ secrets.TF_USER_AWS_SECRET }}
        aws-region: us-east-1

    - name: Login to Amazon ECR
      id: login-ecr
      uses: aws-actions/amazon-ecr-login@v1

    - name: Build, tag, and push image to Amazon …
Run Code Online (Sandbox Code Playgroud)

docker amazon-ecr github-actions building-github-actions

6
推荐指数
1
解决办法
3775
查看次数

JavaScript Github Action:在没有 set-output 和 @actions/core 的情况下写入 $GITHUB_OUTPUT

对于这个问题,有几个限制:

  • 这需要在没有任何 NPM 包(包括 @actions/core)的情况下工作。因此我不能做core.setOutput(name, value);
  • 以前是可以的console.log(`::set-output name=${key}::${value}`);正如本博客文章中所宣布的,此方法已被弃用。

根据博客推荐的新方法是写入新的 $GITHUB_OUTPUT 环境文件。不幸的是,博客文章中没有 JavaScript 示例。

简单的实现是运行:

fs.writeFileSync(process.env.GITHUB_OUTPUT, `${key}=${value}`);
Run Code Online (Sandbox Code Playgroud)

是否有更简单、更好或推荐的方法在 JavaScript 中实现此功能?

我尝试过了console.log(`::set-output name=${key}::${value}`);。正如本博客文章中所宣布的,此方法已被弃用。

javascript github-actions

6
推荐指数
0
解决办法
1598
查看次数

当运行具有并发限制的 GitHub 操作时,我可以让工作流运行排队而不是取消吗?

GitHub actions 的文档说

您可以使用 jobs.<job_id>.concurrency 确保一次仅运行一个使用相同并发组的作业或工作流。

...

当并发作业或工作流排队时,如果使用存储库中相同并发组的另一个作业或工作流正在进行中,则排队的作业或工作流将处于挂起状态。并发组中任何先前挂起的作业或工作流都将被取消。

以前待处理的作业被取消是很烦人的。显然,编排逻辑只能维护一(1)个待处理作业的微小“队列”。

我希望能够有多个作业排队。即,如果我快速连续触发 5 个作业,并且它们都属于同一个并发组,则第一个作业立即开始运行(当运行程序可用时),接下来的 4 个作业将排队并等待轮到运行,一次一个。

有什么办法可以实现这一点吗?或者我需要向 GitHub 请求此功能吗?

queue concurrency github-actions

6
推荐指数
1
解决办法
672
查看次数