是否有可能在 GitHub 拉取请求检查中显示漂亮的 html 报告(来自 Jest、Mocha、Cypress、测试覆盖率等测试运行程序)?
我对 Github 操作有以下操作,每次 PR 合并到 master 时,这些操作会自动打包并将包部署到 nuget.org。
name: Nuget Deploy
on:
push:
branches: [ master ]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.101
- name: Generate Nuget package
run: dotnet pack
working-directory: DateOverride
- name: Deploy to nuget.org
run: dotnet nuget push *.nupkg -k ${{ secrets.NUGET_DEPLOY_KEY }} -s https://api.nuget.org/v3/index.json
working-directory: DateOverride/DateOverride/bin/Debug
Run Code Online (Sandbox Code Playgroud)
但是如果我的更新只是README.md更新,我希望它不会运行,是否可以这样做?
我有一个看起来像这样的文件夹结构。
- folder1
- file1
- *other files*
- folder2
- file1
- *other files*
- .gitignore
- package.json
- *other files*
Run Code Online (Sandbox Code Playgroud)
我想在推送时运行我的 github 操作,仅当任何更改/推送的文件位于folder1目录/文件夹中时。
我正在编写我的第一个包,我只是将它转换为与 TypeScript 兼容,但这在某种程度上影响了我的 GitHub 工作流程。当我在本地使用 Jest 运行我的测试时,它们工作得很好。当我的测试在 GitHub 上运行时,它成功了10.x,但没有12.x或14.x,给我以下错误:
(node:2397) ExperimentalWarning: The ESM module loader is experimental.
ReferenceError: module is not defined
at file:///home/runner/work/enhancedMathJS/enhancedMathJS/jest.config.js:1:1
at ModuleJob.run (internal/modules/esm/module_job.js:146:37)
at async Loader.import (internal/modules/esm/loader.js:182:24)
at async readConfigFileAndSetRootDir (/home/runner/work/enhancedMathJS/enhancedMathJS/node_modules/jest-config/build/readConfigFileAndSetRootDir.js:126:32)
at async readConfig (/home/runner/work/enhancedMathJS/enhancedMathJS/node_modules/jest-config/build/index.js:217:18)
at async readConfigs (/home/runner/work/enhancedMathJS/enhancedMathJS/node_modules/jest-config/build/index.js:406:26)
at async runCLI (/home/runner/work/enhancedMathJS/enhancedMathJS/node_modules/@jest/core/build/cli/index.js:230:59)
at async Object.run (/home/runner/work/enhancedMathJS/enhancedMathJS/node_modules/jest/node_modules/jest-cli/build/cli/index.js:163:37)
npm ERR! Test failed. See above for more details.
enhancedmath@2.0.0 test /home/runner/work/enhancedMathJS/enhancedMathJS
jest
Run Code Online (Sandbox Code Playgroud)
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testMatch: …Run Code Online (Sandbox Code Playgroud) 我创建了一个 Github 操作,用该语句打印出一些字符串。当我在 github.com 上进行提交时,该操作会触发,但当我在本地进行提交并将其推送到 github.com 上的远程存储库时,该操作不会触发。为什么是这样?
这是我的行动...
name: FeatureCI
on:
push:
branches:
- '*'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Run a one-line script
run: echo "Only on featuer branches"
- name: Run a multi-line script
run: |
echo "Only on featuer branches1"
echo "Only on featuer branches2"
Run Code Online (Sandbox Code Playgroud) 使用 本地构建我的 Haskell 项目时stack build,仅重新编译更改的源文件。不幸的是,我无法让 Stack 在 GitHub Actions 上表现得像这样。请问有什么建议吗?
例子
我用Lib.hsand创建了一个简单的例子Fib.hs,我什至检查缓存的 .stack-work 文件夹是否在构建之间更新,但它总是编译两个文件,即使只更改一个文件。
这是示例:
Lib.hs和Fib.hs+ 依赖项):https : //github.com/MarekSuchanek/stack-test/runs/542163994Lib.hs更改,同时构建Lib.hs和Fib.hs):https : //github.com/MarekSuchanek/stack-test/runs/542174351我可以从日志(详细堆栈)中观察到缓存中的某些内容正在更新,但我完全不清楚是什么以及为什么。它正确地发现只有Lib.hs被改变了:“ stack-test-0.1.0.0: unregistering (local file changes: src/Lib.hs)”所以我不明白为什么所有的都被编译了。我注意到,在2Fib.hi没有更新,.stack-work但其他人(Fib.o,Fib.dyn_hi,和Fib.dyn_o)是。
笔记
当没有更改源文件时, ~/.stack 缓存是可以的,也可以不构建。当然,这是一个虚拟示例,但我们有不同的项目,其中包含更多源文件,可以显着加快构建速度。当更改非源文件(例如 README 文件)时,不会按预期构建任何内容。
我正在尝试使用 github 操作为我的 node.js 服务器构建 CI 管道。
我只需要解决一个问题。我需要设置环境变量,以便我的 node.js 服务器可以通过访问 env 变量process.env
下面是 github 操作工作流文件。
name: Build and Deploy to GKE
on:
pull_request:
branches:
- master
# Environment variables available to all jobs and steps in this workflow
env:
ENGINE_API_KEY: ${{ secrets.ENGINE_API_KEY }}
jobs:
setup-build-publish-deploy:
name: Setup, Build, Publish, and Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Apollo Schema Update
env:
ENGINE_API_KEY: ${{ secrets.ENGINE_API_KEY }}
run: |
sudo npm install
sudo npm install -g apollo …Run Code Online (Sandbox Code Playgroud) 我是 github 操作的新手,我看到用于配置步骤的两件事(如果我错了,请纠正我)with和env.
这两者有什么区别以及它们是如何使用的。
uses: someAction
with:
x: 10
y: 20
env:
x1: 30
y2: 40
Run Code Online (Sandbox Code Playgroud) 我想使用 GitHub 操作缓存 ( actions/cache@v2) 来保存我的brew install命令的缓存,而不是一遍又一遍地重新下载所有依赖项。
这将使我的构建更快,我该如何实现?
我有一个手动触发的作业,它根据我指定的标签构建和部署映像。有没有办法使工作流名称动态化?
name: Build and push
on:
workflow_dispatch:
inputs:
tag:
description: 'Image Tag'
required: true
jobs:
...
Run Code Online (Sandbox Code Playgroud)
我想做类似的事情
name: "Build and push ${{ github.event.inputs.tag }}"
Run Code Online (Sandbox Code Playgroud)