Using the new Bicep Deploy GitHub Action
Stephen Tulp
April 7, 2025
3 minutes to read
Introduction
When it comes to deploying Azure resources with Bicep via GitHub Actions, there are a couple of ways this can be achieved today.
- ARM Deploy task - This can be used for both Azure Resource Manager (ARM) and Bicep templates as a dedicated GitHub Action.
- Azure CLI - Enables the use of the Azure CLI within a GitHub Action to do the deployment at the identified scope.
az deployment [group/sub/mg/tenant] create
- Azure PowerShell - Enable the use of the Azure PowerShell within a GitHub Action.
new-az[Tenant/ManagementGroup/ResourceGroup]Deployment
Most of the accelerators and solutions that my team has created are currently focused on using the Azure CLI, this is mainly because these accelerators have CI/CD workflows for both GitHub and Azure DevOps to be as consistent as possible.
What is the Bicep Deploy Github Action?
If you visit the ARM Deploy task GitHub repo, you can see the following announcement.
🚀 New Release Alert! We are excited to announce a new implementation of our GitHub Action for Azure Resource Manager (ARM) deployments! To improve the deployment and management of Azure resources, we’ve launched azure/bicep-deploy, which supports both Bicep and ARM templates, along with first-party Deployment Stacks support, making it easier than ever to manage your infrastructure directly from GitHub workflows.
⚠️ Deprecation Notice: This repository and action (azure/arm-deploy) will be deprecated in the future. We recommend switching to azure/bicep-deploy for ongoing support and new features.
The new Bicep Deploy Action enables automating the deployment of Azure resources using both ARM or Bicep templates within GitHub workflows.
The new GitHub action provides, two (2) options for deployment;
- Deployment using a traditional Azure deployment approach
- Validate, What-If and Create steps.
- Deployments using Deployment Stacks
- Validate, Create, Delete steps.
🆕 Deployment Stacks is the recommended approach moving forward and I will cover this in a separate blog post to go through this in more detail.
Traditional Azure Deployment Example
Let’s have a look at the three (3) areas for a traditional Azure deployment.

- The
Validate
step looks at whether the template is valid at the intended scope of the deployment (Tenant, Management Group, Subscription, Resource Group) - The
What-If
step performs a What-If to compare the deployment to what is already deployed and gives an output highlighting resources that will beCreated
,Deleted
,Deployed
,Ignored
,Modified
,NoChange
or areUnsupported
- The
Create
step performs that actual deployment into Azure at the intended scope.
Each of the three (3) steps are shown below, these form part of the caller workflow.
Validate
What-If
Create
A link to the Release GitHub Action and the Caller workflow template outline how these can be used as a complete solution.
Conclusion
Having a new dedicated GitHub Action for Bicep deployments that addresses traditional and Deployment Stack deployment is great. I am keen to see how the action evolves and takes into consideration some improvements and ideas that have been raised in the repo.