CI/CD
-
Automatic AppSource Submission of Business Central apps
A request from many partners have been to be able to automatically submit apps to AppSource Validation from their DevOps setup. The Ingestion API for Partner Center supports all offer types in AppSource and can be used to submit updates to Business Central apps to AppSource. Unfortunately, the API comes with very little documentation and the sparse documentation doesn’t contain any information about Business Central. If you however want to investigate things by yourself, the primary docs are: https://docs.microsoft.com/en-us/azure/marketplace/azure-app-apis –...
-
Working with AL-Go for GitHub preview
If you want to have the latest updates of AL-Go for GitHub, you can update your repository and use https://github.com/microsoft/al-go-pte@preview or https://github.com/microsoft/al-go-appsource@preview as your template repository. This means that you will get new updates before they are released. It also means that the actions you are using are instantly updated when we deploy a new version for preview and thus might be out of sync with your workflows. One example of this is the preview, which was released yesterday (June...
-
Secrets in AL-Go for GitHub
This blog post will not reveal any secrets in AL-Go for GitHub:-) Instead, it will explain ways for you to store secrets, which are used for AL-Go for GitHub. In almost every DevOps setup, you will have to store some keys, passwords, tokens or like. In GitHub, these are called secrets and AL-Go will look for a set of secrets by their name. This blog post will also touch upon how you can use GitHub organizations and environments with your...
-
Deployment strategies and AL-Go for GitHub
When you are done developing your app, it needs to be deployed to your customers if it is a PTE or to AppSource if it is an AppSource app. Currently we don’t have any automated way of publishing your app to AppSource – that is something we are working on and some day in the future, when it becomes possible, you will get a workflow in AL-Go for GitHub which handles this automatically. This blog post will talk about PTEs,...
-
Branching strategies for your AL-Go for GitHub repo
If you teach yourself to follow a fairly simple set of rules, you will see that the health of your project will increase dramatically, and you will be in a better place with your project development. So, I will at the ripe age of 56 bestow upon you these 5 rules, which can be applied to any project, using any DevOps setup. In the following I will explain how to implement these rules using AL-Go for GitHub: Use Pull Requests...
-
Preview of future AL-Go for GitHub functionality
Like everything else these days, AL-Go for GitHub now also is available in a preview version, which you can install/apply and remove as you like. This allows you to get advantage of a bugfix or new functionality faster. NOTE that when using the AL-Go preview version, you will have to update the AL-Go system files when you are told to, changes to the AL-Go actions might cause your version of the workflows to fail if not updated. The template repository...
-
Structuring your AL-Go for GitHub repositories
When developing apps for Business Central, you very frequently will have more than one app. You might split one customer specific app into multiple smaller apps or you might have a common app, which contains common functionality for all your customer specific or AppSource apps. This blog post describes the thinking behind AL-Go for GitHub and how we recommend you setup your GitHub repository structure and why… High Level Use the shipping vehicle to determine the repository/project structure. On a...
-
Migrating to AL-Go for GitHub
As explained in the first blog post about AL-Go for GitHub the next post would be all about how to migrate your repository to AL-Go for GitHub. Whether you have a setup based on the first CI/CD Hands-On-Lab or you have the latest generation, it should be fairly easy to migrate to AL-Go and get all the benefits with that, but it is a manual process. The following scenarios are described in this post: From a CI/CD HOL based repo...
-
AL-Go for GitHub
It has been a while since my last blog post and the reason behind this is quite simple: I have been busy. Busy creating AL-Go for GitHub. AL-Go for GitHub is plug-and-play DevOps for Business Central PTEs or AppSource apps on GitHub. A tool, which does NOT require you to modify PowerShell scripts, change .yaml workflows or pipelines, but still allows you to setup and maintain full DevOps for your Business Central projects with a click of a button. AL-Go...
-
Managing secrets in your scripts
Most people have tried it. You are writing a script, which connects to a service using a user name and a password or you are using a Shared Access Service token to access insider builds from Microsoft and you just put the “secret” values right there in your source code. After all – it is only you who can access the data on your computer right? and you will of course remember to mask out these secrets if you ever...
-
Running tests in Business Central Online Sandbox environments
For quite some time, it has been possible to run automated tests in Docker using the Run-TestsInBcContainer function and it is my strong belief that this is used by a lot of partners today. Since 17.2, the Test Runner is available in Online Business Central Sandbox environments for installation from AppSource. From Extension Marketplace, you can install the Test Runner, open page 130451 and run your test manually. With BcContainerHelper 2.0.4 or later, you can also run tests in online...
-
Publishing apps to a Business Central Online Environment
There are 2 kinds of apps: AppSource Apps and Per Tenant Extensions (PTEs). These apps can be installed in two kinds of environments: Sandbox and Production. In Production, AppSource Apps are installed in the global scope and Per Tenant Extensions are installed in the Tenant Scope. In Sandbox environments you can also install apps to the development scope (like what VS Code does). This blog post will describe how you can use BcContainerHelper 2.0.2 to install apps in any of...
-
BcContainerHelper version 2.0.1
Version 2.0.1 of BcContainerHelper was shipped with a number of very exciting new featuers. This blog post will list the features and I will have to document them elsewhere. Run-AlPipeline and Compile-AppInBcContainer with -failOn ‘error’ will now mark a build as succeeded with Warnings if there are warnings in the build. New-BcContainer with -FilesOnly will create a container with no service tier, no sql database, no IIS, just all the files from a normal docker container copied to a container...
-
How to use Run-AlValidation
When releasing the first version of Run-AlValidation in BcContainerHelper, i did a quick blog post about the function here. This blog post serves to explain some common scenarios of how to run the function. The blog post will also explain the parameters of Run-AlValidation a bit more in depth, for people to have a good chance of using the function before submitting for AppSource Validation. Note: The parameters and the functionality described in this blog post requires BcContainerHelper 1.0.19 or...
-
TimeStampServer – you had one job!
The important part of this blog post: Please make sure to upgrade to BcContainerHelper 1.0.18 or reconfigfure the timestampServer in your existing version. December 30th 2020 we got a number of apps for validation failing due to a wrong timestamp signature. Some partners discovered this before submitting and filed an issue on github here, complaining about this error: “The timestamp signature and/or certificate could not be verified or is malformed.“ I was enjoying a nice walk in the forest with...
-
Run-AlValidation and Run-AlCops
On December 1st, I co-hosted a webinar about how people can make sure that their app passes AppSource Validation. Until now, I have always been preaching that people should run CI/CD and include AppSourceCop validation in their CI/CD pipeline, which is supported in the Run-AlPipeline function. But…, as I prepared for the session, it became evident that it would be really helpful to have a function, which basically does exactly the same as our validation pipeline. Run-AlValidation is the closest...
-
Using GitHub for DevOps
For the last 2 years we have had the Hands On Lab (https://aka.ms/cicdhol) in a few iterations using Azure DevOps as the platform. Latest revision was published a few weeks ago. There are however multiple platforms for DevOps out there and I wanted to investigate the functionality of Github, which also is part of the Microsoft family and probably the biggest provider of devops services to developers in the world. Azure DevOps vs. GitHub This blog post is not going...
-
Run-AlPipeline
WARNING: Very boring long blog post ahead… Run-AlPipeline is a new function in BcContainerHelper. It has been in preview for a number of releases while being worked on, and a number of partners have already tried to use it. My apologies for changing things under your feet, but to my defense – I did write that the function was in preview. With version 1.0.8 of BcContainerHelper, Run-AlPipeline is ready for real-life usage… (I think) Goal The goal of this function...
-
One of these days…
Many years ago, I heard a joke: 3 people (a biologist, a mathematician and a developer) were in Africa on a Safari. They drive by a blue elephant. The biologist shouts out: “Look, there is a BLUE elephant.”. The mathematician states: “Right you are, there is ONE blue elephant”. The developer slaps his palm against his forehead and says: “Damn, there are blue elephants…“ As developers we often make assumptions and when we see these assumptions no longer being true,...
-
The Hello World CI/CD sample
Update 2021/2/10: BcContainerHelper has replaced NavContainerHelper. This blog post still reference NavContainerHelper, which is outdated. Quite a few partners have build their CI/CD pipelines based on the HelloWorld CI/CD sample repository here: https://dev.azure.com/businesscentralapps/HelloWorld (the one used in the Hands On Lab – http://aka.ms/cicdhol). I have just finished the upgrade of this repository to use artifacts instead of docker images. This blog post describes the changes done. Settings.json https://dev.azure.com/businesscentralapps/HelloWorld/_git/HelloWorld?path=%2Fscripts%2Fsettings.json Settings.json was changed to include artifacts instead of container images. Also I...
-
CI/CD and artifacts
Update 2021/2/10: BcContainerHelper has replaced NavContainerHelper. This blog post still reference NavContainerHelper, which is outdated. Only a few days have gone since releasing information about how to run Business Central in docker using artifacts and already a lot of people have tried this out and a lot of people are looking into changing their CI/CD pipelines to use artifacts. On premises / Specific version If your pipeline is running using an om-premises build or using a specific version of NAV...
-
Ready To Go Office Hours, 2020-02-04
Update 2021/2/10: Microsoft stopped creating images for Docker in the summer of 2020. We now publish artifacts, which can be used to spin up containers and BcContainerHelper has replaced NavContainerHelper. This blog post reflects the old way of using NAV/BC on Docker and references NavContainerHelper, which is outdated. Yesterday, I had the pleasure of co-hosting the Office Hours on the Ready To Go Program with Peter Borring and Dmitry Chadayev. If you are unfamiliar with the Ready To Go program,...
-
Weekend cleanup… – done
Update 2021/2/10: Microsoft stopped creating images for Docker in the summer of 2020. We now publish artifacts, which can be used to spin up containers and BcContainerHelper has replaced NavContainerHelper. This blog post reflects the old way of using NAV/BC on Docker and references NavContainerHelper, which is outdated. Update: Weekend cleanup is done and the latest daily builds from master (next major) and 15.x (next minor) are updated. I have also updated the number below from 45 days to 7...
-
Running Tests In Containers
Update 2021/2/10: Microsoft stopped creating images for Docker in the summer of 2020. We now publish artifacts, which can be used to spin up containers and BcContainerHelper has replaced NavContainerHelper. This blog post reflects the old way of using NAV/BC on Docker and references NavContainerHelper, which is outdated. Running automated tests is an essential part of any CI/CD strategy. For Business Central, we have been able to use containers and the function Run-TestsInNavContainer in the NavContainerHelper PowerShell module as described...
-
ContainerHelper 0.6.4.1
Update 2021/2/10: Microsoft stopped creating images for Docker in the summer of 2020. We now publish artifacts, which can be used to spin up containers and BcContainerHelper has replaced NavContainerHelper. This blog post reflects the old way of using NAV/BC on Docker and references NavContainerHelper, which is outdated. Now and then, I decide to blog about a version of NavContainerHelper. The version shipped today (0.6.4.1) is one of these. What’s new Backup/Restore databases in containers Speed up repetitive container generation...
-
NAV and Business Central Docker images moved to Microsoft Container Registry…
Update 2021/2/10: Microsoft stopped creating images for Docker in the summer of 2020. We now publish artifacts, which can be used to spin up containers and BcContainerHelper has replaced NavContainerHelper. This blog post reflects the old way of using NAV/BC on Docker and references NavContainerHelper, which is outdated. If you are using public Microsoft Dynamics NAV or Microsoft Dynamics 365 Business Central on Docker, this blog post contains important information. First of all, I am sorry that I didn’t publish...
-
Developing Business Central Extensions (part 5) – YAML
Update 2021/2/10: Microsoft stopped creating images for Docker in the summer of 2020. We now publish artifacts, which can be used to spin up containers and BcContainerHelper has replaced NavContainerHelper. This blog post reflects the old way of using NAV/BC on Docker and references NavContainerHelper, which is outdated. This is part 5 of a blog post series. Part 1 contains all the prerequisites, part 2 is about cloning the project and get your sandbox environment up running, part 3 is...
-
Developing Business Central Extensions (part 4) – Branch Policies
Update 2021/2/10: Microsoft stopped creating images for Docker in the summer of 2020. We now publish artifacts, which can be used to spin up containers and BcContainerHelper has replaced NavContainerHelper. This blog post reflects the old way of using NAV/BC on Docker and references NavContainerHelper, which is outdated. This is part 4 of a blog post series. Part 1 contains all the prerequisites, part 2 is about cloning the project and get your sandbox environment up running and part 3 is...
-
Developing Business Central Extensions (part 3) – Build Pipeline
Update 2021/2/10: Microsoft stopped creating images for Docker in the summer of 2020. We now publish artifacts, which can be used to spin up containers and BcContainerHelper has replaced NavContainerHelper. This blog post reflects the old way of using NAV/BC on Docker and references NavContainerHelper, which is outdated. If you haven’t read part 1 and part 2, you should do so before continuing here. Part 1 contains all the prerequisites and part 2 is about cloning the project and get your sandbox...
-
Developing Business Central Extensions (part 2) – Repository/Environment
Update 2021/2/10: Microsoft stopped creating images for Docker in the summer of 2020. We now publish artifacts, which can be used to spin up containers and BcContainerHelper has replaced NavContainerHelper. This blog post reflects the old way of using NAV/BC on Docker and references NavContainerHelper, which is outdated. If you haven’t read part 1, you should do so before continuing here. Part 1 contains all the prerequisites you need in order to continue with this post. Create your organization and...
-
Developing Business Central Extensions (part 1) – Prerequisites
Update 2021/2/10: Microsoft stopped creating images for Docker in the summer of 2020. We now publish artifacts, which can be used to spin up containers and BcContainerHelper has replaced NavContainerHelper. This blog post reflects the old way of using NAV/BC on Docker and references NavContainerHelper, which is outdated. A professional development environment When developing customizations for Microsoft Dynamics NAV, we have been used to have object modifications and source code stored in the database. A lot of partners have setup...



















