About this site
Why
As already stated in the home page the goal of this site is aimed to provide a different format list of Microsoft 365 Apps versions, previously known as Office 365 already published by Microsoft on official documentation.
Why creating something already existing? Well, why not?
I guess that Microsoft 365 Apps releases official page is already comprehensive, but the format how information is presented is not enough usable as I'm expecting but that's my personal opinion.
How
So, I started thinking to create a website to present MS 365 Apps versions history in a different meaningful format, more usable and easy to search.
But given the reapid release cycle of the product, I've immediately realized that it would be not practical to keep up to date manually.
Then I've started searching on internet how to build a solution to scrap an HTML web page and specifically a table. By accident or by luck I stumbled across a Github repository named Data for Nerds of Chris Kibble that I need to send kudos and give credit for his original powershell script.
This guy did an excellent job in creating a powershell script that scraps the Microsoft 365 Apps release page and produce a JSON file.
Well, I had the script, I had only to figure out how I could run such script periodically and place the output content in a place where a web page can read and consume within the website itself
Well I'm not a web developer, neither a developer, I'm just a Service Engineer, therefore I've studied a solution that could be hosted on a cloud platform and with no excessive costs.
For my daily job, I'm used to make extensive use of Azure, the Microsoft cloud platform, that's the reason why I've started to look for a Azure services that could help me to implement my idea.
Day by day, during my spare time and at night, I've created piece by piece this website:
- Domains, for instance were still available, therefore I've started purchasing for few euros officeVersions.com and office365versions.com domains.
- Azure Static Web App are free and they include a SSL certificate, but at the cost of using static web pages. I started creating the initial web sites, assigning respective purchased domain names, and just a home page
- Static web page doesn't necessarily mean pure static HTML. Using web framework such as Bootstrap and JQuery is possible to create web pages that dynamically load content and render data from different data sources, including JSON files.
- Running a script on regular basis is something very common for an Azure Function with an event driven Timer trigger. In addition, the Azure Function developement supports several languages, such as C# and Powershell
- I've then adapted the original PS script to accomodate some personal requirements and I configured the Azure function to execute the script every N hours/minutes to grab the content of the MS 365 Apps release page and write to one or more JSON files.
- JSON files produced, in order to be rendered on web pages have to be persisted on a storage, therefore I've created an Azure blob storage account as repository
The diagram above depicts the solution implemented, that I'm going to explain:
- Azure StaticWeb App is hosting static web pages
- Web pages along with Azure Function code is mantained in a GitHub repository with a CI/CD pipeline
- The Azure Function at the center of the diagram, written in Powershell, is scheduled to run every 5 minutes.
- Every time Function runs, it grabs the content of Microsoft web page and creates a set of JSON files based on MS365 Apps channel.
- JSON files produced by the Azure Function are stored on Azure Blob Storage container, and everytime Azure Function runs, files get overwritten.
- Azure Statc Web App hosting static web pages includes and loads the JQuery DataTable framework, supposed to read the content of JSON file and render at runtime, when HTML web page get loaded