How to build and deploy dacpac in azure devops - azure

I am new to Azure devops. Here I have a requirement to do dacpac file build and deployment in Azure devops.can anyone help me to share me the step to step procedure.
I am using visual studio 2017.
Thanks

How to build and deploy dacpac in azure devops
You can use build pipeline to build that and then deploy it using release pipeline.
1.If you developed the sql server project by VS, you can publish it to Azure Devops Repos following this document.
2.Then create a build pepeline following this, you can use classic UI editor without YAML to configure your pipeline.
1) Select the Azure Devops Git as source. And choose the sql server project published from VS.
2) Choose the agent you want to use in Agent Job, Hosted agent or Private agent.
3) Click the + in Agent Job to add a task. You can choose the Visual Studio build task, this task will call msbuild.exe to build your sql server project.
3.To deploy the output of sql server project, there're many choices. One is to use Windows Machine File Copy task to deploy the files in current agent to destination folder in remote machine. You can use this task in Release or even Build Pipeline to do that.
Hope it helps and if I misunderstand anything, feel free to contact me.

Related

how to make azure devops release pipeline click once

I have a simple executable, that I have build and unittested in a build pipeline.
now I want to install it on some test machines and run some tests on the app, before releasing it to production. (eventually I hope to automate the tests with specflow, but that is the next step)
So basically I have an helloworld.exe build, that I want to be installed from a pipeline to at test agent computer.
I think clickonce is the optimal option, but am unsure how to set it up on azure devops. (we use a server on premises)
Msbuild has Publish target to build and publish the ClickOnce application. It will generate the setup.exe you want. Please check document: Create and build a basic ClickOnce application with MSBuild. In release pipeline you can use msbuild task or Visual Studio Task with Publish target(/t:Publish as argument).
Then you'll get one app.publish folder where the files you want exist there:
This folder can be used for your further deployment.
Here is a ticket you can refer to .
In addition, azure devops Marketplace provides some extension: ClickOnce Packager, ClickOnceMore DevOps Pipeline Task.

Automated way to add & deploy SPFX sppkg solution package file to SharePoint 2019 (on-premises) app catalog

I'm looking for an automated way for adding & deploying SPFX solution package (*.sppkg) into the SharePoint 2019 (NOT online) app catalog. This is cause and doing the deploying using azure devops (CI/CD) release pipeline.
I found those two below tasks for adding this package:
The first one worked fine in just adding the file to the app catalog but not deploying it, so I had to do it manually.
The second task has the option to write PnP script against SharePoint, but the problem with me is that most of the scripts i found are for SharePoint Online not on premise.
Appreciate your support if you had such situation and got it solved using PnP or something else.
Microsoft's official documentation describes an approach to continuous deployment using Azure DevOps. You can click Implement Continuous Integration and Continuous deployment using Azure DevOps for detailed information. There is no need to write PNP scripts using this method.
Setting up Azure DevOps for Continuous Deployments with a SharePoint
Framework solution requires the following steps:
Creating the Release Definition
Linking the Build Artifact
Creating the Environment
Installing NodeJS
Installing the CLI for Microsoft 365
Connecting to the App Catalog
Adding the Solution Package to the App Catalog
Deploying the Application
Setting the Variables for the Environment
If you just want to use Azure DevOps CD and don't want to use CI, you can skip the second step and upload your build artifacts directly to the repository, and then use them in the release pipeline.
There are some basic scenarion for using pipelines:
You use cloud pipeline (azure, github, etc) with their abilities and their purpuse.
You create own environment with self-hosted pipelines
You add own runner (pipeline agent) to your cloud (azure) environment
So, azure allows you to add own pipeline agent to environment. For example, self-hosting windows agent.
So, I think solution in your case will be:
Install self-hosted agent
Configure agent environment - installing SharePointPnPPowerShell2019
Add agent to your azure environment
Add step to deploy your solution into pipline with using self-hosted agent
This scenario allows you to deploy sppkg solutions without publish your app catalog to internet, because your self-hosted agent will be in the save network as your sharepoint farm.
Azure pipeline deploy steps allow to run powershell on target machines
Prerequisites This task uses Windows Remote Management (WinRM) to
access on-premises physical computers or virtual computers that are
domain-joined or workgroup-joined.

Azure Pipeline : How to release Project binary file into Azure machine

Azure DevOps Pipeline : How to release Project binary file into Azure.
How can I deploy project binary files into server using Azure Pipeline, don't want to release project full source code?
You would do something like this.
create a deployment group
create a build, configure it
create a release, configure it (get artifacts from build, deploy to deployment group)
These are the steps you need to perform. link has more information on this matter

Continuous Dilvery as Windows Service and Web Api using TFS Build on Azure VM

