我通过创建了一个新的 Vue 项目npm init vue@latest并选择了 Cypress。
目前还没有测试,我有一个占位符/cypress/e2e/example.cy.ts测试
describe("My First Test", () => {
it("visits the app root url", () => {
cy.visit("/");
});
});
Run Code Online (Sandbox Code Playgroud)
我正在使用 Cypress v11.0.1,并且有一个脚本可以在我的 Github Actions 中运行 cypress 测试
"test:e2e:ci": "start-server-and-test preview :4173 'cypress run --e2e'",
Run Code Online (Sandbox Code Playgroud)
这是我的 Cypress 动作
- name: Check if e2e tests are passing
uses: cypress-io/github-action@v4
with:
build: npm run build
start: npm run test:e2e:ci
Run Code Online (Sandbox Code Playgroud)
有时(这种情况很少发生) Github 工作流程会失败
正如您所看到的,测试本身通过了。我可以通过再次运行来修复管道......
有人知道为什么会发生这种情况以及如何避免此错误?
如果您需要更多信息(例如配置文件),请告诉我
我有一个 React 应用程序,我正在尝试为此应用程序设置 ci/cd。
我在 GitHub actions 中遇到这样的错误,并且在“导出到图像”期间遇到此错误
name: "deploy-prod"
on:
push:
branches:
- "configure-ci/cd-pipeline-to-frontend-repo"
env:
REPOSITORY_NAME: ${{ github.event.repository.name }}
REACT_APP_BASENAME: "FooApp"
jobs:
build-backend:
runs-on: ubuntu-latest
steps:
- id: string
uses: ASzc/change-string-case-action@v1
with:
string: ${{ secrets.REGISTRY_HOST }}/${{ github.repository }}:build-${{ github.run_number }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
registry: ${{ secrets.REGISTRY_HOST }}
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Build …Run Code Online (Sandbox Code Playgroud) 我有一个工作流程,它缓存以下输出:
composer install使用哈希值composer.locknpm ci使用哈希值package-lock.jsonnpm run prod使用哈希值public/**/*因此它们可以在后续运行中重复使用。
问题是,只有 Composer 缓存被命中 - 两个 npm 缓存总是会在 CI 输出中产生一条消息,显示Cache not found for input keys.
以npm ci代码为例,缓存的设置以及后续的使用都是通过这两步完成的:
- name: Cache node packages
id: cache-npm-packages
uses: actions/cache@v2
env:
cache-name: cache-node-packages
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('package-lock.json') }}
- if: ${{ steps.cache-npm-packages.outputs.cache-hit != 'true' }}
run: npm ci
Run Code Online (Sandbox Code Playgroud)
但 CI …
文件结构:
apps
-- app-1
-- app-2
libs
-- lib-1
-- lib-2
Run Code Online (Sandbox Code Playgroud)
我们有一些测试,仅当文件在lib-2. 我尝试过做
on:
push:
paths:
- 'libs/lib-2/**'
Run Code Online (Sandbox Code Playgroud)
但它仅lib-2在提交中推送文件时运行测试,但如果此后推送了其他文件,则它不会运行。想象一下,测试失败了lib-2,然后开发人员已经提交了lib-1下一次提交中的文件,并且测试不会针对之前的更改运行,并且 github 将认为检查成功。
如果某个目录中的文件在分支中发生更改,无论在哪个提交中,是否有办法运行操作?
长话短说:
如何手动ACTIONS_RUNTIME_TOKEN和 ACTIONS_CACHE_URL在 GitHub 中查找操作?
语境
我正在尝试在 GitHub 操作中的 buildkit 构建过程中缓存 docker 层。
理论上,使用docker/setup-buildx-action、docker/build-push-action和crazy-max/ghaction-github-runtime操作很容易。问题是,我不能使用它们(组织政策)。
我的工作流程的相关部分现在是:
$repo_url= "<ECR repo in aws>"
docker buildx create --use --driver=docker-container
docker buildx build --tag "${repo_url}:latest" --file docker/Dockerfile . --cache-to "type=gha,mode=max" --cache-from type=gha
Run Code Online (Sandbox Code Playgroud)
缓存需要 2 个变量/配置:ACTIONS_RUNTIME_TOKEN和
ACTIONS_CACHE_URL。它们将由 来设置ghaction-github-runtime,因此我无法使用。查看代码,似乎从环境中导出了2个变量,但我找不到它们。
我如何在没有其他操作帮助的情况下手动找到它们?
caching docker github-actions docker-buildkit github-actions-artifacts
我正在尝试使用 GitHub Actions 工作流程将带有 .NET 7 的 Azure Function(隔离)部署到 MS Azure。一切似乎运行良好,但由于某种原因,当我将其部署到云时,该功能未加载。当我运行本地主机功能时,一切都很好(在我的机器上工作),但部署后就不行了。
public class DemoFunction
{
private readonly ILogger _logger;
public DemoFunction(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<DemoFunction>();
}
[Function("DemoFunction")]
public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestData req)
{
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
response.WriteString("Demo function works!");
return response;
}
}
Run Code Online (Sandbox Code Playgroud)
Function App 仅包含一个具有 HTTP 绑定的函数(无需身份验证,允许匿名请求)。我使用 Bicep 部署基础设施,使用 GH Actions 部署 Function App。日志分析显示了这一点:

