在 github actions 中执行以下操作的好方法是什么:
我应该使用原始 git 命令吗?或者 github cli?或者其他动作?
你有什么建议?
我创建了一个deployment.yaml,每次我推送到 master 分支时它都会构建我的代码。
这是我的项目结构。
project1
|-subproject1
|-subproject2
|-subproject3
Run Code Online (Sandbox Code Playgroud)
现在,我有 3 个不同的工作来构建每个子项目。
我可以以这种方式添加一个条件吗?如果我只在 subproject2 中进行更改,那么只有该特定作业应该运行。
我发现工作有一个if属性。
https://docs.github.com/en/actions/using-jobs/using-conditions-to-control-job-execution
所以,简而言之,我想写一些类似的东西......
jobs:
deploy:
if: old_subproject1 != new_subproject1
...
jobs:
deploy:
if: old_subproject2 != new_subproject2
...
jobs:
deploy:
if: old_subproject3 != new_subproject3
Run Code Online (Sandbox Code Playgroud)
提前致谢 !
我的 Github 操作失败了好几次,之前工作正常,没有新的或修改的测试,甚至我没有修改页脚组件,唯一的变化是布局的服务方式,本地一切运行良好。
\n错误记录如下:
\nRun npm run test\n\n> lasbrumasapp@0.1.0 test\n> jest\n\n"next/jest" is currently experimental. https://nextjs.org/docs/messages/experimental-jest-transformer\nFAIL __tests__/pages/signup.test.tsx\n \xe2\x97\x8f Test suite failed to run\n\n Cannot find module \'../footer/Footer\' from \'components/layouts/Layout.tsx\'\n\n Require stack:\n components/layouts/Layout.tsx\n pages/signup.tsx\n __tests__/pages/signup.test.tsx\n\n 6 | const Layout = ({ children }: ChildrenInterface) => {\n 7 | return (\n > 8 | <>\n | ^\n 9 | <Navbar />\n 10 | <main>{children}</main>\n 11 | <Footer />\n\n at Resolver.resolveModule (node_modules/jest-resolve/build/resolver.js:324:11)\n at Object.<anonymous> (components/layouts/Layout.tsx:8:38)\n\nFAIL __tests__/pages/login.test.tsx\n \xe2\x97\x8f Test suite failed to run\n\n …Run Code Online (Sandbox Code Playgroud) 是否有任何方法或解决方案可以从 Jenkins 声明性管道调用 GitHub Actions 工作流程?
Jenkinsfile 应包含什么内容来调用所述操作?
我为我的 Github 工作流程设置了以下输入
on:
workflow_dispatch:
inputs:
environment:
type: choice
description: Environment
options:
- Development
- QA
- UAT
- Production
Run Code Online (Sandbox Code Playgroud)
如果用户选择Development作为环境,我想dev在一些字符串连接中使用该单词,如果他们选择Production我想使用prod相同的目的。
以下是需要进行替换的区域的示例。
- name: Package App
run: |
move-file .env.$TARGET_ENVIRONMET .env
yarn package:$TARGET_ENVIRONMENT
Run Code Online (Sandbox Code Playgroud)
在此示例中,我需要move-file命令 bemove-file .env.dev .env和yarn package命令 beyarn package:dev用于开发,但我在映射Development到开发时遇到问题。我考虑设置一个变量,dev如果用户选择Development变量,但看起来唯一的变量支持是设置环境变量,而且这似乎不可能有条件地实现。
所以我不能做这样的事情
env:
if: inputs.environment == 'Development'
TARGET_ENVIRONMENT: 'dev'
if: inputs.environment == 'Production'
TARGET_ENVIRONMENT: 'prod'
Run Code Online (Sandbox Code Playgroud) 我有两个工作流程:
我需要在workflow2.yaml中添加类似的内容:
jobs:
build_kotlin:
runs-on: [server1, server2, server3]
needs: [workflow1]
steps:
- name: Checkout code
uses: actions/checkout@v2
Run Code Online (Sandbox Code Playgroud)
目前“需要”无法正常工作。如何引用单独的工作流程 yaml 文件?
是否可以检测 Github actions 运行程序正在使用哪个操作系统?例如,在节点中可以运行process.platform以获取操作系统。Github actions 里面有类似的东西吗?
尝试运行时,我使用 Terraform AWS Provider 收到以下错误terraform plan。仅当在 GitHub Actions 上运行时才会发生这种情况(在本地工作正常)
配置 Terraform AWS Provider 时出错:无法获取共享配置文件
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.22"
}
}
required_version = ">= 1.1.7"
}
Run Code Online (Sandbox Code Playgroud)
如果我降级到version = "~> 3.0"它就可以解决问题。但我想升级到最新版本。
有没有办法让它在 CI 上运行?
我正在定义一个引用另一个 yaml 文件的 github 操作脚本,希望能够以更有条理的方式进行配置。
\n这是我的作业文件,命名为deploy.yml的路径./.github/workflows/,其中第一个.是我的项目的根文件夹。
....\njobs:\n UnitTest:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v3\n - uses: ./.github/workflows/unittest.yml\nRun Code Online (Sandbox Code Playgroud)\n在同一./.github/workflows/文件夹中,我创建了另一个文件,名称unittest.yml如下:
name: "UnitTest"\ndescription: "Perform Unit Test"\nruns:\n # using: "composite"\n - name: Dependency\n run: |\n echo "Dependency setup commands go here"\n\n - name: UnitTest\n run: make test.unit\nRun Code Online (Sandbox Code Playgroud)\n但是,当我尝试使用act with command在本地测试脚本时act --secret-file .secrets --container-architecture linux/amd64,收到以下错误:
[Deploy/UnitTest] \xe2\x9c\x85 Success - Main actions/checkout@v3\n[Deploy/UnitTest] \xe2\xad\x90 Run Main ./.github/workflows/unittest.yml\n[Deploy/UnitTest] \xe2\x9d\x8c Failure …Run Code Online (Sandbox Code Playgroud) 我们的团队(本质上)有一个内置于 github actions 中的 CI 系统,它为 PR 生成了 5 个测试作业。这需要 macOS github 托管的操作运行器。当构建多个 PR 时,我们的作业通常会排队,并显示以下消息:
The agent pool assigned to this job has hit their MacOs concurrency limits
Run Code Online (Sandbox Code Playgroud)
由于 github 托管的动作运行器是按需运行的,因此这个限制令人惊讶。它是什么,可以修复吗?