# Creating Automated Microsoft Bicep Application Infrastructure from GitHub in the Azure Cloud
## 2 Background and Related Work
### Role of GitHub Actions in CI/CD
\begin{table}
\begin{tabular}{p{113.8 pt} p{113.8 pt} p{113.8 pt} p{113.8 pt} p{113.8 pt}} \hline \hline
**Feature/Tool** & **Bicep** & **Terraform** & **Pulumi** & **AWS CloudFormation** \\ \hline
**Type** & Declarative & Declarative (HCL) &
\begin{tabular}{c} Imperative/Declarative \\ (via code) \\ \end{tabular} & Declarative \\ \hline
**Cloud Provider** & Azure-only &
\begin{tabular}{c} Multi-cloud (Azure, \\ AWS, GCP) \\ \end{tabular} & Multi-cloud & AWS-only \\ \hline
**Language/Syntax** & Domain-specific Bicep language & \
\begin{tabular}{c} HashCorp \\ Configuration \\ Language (HCL) \\ \end{tabular} &
\begin{tabular}{c} General-purpose \\ languages (Python, \\ TypeScript) \\ \end{tabular} & JSON or YAML \\ \hline
**Ease of Use** & \begin{tabular}{c} High (simple syntax, \\ modularity) \\ \end{tabular} & \begin{tabular}{c} Moderate (requires \\ HCL familiarity) \\ \end{tabular} & \
\begin{tabular}{c} Depends on \\ programming \\ experience \\ \end{tabular} &
\begin{tabular}{c} Moderate to low \\ (verbose, complex for \\ large deployments) \\ \end{tabular} \\ \hline
**Integration with Azure** & \begin{tabular}{c} Native support; rapid \\ feature updates \\ \end{tabular} & \
\begin{tabular}{c} Slower adoption of new \\ Azure features \\ \end{tabular} &
\begin{tabular}{c} Depends on provider \\ APIs \\ \end{tabular} & N/A \\ \hline
**Integration with AWS** & None & Strong & Strong & Native \\ \hline
**Modularity and Reusability** & Strong support for modules & Strong module ecosystem & \
\begin{tabular}{c} High (via \\ programming \\ constructs and \\ libraries) \\ \end{tabular} &
\begin{tabular}{c} Moderate (nested \\ stacks supported) \\ \end{tabular} \\ \hline
**State Management** & \
\begin{tabular}{c} Handled by Azure \\ Resource Manager \\ \end{tabular} &
\begin{tabular}{c} Requires backend \\ configuration \\ \end{tabular} & Abstracted or optional & Managed internally \\ \hline
**Learning Curve** & \
\begin{tabular}{c} Low (especially for \\ Azure teams) \\ \end{tabular} & Moderate &
\begin{tabular}{c} Higher (for \\ non-developers) \\ \end{tabular} & Moderate to high \\ \hline
**Complex Logic Support** & Limited & Limited & Strong (due to the use of full programming languages) & Limited \\ \hline
**Feature Gaps/Limitations** & Azure-only; no multi-cloud & \begin{tabular}{c} Potential delays in \\ support for new Azure features \\ \end{tabular} & \
\begin{tabular}{c} Runtime environment \\ required; complexity in \\ orchestration \\ \end{tabular} &
\begin{tabular}{c} Verbose; complex \\ YAML/JSON syntax \\ \end{tabular} \\ \hline
**Ideal Use Case** & Azure-centric deployments & \begin{tabular}{c} Multi-cloud or hybrid \\ cloud strategies \\ \end{tabular} & \
\begin{tabular}{c} Developer-focused \\ teams building \\ reusable components \\ \end{tabular} &
\begin{tabular}{c} AWS-centric, \\ large-scale \\ infrastructure \\ \end{tabular} \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Comparative overview of key characteristics of infrastructure-as-code tools for cloud provisioning. Compared with Azure DevOps, another Microsoft offering, GitHub Actions is generally simpler and more lightweight, favoring ease of use and Git-native workflows. Azure DevOps offers a comprehensive suite of features, including work item tracking, test plans, artifacts, and advanced pipeline configurations, making it well suited for large enterprises with more complex governance requirements. For many teams, GitHub Actions offers sufficient capabilities without the overhead of managing separate tools. Jenkins, a mature, self-hosted automation server, has long been a staple of the CI/CD landscape. It is renowned for its flexibility and massive plugin ecosystem, supporting virtually any build and deployment scenario. Jenkins requires teams to manage their own infrastructure, updates, and security configurations, which can become burdensome over time. In contrast, GitHub Actions is fully managed, reducing operational effort while offering built-in security features.