I have TFS 2015 and i was able to automated the build process from the branch and get the files from the drop folder as shown below:
It has release for multiple projects like Web API and Windows Service
I want Azure VM on which i want to automate the deployment process - continuous delivery.
Deploy the Web API on IIS on Azure VM
Deploy the Windows Services On Azure VM.
Run Scripts SQL.
I have credentials of Azure VM. How i can perform the three above steps.
I have worked on a similar problem in the past so can probably help you out (MSFT, if it helps).
Web Api on IIS on Azure VM
This is almost completely automated in the form of WinRM - IIS Web App Deployment task that you can find and add in your release definition. The link provides complete instructions on what parameters to provide and tweaks to be done for Azure VM compared to on-premise ones. There are a few prerequisites to running this task, like installing and configuring IIS on the VM which the documentation discusses in detail. As a necessary input to this task, you need to provide the web deploy package which I am assuming was generated as your build output. If not, you can refer to this SO post to get the required output. If you have parameters like connection strings that you wish to modify at deploy time, using a parameters.xml file in the above task.
Windows Service on Azure VM
There is no completely automated task for this requirement, but it is pretty straight-forward. It can be achieved by using the PowerShell on Target Machines task along with Azure File Copy task. For the first task, all that is required as input is the .exe of the windows service that you wish to deploy, which should be generated as the output of your build process (build artifacts). Much of the remote machine inputs for this task is similar to the previous one so you should not have any problem there. You will need to check-in the Powershell script that does the actual windows service installation, in your source code as part of the same windows service project (copy local = True). This will ensure that as the build output, you will have access to the powershell script which you can use in the second task. Azure File Copy is required to copy your powershell script to the Azure VM so that the Powershell task can execute it. Let's assume you copied the powershell script to a folder C:\Data\ on the Azure VM.
$serviceName = "MyWindowsService"
$exeFullName = "path\\to\\your\\service.exe"
$serviceDisplayName = "MyWindowsService"
$pss = New-Service $serviceName $exeFullName -DisplayName $serviceDisplayName
-StartupType Automatic
Add this content to the checked in powershell file and name it installWindowsService.ps1. Then in the powershell task provide the path of the powershell file to execute as C:\Data\installWindowsService.ps1.
Run SQL Scripts on Azure VM
I haven't personally worked on this so the best I can do is point you in the right direction. If you are using DACPAC for your SQL deployment, you can use the WinRM - SQL Server Database Deployment task. If you just intend to execute scripts, use the remote powershell task from above and refer this post that will help you with running SQL commands through powershell script
Seems you want the CD release process picks up the artifacts published by your CI build and then deploys them to your IIS servers/Windows Services on Azure VM.
If you've just completed a CI build, then you should create a new release definition that's automatically linked to the build definition.
Open the Releases tab of the Build & Release hub, open the + drop-down in the list of release definitions, and choose Create release definition.
For 2, write a powershell script to handle this, ensure build outputs
were available to copy from the ‘Drop’ folder on the build and that
they are copied to C:\xxx\ on the target VM(s). More detail steps
please refer this blog.
For 3, you could use Azure SQL Database Deployment task. Either
select the SQL Script file on the automation agent or on a UNC path
that is accessible to the automation agent. Or directly enter the
InLine SQL Script to run against the Azure SQL Server Database. Also take a look at the tutorial.
Maybe not all the task is fully Compatible with TFS2015 version, you could upgrade your TFS version to get more new features or customize your own build/release task to handle it.

VSTS: Deploying to Azure based VM

I'm setting up a test pipeline using VSTS and now I have my builds working using an Azure VM as a build agent, I want to also deploy to that machine.
I've tried using the Windows File Copy and IIS deploy tasks but understand this isn't a very good solution for security reasons, so wondered what the best task to use would be to get the build/release agent on the machine to copy the artefacts to the Azure based VM and deploy locally to its IIS install?
I'd suggest that you strongly reconsider not deploying your application to your build agent. This will make it extremely difficult to find issues due to missing DLLs or files because the build server has everything. I suggest either creating another VM to deploy to or leverage Azure's PaaS for web applications.
With all of that said, because you are working locally on the same VM, you can simply leverage the Copy Files task to move the files to where they need to be. To "deploy" the application, you can simply copy the output of the website to the IIS directory.
Another option would be to create a PowerShell script that would setup, configure and deploy the application to the local machine. In which case, you could simply leverage the PowerShell task.
The source (Get sources section in build definition) will be download to build agent automatically during the build, so you don’t need to copy the files to that machine through Windows File Copy task, the simple workflow is that:
Add NuGet task to restore packages
Add Visual Studio Build task (MSBuild Arguments: /p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageLocation="$(build.artifactstagingdirectory)\\web.zip" /P:PackageTempRootDir="")
Add WinRM-IIS Web App Deployment task: (Web Deploy package: $(Build.ArtifactStagingDirectory)\web.zip)
As virusstorm said that you can copy files to other path on that machine through Copy Files task.
On the other hand, by default the artifact will be downloaded to the target machine if you are using release and you can consider Deployment groups if the deployment machine is different with the build agent machine.

Resources