介绍
我目前正在尝试使用 dotnet 为多个平台自动构建 docker 映像。
我读过,最好的方法是使用 docker buildx 命令。
我尝试为arm32、arm64和x64进行设置。x64 和 arm64 的构建使用此命令可以正常工作,但是我遇到了 arm32 的问题。这是我正在执行的命令:
docker buildx build -f DeveMazeGeneratorCore.Web/Dockerfile --platform linux/arm,linux/arm64,linux/amd64 -t devedse/devemazegeneratorcoreweb .
Run Code Online (Sandbox Code Playgroud)
错误
我得到的错误是:
#17 [linux/arm/v7 build 5/8] RUN dotnet restore "DeveMazeGeneratorCore.Web/D...
272#17 0.254 A fatal error occurred, the folder [/usr/share/dotnet/host/fxr] does not contain any version-numbered child folders
273#17 ERROR: executor failed running [/bin/sh -c dotnet restore "DeveMazeGeneratorCore.Web/DeveMazeGeneratorCore.Web.csproj"]: exit code: 131
Run Code Online (Sandbox Code Playgroud)
我已经在这里读过(https://github.com/dotnet/dotnet-docker/issues/1537#issuecomment-615269150),您显然无法在 64 位系统上构建 arm32 映像。有人可以解释一下为什么会这样吗?我的意思是我们使用 QEMU 来模拟arm,对吗?
我可以通过创建一个新的 dockerfile 来解决这个问题,该文件基于 64 位映像构建,然后创建一个 arm32 …
我使用 GitHub 操作来部署我的代码。他们的文档指出他们有可以启用的环境(测试版)。我在存储库的设置中没有看到环境选项。
有谁知道我如何启用此功能?
**编辑添加:我正在使用私人 Github 存储库
我设置了一个 GitHub 自托管运行器来部署 Next.js 应用程序,该应用程序检查存储库、构建并重新启动 pm2。
问题是,每当该actions/checkout@v2步骤启动时,它都会删除存储库中的所有文件,包括.next包含所有构建文件的构建文件夹。每当工作流程运行时,这都会导致应用程序停机。
我浏览了 的源代码actions/checkout@v2,在提出这个问题时,在这个文件中从第 #109 行开始,写入了删除目录内容的逻辑。如果我的理解是正确的,我一定设置了 git-lfs 来防止删除文件。我现在不需要 git-lfs 。
我可以提交拉取请求以进行配置,以防止删除目录中的文件。我错过了什么吗?这个问题有什么解决方法吗?
为了更清楚起见,我当前的工作流程文件,
name: Build & Deploy
defaults:
run:
shell: bash -l {0}
on:
push:
branches: master
jobs:
build:
runs-on: self-hosted
steps:
# This action deletes all my build files when it runs
- uses: actions/checkout@v2
with:
clean: false
- name: Install dependencies
uses: bahmutov/npm-install@v1
- name: Build
run: npm run build
- name: Deploy
run: pm2 restart …Run Code Online (Sandbox Code Playgroud) 我正在使用 firebase 模拟器来运行测试,并且收到了有关使用缓存系统进行优化的警告。
我怎样才能做到这一点?
看起来您正在 CI 环境中运行。您可以通过缓存 /home/runner/.cache/firebase/emulators 目录来避免重复下载 Firestore 模拟器。
我会尽量说得清楚。我也询问过相关问题,但没有得到令人信服的答复。
我使用React和firebase进行托管。
另外,我将firebase Web API 密钥存储在我的.env文件中。
我使用 Firebase CLI 设置 Firebase 托管,并选择根据合并或拉取请求自动部署。
安装完成后,在我的工作目录中创建了一个.github包含文件的文件夹。.yml
.github
- workflows
-firebase-hosting-merge.yml
-firebase-hosting-pull-request.yml
Run Code Online (Sandbox Code Playgroud)
因此,现在当我通过运行手动将项目(无需推送到 GitHub)部署到 firebase 时,firebase deploy一切正常,并且我的应用程序已启动并运行。
然而,当我进行更改并将更改推送到 Github 时。触发 Github 操作并开始自动部署到 firebase 进程。构建通过了所有检查。
但是,当我访问托管 URL 时,控制台中出现错误,提示Your API key is invalid, please check you have copied it correctly.
我尝试了一些解决方法,例如将我的 Firebase Web API 密钥存储到 Github 机密中并在我的.yml文件中访问它。
# This file was auto-generated by the Firebase CLI
# https://github.com/firebase/firebase-tools
name: Deploy …Run Code Online (Sandbox Code Playgroud) environment-variables firebase firebase-hosting github-actions building-github-actions
鉴于我有以下内容:
name: MyWorkFlow
on: push
env:
FOO: bar1
jobs:
myJob:
- run: export FOO=bar2
- run: echo $FOO
Run Code Online (Sandbox Code Playgroud)
输出是“bar1”。无论如何,我可以覆盖这些环境变量吗?
我的用例是,当拉取请求评论中有触发词时触发文档构建。我正在使用pull-request-comment-trigger来了解代码中是否存在触发词。
知道 Action 被触发后,我想在存储库中运行一些命令。所以,我必须为此使用操作/结帐。
我的疑问是,在run命令内部,只有 Shell 命令有效,对吧?如果满足上述条件,我想再做一份工作。
我当前的 Yaml 文件
name: Testing GH Actions
on:
pull_request:
types: [opened]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: khan/pull-request-comment-trigger@master
id: check
with:
trigger: "AppajiC"
reaction: rocket
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
- run:
# Generally Anything here runs if below condition satisfies.
# I want to run another job here, which uses actions/checkout@v2 action
if: steps.check.outputs.triggered == 'true'
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在寻找一种在 github 上隐藏分支的方法,有可能吗?例如:我是存储库所有者,我想要三个贡献者,他们不能在主分支上合并,但他们可以打开 PR 并且他们看不到其他分支,只能看到他们自己的分支和主分支。我需要这个到一个特定的存储库。
有谁知道如何做到这一点?Github 操作或类似的东西?
我知道这可能会引起争议,但是......
谢谢你!:D
我正在尝试使用 CICD 原则建立一个 React 网站。我可以在本地运行它,使用“npm run build”获取构建文件夹,并且当我手动将文件推送到 S3 时,网站运行良好。但是,当我尝试通过 github 操作运行构建和部署时,upload-artifacts 步骤会给出以下警告:“警告:在提供的路径中找不到文件:构建”。不会上传任何工件。” 显然,部署作业会失败,因为它找不到任何要下载的工件。究竟为什么会发生这种情况?自从在构建后运行 ls 将其列为当前工作目录中的文件夹之一以来,肯定会创建构建文件夹。
name: frontend_actions
on:
workflow_dispatch:
push:
paths:
- 'frontend/'
- '.github/workflows/frontend_actions.yml'
branches:
- master
defaults:
run:
working-directory: frontend
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- name: npm install
run: npm install
- name: npm build
run: npm run build
env:
CI: false
- name: Upload Artifact
uses: actions/upload-artifact@master
with:
name: build
path: build
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- uses: …Run Code Online (Sandbox Code Playgroud) 在 GitHub 操作中,我使用脚本创建一个文件。然后我可以使用 git 创建一个分支,添加文件,提交文件并将分支推送到存储库。全部使用git。
然后我想在我的操作中创建 PR,因此我使用 GH CLI。在我的步骤中,这是与 PR 相关的部分:
echo "GH CLI Auth"
gh auth login --with-token < ${{ secrets.GITHUB_TOKEN }}
echo "Create PR"
gh pr create --reviewer myhandle --title "Show Notes ${{ env.NEWFILE_PATH }}" --body "Show Notes ${{ env.NEWFILE_PATH }}"
Run Code Online (Sandbox Code Playgroud)
但我收到错误。
GH CLI Auth
/home/runner/work/_temp/<GUID_CENSORED>.sh: line 13: ***: No such file or directory
Error: Process completed with exit code 1.
Run Code Online (Sandbox Code Playgroud)
我授予 GitHub 令牌对代码和拉取请求的写入权限。
permissions:
contents: write
pull-requests: write
Run Code Online (Sandbox Code Playgroud)
github-actions ×10
github ×2
.net ×1
buildx ×1
cicd ×1
docker ×1
firebase ×1
github-api ×1
github-cli ×1
github-pages ×1
next.js ×1
npm ×1