因此,由于某种原因,它确实找到了该函数,但没有加载它。如果我导航到 Azure 门户中的“功能”边栏选项卡,我看不到任何功能。该项目只是一个 POC 项目,可在https://github.com/nikneem/function-deployment-with-gh-actions上公开托管
有任何想法吗?
我有一个简单的 GH 操作工作流程 yaml,其中包含以下内容:
name: CI
on:
push:
jobs:
ci:
runs-on: macos-latest
defaults:
run:
shell: bash
working-directory: working_directory_here
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install the Apple certificate and provisioning profile for Xcode
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
# import certificate and provisioning profile from secrets
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | …Run Code Online (Sandbox Code Playgroud) 我有一个 ASP.NET Core API 项目的解决方案,其中包含主 API 项目以及其他两个库项目。
我现在想为库项目创建 NuGet 包,以便我可以在其他应用程序中使用它们。
我是否需要将我的库项目分离到它们自己的解决方案中,并将它们签入到 GitHub 上它们自己的单独存储库中,以便通过 GitHub 操作生成它们的 NuGet 包?
目前,API 和库项目位于一个解决方案中,我将它们保存在同一个存储库中。我是否需要将我的项目拆分到它们自己的存储库中,或者我可以从单个存储库仅为我的库项目创建 NuGet 包吗?
我有工作流程 A 和 B,它们都调用工作流程 C。git 存储库中设置了许多秘密。工作流程 C 使用 100 个秘密。我需要以与工作流程 A 和 B 相同的方式传递其中的 99 个。但其中一个是不同的。我可以让工作流 C 继承所有秘密并仅覆盖其中之一吗?类似于: A:
name: Reusable workflow
on:
workflow_call:
inputs:
...
env:
SECRET_1: ${{ secrets.SECRET_1 }}
SECRET_2: ${{ secrets.SECRET_2 }}
...
SECRET_100: ${{ secrets.SECRET_100 }}
jobs:
...
Run Code Online (Sandbox Code Playgroud)
A:
name: Workflow A
on: ["workflow_dispatch"]
jobs:
C:
uses: ./.github/workflows/C.yaml
secrets:
- inherit
- SECRET_100: ${{ secrets.SECRET_100_FOR_A }}
jobs:
...
Run Code Online (Sandbox Code Playgroud)
乙:
name: Workflow B
on: ["workflow_dispatch"]
jobs:
C:
uses: ./.github/workflows/C.yaml
secrets:
- inherit
- SECRET_100: ${{ secrets.SECRET_100_FOR_B }} …Run Code Online (Sandbox Code Playgroud) git commit -m "$(date)" -> 显示的是UTC,但是如何获取首选时区?
我想获得首选时区git commit.