Jif*_*ueb 5 asp.net-core github-actions
dotnet 发布工作流任务的工作方式发生了一些变化。我们使用这个非常简单的 yaml 脚本已经有一段时间了。
name: Publish to staging server
env:
AZURE_WEBAPP_NAME: 'my-dotnet-webapp'
AZURE_SLOT_NAME: 'staging'
GITHUB_PUBLISH_SECRET: ${{ secrets.AZURE_DEPLOYMENTSLOT_STAGING }}
AZURE_WEBAPP_PACKAGE_PATH: '.'
DOTNET_VERSION: '7.0.0'
on:
push:
branches:
- staging
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Set up dependency caching for faster builds
uses: actions/cache@v3
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Build with dotnet
run: dotnet build --configuration Release
- name: dotnet publish
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v3
with:
name: .net-app
path: ${{env.DOTNET_ROOT}}/myapp
retention-days: 1
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Production'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v3
with:
name: .net-app
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v2
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
slot-name: ${{ env.AZURE_SLOT_NAME }}
publish-profile: ${{ env.GITHUB_PUBLISH_SECRET }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
Run Code Online (Sandbox Code Playgroud)
今天,我尝试使用工作流程运行,并在 dotnet 发布步骤中收到以下错误:
Error: /usr/share/dotnet/sdk/7.0.200/Current/SolutionFile/ImportAfter/Microsoft.NET.Sdk.Solution.targets(36,5): error NETSDK1194: The "--output" option isn't supported when building a solution.
Run Code Online (Sandbox Code Playgroud)
我希望工作流程能够正常运行,就像之前已经执行过数十次一样。
这里究竟发生了什么?
经过大量研究和一些尝试和错误后,我意识到我必须明确指定 webapp 项目文件作为命令的参数。这是因为我仍然需要使用输出选项,因此 Github 知道在后续部署工作流程中在哪里可以找到文件。
然后就是确定项目文件的文件路径。对于其他人来说,这可能会有所不同,具体取决于其特定的 Visual Studio 解决方案文件结构。
以下是解决此问题的修复程序(假设当我在 VS 中创建项目时,我将其命名为MyWebApp:
- name: dotnet publish
run: dotnet publish ~/work/MyWebApp/MyWebApp/MyWebApp/MyWebApp.csproj -c Release -o ${{env.DOTNET_ROOT}}/myapp
Run Code Online (Sandbox Code Playgroud)
是的,有 3 个目录深。我的 Windows 文件资源管理器中的项目文件只有 2 个目录深。
希望这对某人有帮助。
更新 2023 年 3 月 30 日
感谢所有其他答案和评论!他们帮助我的构建工作并发布到 Azure,但是它仍然给我留下了关于 -output 不受支持的警告。
这就是我的 dotnetpublish 命令现在的样子。没有错误,没有警告
dotnet publish -c Release -property:PublishDir=${{env.DOTNET_ROOT}}/myapp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1889 次 |
| 最近记录: |