我正在尝试对 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从上一步连接到,这就是所有测试超时的原因。
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 上有一个名为“team-core”的团队。
该团队拥有对某个私有存储库的写入权限:
我在 GitHub 中为此存储库设置了一个环境“qa”。
我想向该环境添加一条保护规则,需要团队核心上的任何人进行审核。
然而,尽管“团队核心”具有写入权限(文档说他们只需要读取权限),但他们没有出现在该规则的可能审阅者列表中。
其他 4 个团队确实出现在该菜单中(1 个具有读取权限,2 个具有写入权限,1 个具有存储库的管理员角色)。
如何让Team core成为环保规则的审核者?
可以为同一存储库的分支保护规则中的选项添加此团队,允许您输入团队(“限制谁可以驳回拉取请求审查”、“允许指定参与者绕过所需的拉取请求”和“限制谁可以推送到匹配的分支”)。
我正在尝试从 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 工作流程中的单个作业吗?
有谁知道为什么这里需要 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
我想要将它们部署到数百个存储库和数十个环境。
是否可以定义一次环境并在多个存储库中使用它,而不是在每个存储库中创建每个环境?
如果没有,是否有其他解决方法来创建数千个不同的环境?
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) 我正在尝试从 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) 对于这个问题,有几个限制:
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}`);。正如本博客文章中所宣布的,此方法已被弃用。
您可以使用 jobs.<job_id>.concurrency 确保一次仅运行一个使用相同并发组的作业或工作流。
...
当并发作业或工作流排队时,如果使用存储库中相同并发组的另一个作业或工作流正在进行中,则排队的作业或工作流将处于挂起状态。并发组中任何先前挂起的作业或工作流都将被取消。
以前待处理的作业被取消是很烦人的。显然,编排逻辑只能维护一(1)个待处理作业的微小“队列”。
我希望能够有多个作业排队。即,如果我快速连续触发 5 个作业,并且它们都属于同一个并发组,则第一个作业立即开始运行(当运行程序可用时),接下来的 4 个作业将排队并等待轮到运行,一次一个。
有什么办法可以实现这一点吗?或者我需要向 GitHub 请求此功能吗?
github-actions ×10
github ×3
next.js ×2
amazon-ecr ×1
concurrency ×1
docker ×1
javascript ×1
node.js ×1
playwright ×1
queue ×1
rust ×1
yarn-v2 ×1