Category: AzureDevOps

Azure Exam Resources

A colleague at work found some amazing resources for Azure exams, I thought it best to share the resources, hope you find them as useful as I have for the exams, please share the link, the courses are all free from EDX. Even if they become invalid the learning content here is fantastic!

MS-100: Microsoft 365 Identity and Services


MS-101: Microsoft 365 Mobility and Security


AZ-100: Microsoft Azure Infrastructure and Deployment


AZ-101: Microsoft Azure Integration and Security


AZ-200: Microsoft Azure Developer Core Solutions


AZ-201: Microsoft Azure Developer Advanced Solutions


AZ-300: Microsoft Azure Architect Technologies


AZ-301: Microsoft Azure Architect Design


AZ-401: Microsoft Azure DevOps Solutions (this is the AZ-400 exam content)


AZ-900: Microsoft Azure Fundamentals


MS-900 Microsoft 365 Fundamentals

Bonus section includes links to the above and more: – https://partner.microsoft.com/en-US/training/assets#/?type=Exam

All the exam learning paths can be found here: –

https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RWtQJJ

Please leave feedback questions etc in the comments section below.



Replacing Azure Automation using Azure CLI and Azure Devops

A customer at work has several Azure Virtual Machines and they wanted to have them stopped between the hours of say 10pm until 6am, nothing too difficult there. I setup an Azure Automation account with a Start/Stop VM Solution, long story short it doesn’t really work, like at all, its messy etc, it’s just a mess.

Note – the solution presented below means zero resource provisioning!

I decided to look at a different way of doing it and asked around and a colleague Nathanat work suggested Azure Functions and also mentioned he had been looking at the Azure CLI of late.

The below is the solution that he came up with, I like this and decided to go ahead and pinch his idea, don’t worry he works in my team and I will give credit where credit is very much due 🙂 – now before I go any further, yes I could use PowerShell, Azure Functions, etc. etc. but I like this implementation mainly because I learned a couple of new things, and if I’m learning then all good.

He wrote 2 bash scripts which invoke the Azure CLI, you pass in the name of the Resource Group(s) and it’ll loops through and starts / stops all the VM’s in your Resource Group(s).

Start VM Bash Script:-


Stop VM Bash Script:-


Start VM Yaml Build Script: –


Stop VM Yaml Build Script: –

Then to ensure the bash scripts run every day you set the schedule for the build and your good to go, like so:-

Feedback welcome, I like this idea for the following reasons: –

  • Learned some YAML
  • Learned about trigger (think scheduled builds) on YAML builds
  • And looked more at the Azure CLI which is of huge interest

Please also follow Nathan on twitter.



Azure Devops Pass Variables between Tasks

Today I wanted to see if it was possible to create a variable in Azure Devops, change the value within a Task and then use the updated value in a step further down the list of Tasks.

 

Turns out its pretty easy (when you get the syntax correct)


So I created a variable in Azure Devops called Version like so and set its value to 1.0

 

 

 

And then I want to make sure I can read this from a standard PowerShell Task in a step within my Build like so :-

Which when built showed me the value as I’d expect of 1.0

And then I want to set the variable to a new value (which could be from anything or anywhere to be honest) using the syntax

##vso[task.setvariable variable=Version]1.2.3

And then finally read out the current value by using $(Version)

Which shows the Version parameter has been updated to 1.2.3 as we would want.

Hope this helps someone at some point 🙂



Azure Devops – Add your build status badges to your Wiki

Its always a good idea on your project to keep your project documentation up to date, I personally like to make use of the Wiki inside Azure Devops, we use Azure Devops almost exclusively at work now.

On the wiki we have a page which documents the Azure Builds and Release pipelines, so that people can get an idea of what the individual builds are for and explain the steps within the Release pipelines, for the most part this is really straightforward, but for new people joining the team it just makes life easier to have this kind of thing written down and explained.

On that note I wanted to show you how to add the status badges for each build to your Wiki, it took me a wee while to find this so I thought I’d blog it because I’ll forget and so other people can see how to do it.

An example of the kind of thing I am talking about is below: –

So how do you find the Markdown for the badges so that you can add this to your wiki or elsewhere?

If you browse to your build(s) for your projects, click on the 3 ellipses on the right hand side, next to the Edit and Queue buttons and then choose Status Badge

Then you need to select the text next to Markdown, and then just paste this into your wiki page.

Hopefully someone finds this useful, bye for now.



Azure Devops – Release Gates

In this blog post I want to talk to you about release gates within Azure Devops, release gates can be useful if you want to add in some further pipeline checks to stop the release going ahead.

Nothing better than an example so here is how to set up gated releases using Azure Devops.


Example

This example shows how you can add in a release gate so that the release wont go ahead and deploy if say there are still open bug tasks within the Azure Board for the current sprint.

Once you have a release, first, click on the lightning bolt on the stage as seen below, and then enable the Gates are on the right hand side.

One this had been selected choose Add and then select Query Work Items, for this I have created a Shared Query where I created a shared query to show me if there are any bugs which are sitting as Approved (which I’m using as open but not started as yet), I don’t want the release to go ahead if there are any bugs in the Approved status.


