Deploy using VSO RM to Azure Linux with PS/DSC - linux

I have setup a Linux Srv in Azure with OMI/PSDCS and trying to deploy with VSO Release Management.
I have created an Azure environment (I won't allow mw to create a Standard Env) and solved all certificate issues so far.
Now it's failing because RM try to connect to the linux server using Negotiate Auth and (of course) the OMI service only supports Basic.
How can I make RM to use Basic? Or OMI to support Negotiate/NTLM?
Any post or document showing ANY working VSO RM deploying to Azure without using Chef?

The "Run PS/DSC task" that ships with RM does not support Linux deployments. The current implementation is quite dependent on Windows being the target. But, may I suggest a couple of workarounds?
For both of these workarounds, you should first have a PS script (with DSC configurations and Start-DSCConfiguration) that you can run from a Windows machine to target your Linux machine, without using RM or Build. You have complete control on how this script should be written including how the credentials are created, and the authentication method.
Once you have an independently tested PS script, you can do one of the following:
Create a Build definition in your visualstudio.com account Build hub and use the Powershell Build step to run the above script. Note that this is the new Build system in VSO. It has the ability to run PS scripts easily. Note that you are creating a build definition here instead of a release template in RM. The new Release hub that will be available later this year in VSO will be very similar to the Build hub, and you can leverage the same PS script inside a Release definition once that is available. I tried this approach and it seems to work fine.
Setup a Windows machine as a target Azure environment in RM. Create a vNext release template to then run the above PS script on the Windows machine. When that script is run, it will be able to target the Linux server. In this approach, you are using a Windows machine as a proxy to run the PS script. I have tried this using agent-based release template, and not with the vNext release template. I am hoping that it will work fine with the vNext release template as well.

Related

Azure DevOps Pipeline Hosted Agent - where to find system capabilities?

Where can I see the system capabilities of hosted agents? I went here and it only shows user capabilities:
https://dev.azure.com/{myOrg}/{myProj}/_settings/agentqueues?agentId=8&queueId=91&view=capabilities
Trying to find versions of msbuild and paths to it on the computer. I need to use version 16
You can check the tools and softwares installed on the Microsoft hosted agent here. Click the Link shown as below screenshot to see the included softwares.
Unfortunately msbuild seems not installed separately, as it cannot be found in above hosted agents. But you can directly use Msbuild task and specify the msbuildVersion to 16.0 in your pipeline. The pipeline will automatically download the specified version msbuild from the cloud.
And also you can build your own self-hosted agent to run your pipeline. and manually download msbuild version 16 to your on-premise machine. So that you can specify the msbuild location in msbuild task to your on-premise msbuild location.
They have actually open sourced the Hosted Agents and you can find out all the information required from the repositories:
https://github.com/MicrosoftDocs/vsts-docs/blob/master/docs/pipelines/agents/hosted.md
The have links for each of the Images that are available at this link:
https://github.com/MicrosoftDocs/vsts-docs/blob/master/docs/pipelines/agents/hosted.md#software
Windows2019-Agent
https://github.com/actions/virtual-environments/blob/master/images/win/Windows2019-Readme.md
You can also add Demands to Agents:
https://learn.microsoft.com/en-us/azure/devops/pipelines/process/demands?view=azure-devops&tabs=yaml
This can be used to ensure the agent has your the specific software needed for your builds.

Deploying .Net Core to Linux WebApps on Azure with DevOps

I have a build/release for a .Net Core WebApp that works on windows machines perfectly, however I want to be able to deploy the same codebase to Linux. I set up a build and release and am using the "Web App on Linux" to deploy to my Linux WebApp. I also made sure that the Runtime Stack(s) on BOTH the Build and on the WebApp are set to use .Net Core 2.2:
The builds and the release run perfectly, however once the deployment is complete the website goes to a 404 (replacing the default Azure startup HTML page). I've FTP'd into the WebApp and see that the files are deployed to the machine, however I see that there are multiple "wwwroot" folders:
The top "wwwroot" folder does contain the DLLs for my application so that is a good sign:
Curiously I can get to the static files from my app such as the CSS, JS or the favicon if I navigate to /wwwroot/(filename)
I am pretty sure I have everything set up properly so I am hitting a wall on things to try. I've never had issues like this deploying to Windows WebApps so I am sure there is a setting or something that I am unaware of or is missing from the documentation.
For further details on this issue here is my BUILD:
...and my RELEASE setup:
I had a similar issue and the issue came down to how VS was publishing the zip vs Dev Ops. If you return to the Azure portal you will need to add a startup command specifying where your main DLL is located.
https://learn.microsoft.com/en-us/azure/app-service/containers/app-service-linux-faq#built-in-images

Can I run JetBrains dotCover in a Linux Docker container?

I'm building and running a .NET Core application inside a Linux-based Docker container. I'm having trouble figuring out if dotCover is cross-platform? I want to either...
Install and run dotCover inside the Docker container (that is $ dotcover analyse ...).
Or run some compatible instrumentation during the test step inside the Docker container and send a file back to the host, where I can run dotCover on the file.
Obviously, I'm already using the dotCover "server package". It doesn't indicate that it's cross-platform. So, maybe I'm stuck trying to find another way.
Resurrecting this one more time for the next reader. Jetbrains released a cross-platform console runner.
https://blog.jetbrains.com/dotnet/2019/08/26/cross-platform-dotcover-console-runner-whats-new-dotcover-2019-2/
I don't mean to resurrect an old post, but I'm going to for anyone landing on this from the internet.
Currently no, all of the ReSharper products from JetBrains are not cross platform. Windows is a requirement under the system requirements page.
https://www.jetbrains.com/resharper/download/system_requirements.html
This means that it is not readily available to run in a linux-based container or linux environment.

TFS Visual Studio 2012 - Build and send remote automated tests to pool of VMs

I am having difficultly trying to come up with a working automated build and automated testing solution for testing several applications remotely.
I have several different applications which install onto Windows test machine VMs (Win 7) and an automated test solution which is built using a test settings file and test case filter and run automated tests against this application.
I have two groups of VMs, one group to build the automated tests solution which then sends the tests remotely to the second group which has the application installed on.
Currently this is done by a default template build definition (VS 2012) which builds the test solution on a build VM and sends the tests remotely to a test VM (has application needed manually installed prior to starting build), defining a test controller in the test settings file (there is a test settings file per test VM / build definition) the tests are sent to that test controller. Each test VM has a test controller and test agent on the same VM to prevent the tests going to multiple machines, the tests need to be sent to one machine with that specific application installed.
I am wanting to scale this process and allow for complete automation, so I can just kick off a specific application build which will install the required application on a free test VM, build the test solution code on a build VM and send the tests remotely to the test VM which now has the application needed installed on it, run the tests and send the results back.
I am having issues with doing this between the build and test VMs and having the test settings file on the build machine updated with the test controller name of the free test VM.
Is something like this possible to do and if so what would be the best way to go about this?
Any help or feedback would be greatly appreciated.
Setup:-
TFS / Visual Studio 2012 and Windows 7 build / test machines
Reference links:-
How can TFS build process be configured to execute tests on Test Agents through a Test Controller?
Ok, so you need to look at Lab Management for configuring environments. TFS has a built in method of saying that a set of machines go together and that you want to run tests against it. You can then use MTM to push groups of automated tests to environments and record the data.
In addition you should look at Release Management for VS 2013 (works with 2012) for pushing out the bits to your environments.
With those two tools you can maintain release pipelines where not only can you push tests but they pull tests as part of the release process.
http://nakedalm.com/execute-tests-release-management-visual-studio-2013/
You can have a build kick off the process of build->deploy->test and repeat the process easily...

Creating IIS Instance over network using MSBuild

Is there a way to have MSBuild create an instance of IIS on another remote machine?
I do the builds (which occur locally using TeamCity AFAIK), but would like the code to be pushed up to our testing server once the build is completed. I am using IIS 6.x (Windows XP dev and Windows 2k3 Server for testing).
Did you check out MsBuild Extension Pack? It has a task called MSBuild.ExtensionPack.Web.Iis6Website wihch can be used to create a web site.
Disclaimer: I have never actually used that task with remote support, but the documentation claims is it supported :)
EDIT: you could also have a look at the WebDirectoryCreate task in the MSBuild Community Tasks project.
Another option is to use MSDeploy (which you can call from MSBuild). With MSDeploy you can install a Remote Agent Service which listens for actions to be executed on the target IIS server.

Resources