 Hey all, thanks very much for coming. So yeah, as I said, my name is Josh and this is Asita and we're here from the city of Burundara to talk about Azure DevOps for Drupal. So our municipality in Melbourne's east and like many other local governments in Australia have our public website Drupal 10 based and hosted on Acreo. We also have a Microsoft-based infrastructure with tools available for government organizations. So we look for opportunities to leverage the tools inherited from Microsoft and Atlastian to improve our development and deployment cycle of the website. So in this presentation today, I'll be taking through some of the introductions of the DevOps practices, processes and the benefits. I'll then pass over to Asita who go into more detail and present how to integrate Azure DevOps with Drupal development and deployments. From there we can connect the dots amongst the different tools in the platforms such as Azure, Acreo and Jira. We're planning to demo how the Azure DevOps webhooks, Jira automations, Acreo hooks can make their end-to-end integration and DevOps processes smoother. Also we'll be discussing some challenges along our journey from improvement at the city of Burundara and any other alternative methods you might use in a similar implementation. So currently I am the digital delivery lead at Burundara where I manage and prioritize our feature development, utilize agile practices and the conduit between our development and our digital experience team. Asita is the full-stack engineer for Drupal and our lead developer and maintains our Drupal website and our WordPress-based forms and comes from a multiple experience as a PHP and .NET developer. We first crossed paths at the city of Casey six years ago where we worked on and delivered multiple Drupal websites together and continued our professional journey. At Burundara we had the need to move away from our previous vendor and wanted to take on a lot of that responsibility in-house and do it ourselves. During this migration we had to consider our own continuous integration and continuous delivery and deployment to build our own CRCD. We'll talk more of the benefits later but our goal was to have a greater control and flexibility to choose the tools that we wanted and to work and interact more efficiently. Azure DevOps is a freely usable tool to build upon and without extra cost and internal improvements, it was there for us to utilize. While we have adapted and will constantly change our JIRA instance, we love JIRA and we're already used to the straightforward configuration. Further to that, our site was already on Acria so we needed a CRCD that will work with all three, Azure, JIRA and Acria. Here is a quick snapshot which I'm sure you have a bit of knowledge on already but our DevOps and CRCD sets out to continuously integrate and continuously deliver to streamline through the software development lifecycle. This process promotes greater communication between digital teams to deliver code changes more often and most importantly reliably. So some of the benefits we realized overall was a reduction in our deployment time, being able to see what stage of the development lifecycle each task and where each release is at. By having more direct control of our deployments means that we've been able to increase our delivery time to production from an 8 to 12 week turnaround down to about 4 to 6 weeks. While this improvement in quality in our Azure pipeline has given greater transparency for the developers, the integration to our JIRA instance has also helped the delivery team get live statuses. So during the planning and monitoring, this helps the hey, where is this at? Or is this in testing now or what environment is this in? Having introduced and tweak the use of our CRCD we have increased reliability and confidence. Even if errors are present, they are easily identified and are picked up early in the process in lower environments that are not customer facing. We briefly considered the manual approach in the short term but a slow glad we spent the time to automate. The quality checks that have been introduced can pick up if anything is failing or indeed when it has passed in the process. While our testing and UA team maturity is growing it has helped that everyone involved in our cross-functional team can transparently see where our development is at. From the development side and approvals of pull requests we don't need to waste time on manual steps and has reduced human error and potential mistakes. Now that this is picked up continuously we have further synced our automation to display messages in teams for that immediate feedback. So the overall benefits being more efficient and agile while decreasing bugs and failures means that great internal team optimisation and a better outcome for our customers. Now while there are many different infinitive symbols of the CRCD process here you can see the standard cycle across the multiple stages. The tools and platforms we are using at Burundar are specific to our Drupal website project. While some of these tools and platforms can become in your organisation you might need to use your own tools and platforms based on the requirements and experience of your project. We will talk to just some of the other alternatives later on. But for now let's do deep. So Hasitha will be talking through some of the challenges we face in the initial run-through and we will run us through a demo of Azure DevOps and JIRA. Okay, thanks Josh. Hi everyone. I'm Hasitha. As Josh mentioned, I'm the full stack developer in the city of Burundara for Drupal especially. So my job is digging a bit deeper. I'm sure you are here to see a little bit more technical side of how we did it and how we did the integration how smoothly it's working or things like that. So first of all a bit of challenges so everyone else and like all the projects we also had some challenges especially with our platforms and the stack. Because as Josh mentioned so we are a local government organisation so Microsoft Azure and Microsoft stack is kind of obvious tooling platform to us and it's free. So we had JIRA because we love JIRA for Confluence and other like program management and everything. And also we wanted to integrate Azure DevOps because we had that freely available for us in our local government with JIRA and with our other Drupal base resources and tooling. So the first task was like finding beta integration add-on or tool to integrate JIRA with Azure DevOps that was a challenge because if you check in JIRA in Marketplace there are many add-ons available but most of them like there is a cost in one end you won't get most of the features you are looking for. So for an example you might need end-to-end integration like you want to see everything reflected in JIRA what is happening on Azure DevOps site but you won't get everything. So most of the tools available or add-ons available are just for migration like if you want to migrate all the JIRA board items or tasks or issues to Azure DevOps board so that is what they are for but we found few tools and after a bit of research and everything considering the cost as well because when it comes to government cost is a very very high factor we have to consider and also so how to report back the DevOps release pipeline status into JIRA let the JIRA issues and JIRA site know so this has happened and these tickets got affected things like that so how do we do that and some of the add-ons are providing this functionality but the pipeline we had created already was Azure YAML pipeline if you know so there are two ways you can create pipelines in Azure DevOps one is the classic editor so you can use kind of a visual editor you can add the steps you can configure them so that is one way of doing that and the other way is like the YAML file so you write down everything in a YAML file you draw palace you know YAML now more than anyone I guess so then that YAML file will take place when it comes to Azure DevOps so when running the pipeline tasks and everything so it's not visually like available in the UI it is just code based but the problem is if you use the YAML file method YAML pipeline we can't report back this pipeline status or release pipeline status back into JIRA so because of that we had to build the whole thing again in classic method, classic pipeline the other thing is we had a one YAML pipeline that was a build pipeline if you know Azure DevOps there are two different pipelines one is build pipeline the other one is release pipeline so build is responsible for testing like if you are doing linting and code and everything to check the code standards and everything so build pipeline is responsible for basically testing or building your code base every time when someone merge any pull request into your code repository or main branch so the release pipeline is to deploy or ship your artifacts into whatever the hosting platform mainly so we didn't have a release pipeline so we had to create a new release pipeline in the classic method to overcome this challenge and also capturing the development environment so that was because we have four different environments so one is obviously the production but we have other three non-prod environments in our Acquia hosting environment so alpha, beta then only it is going to production so because of that we had to capture this environment exactly so which environment we have deployed this code into and report that back to Jira as well so the other thing is capturing the end of deployment so for an example once the deployment finished from Azure DevOps end obviously it will just report back to Jira ok deployment was successful but that's not the end of the deployment because we just shipped our artifacts into Acquia now Acquia is running a separate hooks to if you are using Acquia there are some cloud hooks and things in Acquia they will be running to clear cache import configurations sync files and things like that right so those are the Drupal stuff we do after each and every deployment so after those ran and if they were successful we needed the final confirmation ok this is now successfully deployed into Acquia environment as well so we had to build a kind of a new integration for that one so these were the challenges we faced when we were doing this integration so let's go into details maybe so this is a very clumsy diagram I know most of you can't see don't worry I just wanted to show you main components so we have Azure DevOps project in this blue rectangle and we have Acquia cloud application in this blue rectangle and above we have Jira project and all the web hooks and inside the Jira project so in Azure DevOps also we have some web hooks and also in Acquia cloud we have some Acquia cloud hooks and things like that so these three pieces we connected each other with these web hooks and different add-ons we selected to get this integration done so let's go into details I will just stop the presentation slide show from here and go into the browser so you will see how we have done things ok so bit of introduction about Azure DevOps I think if anyone is not familiar about Azure DevOps so you can see basically what's available in Azure DevOps stack so you can see in the beginning you have overview, summary, dashboards wiki kind of thing wiki is kind of confluence if you are using Jira dashboard is a pretty dashboard you can put some widgets and see the status of the releases or builds or whatever and then you have boards at the second boards is exactly Jira so if you are using if you don't want to use Jira if you want to use just the Azure DevOps for everything you can use Azure Boards DevOps Boards and you can have Kanban project there you have all the tasks you can create all the tasks the integration will be seamless as well because you don't need separate add-ons and things like that to communicate back to Jira so we are not using Azure Boards unfortunately so we love Jira still so because of that we went through all this hassle and the repos so if you are using GitLab GitHub, Bitbucket that's fine but there is a repository feature in Azure DevOps as well so you can use that we are using that one at the moment and then as the next one you have the pipelines so inside the pipelines I will show you in a minute and then you can have test plans as well as you can publish artifacts as well so there are heaps of things you can do but some of the things are coming with premium price as well I think based on your license level on Microsoft they will change so this is our project as you can see many of them got skipped like invisible because we are not using them so I have made it hidden so we are using only dashboard, wiki repos and pipeline in our project so this is basically the summary page so it is taking whatever the readme file from the main repository we can set it up and this is the dashboard we have created for our project so you can see the releases, different releases into different stages so it is automatically captured in the stage we have released into and the release number and all that and the deployment status in each environment of Equia but you can see there are two blank widgets as well that is because of a known issue in Azure DevOps at the moment there is no way we can capture separate tag pattern into this widget so because we are deploying a specific tag into beta environment another specific pattern of tag into production environment we can't capture that one but we are deploying normally the branch into the daily environment that is possible to capture and we are deploying the master branch into alpha environment so that is possible to capture unfortunately yeah there are feature requests related to that one but it is not available yet and this is the wiki I am not going into details so you can do like confluence this is the repository like GitHub, Bitbucket and everything and this is pipeline so this is the build pipeline as you can see and this is our build pipeline and you can see all the failures and successful builds here and you have here the pipeline steps and all that so we are running different steps inside this one different commands so I am not going into detail going into detail with the time into the commands but if you are interested in implementing this Azure DevOps or integrating Azure DevOps with your Drupal site organization we can help definitely we will pass our contacts to you so each and every steps responsible for building and testing and preparing artifacts for the release and you can see we are using some scripts as well inside some folders in the repository for building and testing of course and also this is the release pipeline so release pipeline you can see again different environments we are deploying into so each one of those have different steps again we are getting the artifact we build from the previous build pipeline and then we extract the files and push them into Acquia repository so then Acquia is automatically starting the process deploying that TagGo branch into that environment so there are some scripts related to that deployment as well not going into details again but here deploying commands we are using some Robo scripts as well for deploying commands and this is Jira so you can see in the Jira board we have built more details like development and all that so it's showing environment we have deployed into Dewey environment this ticket and things like that so we have used this addon to integrate Jira and Azure so this addon is from a company called MoveWorkForward there is a cost of course involved but it's not that significant I guess and we are using so it's automatically adding these hooks into Azure DevOps to report all the all the stages like one spool request created or one spool request merged or one spool request updated or anything so it's reporting back to Jira so we are using this addon as well this free addon created by Microsoft Azure DevOps this for the releases and if you go inside a ticket you can see we can see the branch responsible for this ticket and the commits for commits and pool requests and number of builds and development or deployment stages so in code there is a separate tab called old in Jira so you can see all the pool request and who approved them who raised them and things like that so someone like product owner doesn't need to go into the Azure DevOps to see all this stuff and there is another detailed view in deployment tab of Jira so you can see like a gambit chart kind of thing so each and every issue in which stages it was deployed into different different environments so you can create releases in Jira and you can add those issues into these releases and then it will automatically do like this so you can see this version we have already released this version is still in progress unreleased and things like that and there are some hooks as well like automations in Jira so we are using those automations as well mostly to report the AQUIA deployment status back into Jira using one of these automations so what we are doing is we are just calling this Jira URL from AQUIA once the AQUIA deployment finished so it will report back the status of the AQUIA deployment and we will update it on this end there are some scripts related to that as well so this is that script on the AQUIA cloud hook and there are some other things we can do but yeah Josh will take over from here it's a quick demo I know with the time we got but if you are interested of implementing this one or getting some help with your implementation or deployment we are here to help so just show it over to you yeah we had a backup plan of videos if that didn't work so that's good great so yeah this is a continuous improvement for us and we're still working through this so we've demoed the initial phase and are still unpacking what we have to come and some next steps in terms of cost there is that small annual fee for the Jira add-on Azure DevOps for Jira but it isn't significant but we could try and build our own or you could as well we have noticed that there have been some limitations where the add-on has not triggered some of the events in the tasks in Jira so we've tried to combat this by making some rules in Jira but the add-on is not supporting some of these events you can get this completely like as I said and use Azure boards and move away from Jira but I'm still waiting for him or someone else to try and convince me to do that so in our case Jira isn't doing away anytime soon and we're going to try and play with some of these rules and overcome the restrictions of the current add-on so that way if the development passes through a branch it's created and it moves that ticket from in progress and if it's committed it moves to UAT and then if the build fails then it's in progress so while the initial phase of our test automation is still underway for code standards and LinkedIn we're just getting set up and it's not linking back to our pipeline just yet but getting even more immediate feedback for the developers means the investment in test automations will be well worthwhile this will help reduce the reliance on a dedicated test resource and manual regression testing for the whole team ultimately this will reduce our time to market if there's less time spent on manual regression testing and there's no need to manually move tickets in Jira we can continue our efficiency so as promised before we wrap up some alternate tools so earlier we worked through some of the ones that we're using but there are a few alternatives out in the market this week on screen could be something for your reference and to playback afterwards in the video as well so obviously we're using Jira and Azure DevOps but there are many different project management tools out there with more simple or advanced planning similar with managing and building releases currently we're using Azure DevOps but there are several others out there just yesterday we recently saw a demo of Acrea Code Studio that seems to have a nice tool chain and some good automations already built in as well on the test in front we're just getting started using Cyprus for test automation and we're going to use that for building out some more test cases and finally in terms of operating and monitoring we're currently using things like site improve and Google Analytics so thank you very much please feel free to contact myself if you have any questions we're happy to share with other local government agencies or for anyone else who's looking to implement a similar approach so thanks again thank you for your presentation it was really interesting I understand that and I didn't know that in governments there's a lot of money which is which is really good you get a lot of good stuff for the rest of us if you had to pay for Azure how would your presentation have changed I know it's hypothetical but even though you're getting Azure for free you still decided to ditch some of the features and go for JIRA if you had to pay a lot of money for Azure would you maybe not have used it at all Amazon or use more Acquia stuff or would the balance have changed so the answer to that is because I'm using Azure DevOps for one of my personal projects so the thing is I'm paying only $7 $0.95 so whatever for the month for the one email account so I have one Microsoft 365 account and it's allowing me to use Azure DevOps up to 5 users so I can invite external users up to 5 but for large organizations you can't do that obviously but for small scale you can still use Azure for like almost for a very minimal price you can still use but like test plans you won't get it with that price you have to have the upper level but still all the basic features we are using at the moment in our company like city of Burundara you can use it with that one Microsoft email account so yeah that's pretty good I think yeah for your for your deployment you have like the site, the serving local file and your uploaded files and when you do your deployment how do you deploy with that leaving those you mean deleting the files in the server and yes I guess you put all the files put the new trade in and then put your serving local file and then your media uploaded files back again yeah not really it's because we are using the Acquia repository as well so what we do is we just ship our code from Azure DevOps to Acquia repository so what will happen is once the code get into Acquia repository the cloud hooks will start running because if it is the develop branch we have pushed the changes with so it will start the deployment from Acquia repository to Acquia cloud environment so that will take care of that one it's not deleting all the files and it's not resetting everything it's just like you have the repository with you so it's only the changes are affecting yeah so you are using Azure DevOps for your personal project as well what are the main differences or benefits that you found using that over okay Bob nothing much really but especially when we if you are using GitHub you can't you can't make the repository private without paying so it has to be public because my personal project is a .NET based project especially and because of that it's easier to deal with Azure DevOps because we are deploying also into Azure cloud so that is like making sense all together but for this one as well like if you are using another repository option we have to pay for that one but this one is coming free with that so we are not exposing the repository as a public repository because yeah of the government policies and all that so yeah that's why we chose Azure DevOps repo