Note:- In order to create a new query within Azure Devops on the left hand side select Boards, queries and then select new query.

An example query would look something like the following


Fill out the screen below like below and I set the upper threshold to 0.

To recap, I want my release to fail the gate so that the release wont go ahead because I have open bugs within my Azure Board for this particular project.

There are a number of different types of release gates you can use and here is a screen shot of the ones available to use at this time.

I hope you find this useful, if you have any questions please leave feedback.



Podcast appearance on CloudSkills.fm

On March 12th 2019, Mike Pfeiffer invited me to appear on his excellent podcast which is called CloudSkills.fm

CloudSkills.fm is a weekly podcast with technical tips and career advice for people working in the cloud computing industry

Mike Pfeiffer is a Pluralsight author, consultant, advisor, author, and mentor for people ramping up on cloud-based technologies and it was a privilege to have him invite me onto his show and chat about Azure Certifications and also Azure Devops. If you haven’t checked out his podcast as yet, then please do @ cloudskills.fm

In my episode we talk about how I studied for the Azure exams, what content and methods of studying I use and we also talk about how I make use of Azure Devops with my companies customers, where we use it to deploy web apps and infrastructure as code.

I have also been working on moving customer’s data from on premises to Azure using Azure Sql, Azure Data Factory and also using Analysis services with Power BI reporting capabilities, more on that coming soon on my blog. For this project we are building everything from the ground up using Arm templates, deploying the entire resource group to Azure and populating the Azure Data Factory with pipelines all using Azure Devops.

Before I blog about that, lets talk more about my podcast appearance. It’s always a pleasure to be able to talk on podcasts about what I get up to and I like to share what I have been doing with Azure on my blog here. Mike is a very knowledgeable guy and like myself is insanely busy working on multiple things whilst trying to learn and keep up to date, he also has a weekly mailing where he mentions the interesting things he comes across week to week.

I’ll keep this post short and move onto blogging about the Data side of things I’ve been involved in, but if your thinking of doing some Azure exams and wont to know where to get started then have a listen to the episode and give me feedback on it.

Enjoy listening if you take the time to tune in.

 



2018 Retro

I’m not a huge fan of dwelling on past accomplishments, I’m more interested in what’s to come but here goes…

Last year involved the following:

  • Got a new job as Head of Development Services for Sword IT
  • Worked on a large Azure web app with Azure Functions and CosmosDB project straight out the gate
  • Invited onto the board for the Glasgow Azure User Group where I help organise the meetups
  • Spoke at the first Glasgow Azure Global Bootcamp
  • Organising the 2019 Glasgow Azure Global Bootcamp
  • Feature in the top 20 Featured Azure Blogs https://blog.feedspot.com/microsoft_azure_blogs/
  • Sat 8 azure exams (7 betas) within 4 months – I knew zero Azure at the start of 2018.
  • Passed the Architecting Microsoft Azure Solutions (70-535 exam)
  • Wrote 49 blog posts mostly on Azure and Azure Devops
  • First ever Open Source PR accepted (for docs.microsoft.com)
  • Self nominated for MVP
  • Passed 2000 followers on Twitter
  • Technical Reviewer for an Azure related book
  • Started recording YouTube video’s on Azure Devops

Things to look forward to

This year more of the same with a visit to Microsoft Ignite (November) planned and hopefully the Ignite Tour in London late Feb.

 



Azure Devops – OSS Scanning using WhiteSource

Its about time your AzureDevops builds were scanning for OSS vulnerabilities, well your in luck as you can use this Marketplace Extension which is FREE: – https://marketplace.visualstudio.com/azuredevops/

One you add the extension to your Organization you can add it into your build like so:-

This will scan your oss code and give you a detailed report on any vulnerabilities within your Azure Devops repository – #winning.

I have added it to a build I have and here is a sample of the report which you’ll see produced once you’ve added it into the build step.

The report looks like this: –

And below this you’ll see the following: –

An you’ll also see this: –

And this:-

Now you’ll get a report on open source vulnerabilities in your builds 🙂



Azure Devops

In this series of blog posts I will cover Azure Devops, I’ll cover the following

And many more, check back regularly for more on the above.

Please ping me if you have any questions or want something covered which I haven’t mentioned thus far.



Azure DevOps – How to do a fully automated release (Part 3)

Ok so Part 1 covered how to do a manual build of a .NET Core Web App and now I’ll show how to do a manual deployment of the project.

Part 2 covered creating a manual release from the build in Part 1

In Part 3 I’ll cover the magic sauce that make it possible to set up continuous deployment so that when you commit your code its automagically built and deployed.


Automated Builds

  • Ok so start by going to Pipelines and then select Builds
  • Click on Edit to Edit the build we created in Part 1
  • Select Triggers and then click on Enable Continuous Integration and then click Save And Queue like so

 

Once you’ve saved check in a commit and the code will trigger the automated build.


Automated Deployments

  • Ok so start by going to Pipelines and then select Releases
  • Edit the release you had previously created in Part 2
  • Click the lightning icon on the Artifacts part of the release and then click to enable Continuous deployment trigger like so, click Save.

So now if you commit code, you’ll have an automated build and release pipeline using continuous integration and continuous deployment (CI / CD) – way to go!