我正在尝试将ci / cd从github设置为azure函数 我在git" https://github.com/AmitayStrijevski/AppFunctionTest"。
中创建了一个Azure功能项目我通过视觉工作室发布了一次,效果很好。
然后我把它连接到这里描述的github ci / cd " https://docs.microsoft.com/en-us/azure/azure-functions/functions-continuous-deployment#continuous-deployment-requirements"
当推送到git时,我可以看到它需要我的代码和"部署"但是当我查看这些函数时,我的新代码不在那里,日志显示以下消息
"找到解决方案' D:\ home \ site \ repository \ HeyArnold \ HeyArnold.sln'没有可部署的项目。改为部署文件。"
我在这上花了一天多的时间,我真的很感激这个问题的帮助
在使用空网站并设置由azure门户网站生成的相同文件夹结构时,我能够使用github部署 这仍然没有解决我的问题,因为我想使用Azure功能项目,但我认为值得一提
答案 0 :(得分:2)
查看<functionappname>.scm.azurewebsites.net/dev
以查看实际部署到wwwroot
文件夹的文件。
我看了一下你的github项目,我注意到了一些事情:如果你使用.cs
文件,你应该创建一个precompiled function,你可以直接从VS部署。
但是,如果您正在使用.csx
文件并希望能够从函数门户编辑代码,那么您所拥有的结构是正确的 - 只需删除解决方案和csproj文件,因为我相信它们是混淆部署基础架构
答案 1 :(得分:2)
在咨询Microsoft支持后,我收到了两个需要放在.sln文件夹中的文件,然后git部署就可以了
请注意更换线条 :: 1.恢复nuget包 :: 2.构建和发布 使用您的解决方案和项目实际名称
.deployment
[config]
command = deploy.cmd
deployment.cmd
@if&#34;%SCM_TRACE_LEVEL%&#34; NEQ&#34; 4&#34; @echo off
:: ---------------------- :: KUDU部署脚本 ::版本:1.0.15 :: ----------------------
::先决条件 :: -------------
::验证已安装node.js. 其中节点2> nul&gt; nul IF%ERRORLEVEL%NEQ 0( echo缺少node.js可执行文件,请安装node.js,如果已安装,请确保可以从当前环境到达。 转到错误 )
::设置 :: -----
setlocal enabledelayedexpansion
SET ARTIFACTS =%~dp0%.. \ artifacts
如果没有定义DEPLOYMENT_SOURCE( SET DEPLOYMENT_SOURCE =%~dp0%。 )
如果没有定义DEPLOYMENT_TARGET( SET DEPLOYMENT_TARGET =%ARTIFACTS%\ wwwroot )
如果没有定义NEXT_MANIFEST_PATH( SET NEXT_MANIFEST_PATH =%ARTIFACTS%\ manifest
如果没有定义PREVIOUS_MANIFEST_PATH( SET PREVIOUS_MANIFEST_PATH =%ARTIFACTS%\ manifest ) )
如果没有定义KUDU_SYNC_CMD( ::安装kudu同步 echo安装Kudu Sync 调用npm install kudusync -g --silent 如果!ERRORLEVEL! NEQ 0转到错误
::本地运行&#34; kuduSync&#34;也会有用 SET KUDU_SYNC_CMD =%appdata%\ npm \ kuduSync.cmd )
::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::: ::部署 :: ---------- echo handle功能使用自定义脚本进行应用程序部署。
:: 1.恢复nuget包 call:ExecuteCmd nuget.exe restore&#34;%DEPLOYMENT_SOURCE%\ FunctionAppVS2017_3Preview.sln&#34; -MSBuildPath&#34; D:\ Program Files(x86)\ MSBuild-15.3-preview \ MSBuild \ 15.0 \ Bin&#34; 如果!ERRORLEVEL! NEQ 0转到错误
:: 2.构建并发布 call:ExecuteCmd&#34; D:\ Program Files(x86)\ MSBuild-15.3-preview \ MSBuild \ 15.0 \ Bin \ MSBuild.exe&#34; &#34;%DEPLOYMENT_SOURCE%FunctionApp1 \ FunctionApp1.csproj&#34; / p:DeployOnBuild = true / p:configuration = Release / p:publishurl =&#34;%DEPLOYMENT_TEMP%&#34; %SCM_BUILD_ARGS% 如果!ERRORLEVEL! NEQ 0转到错误
:: 3. KuduSync IF / I&#34;%IN_PLACE_DEPLOYMENT%&#34; NEQ&#34; 1&#34; ( call:ExecuteCmd&#34;%KUDU_SYNC_CMD%&#34; -v 50 -f&#34;%DEPLOYMENT_TEMP%&#34; -t&#34;%DEPLOYMENT_TARGET%&#34; -n&#34;%NEXT_MANIFEST_PATH%&#34; -p&#34;%PREVIOUS_MANIFEST_PATH%&#34; -i&#34; .git; .hg; .deployment; deploy.cmd&#34; 如果!ERRORLEVEL! NEQ 0转到错误 )
::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::: 转到最后
::执行错误时将回显的命令例程 :ExecuteCmd SETLOCAL 设置 CMD =%* 致电% CMD % 如果&#34;%ERRORLEVEL%&#34; NEQ&#34; 0&#34; echo失败exitCode =%ERRORLEVEL%,command =% CMD % 退出/ b%ERRORLEVEL%
:错误 ENDLOCAL echo网站部署期间发生错误。 call:exitSetErrorLevel call:exitFromFunction 2&gt; nul
:exitSetErrorLevel 退出/ b 1
:exitFromFunction ()
:端 ENDLOCAL echo成功完成。
答案 2 :(得分:0)
我使用的是VSTS而不是GitHub,但您仍然可以找到此链接here。
在VS2017预览中使用Azure功能的工具扩展,以及本期中描述的构建步骤,我已经能够使用Azure功能项目获得此CI管道。 Josh Carlisle详细介绍了在blog上完成并运行的步骤。
答案 3 :(得分:0)
您可add a .deployment
-file到根目录,并将Azure和Kudu指向正确的项目路径:
import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController {
@IBOutlet weak var mapView: MKMapView!
var location : ICDLocationModel?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
location = SCFileManager.readJsonFile(file: "location") as ICDLocationModel
self.determineCurrentLocation()
let latDelta: CLLocationDegrees = 0.05
let lonDelta: CLLocationDegrees = 0.05
let span = MKCoordinateSpan(latitudeDelta: latDelta, longitudeDelta: lonDelta)
//create location
print("Location : \(location) \n\n ")
let mapCenter = CLLocationCoordinate2DMake(location!.latitude!, location!.longitude!)
print("mapCenter : \(mapCenter) \n\n ")
let region = MKCoordinateRegion(center: mapCenter, span: span)
print("region : \(region) \n\n ")
//set map view to specified locaiton
self.mapView.setRegion(region, animated: true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
}
或者您可以add a Application settings in the Azure Portal使用键[config]
project = src/PathToYourProject
,并指向正确的项目路径。