aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/azure-cli/devcontainer-feature.json7
-rwxr-xr-xsrc/azure-cli/install.sh25
-rw-r--r--test/azure-cli/install_bicep.sh16
-rw-r--r--test/azure-cli/scenarios.json12
4 files changed, 58 insertions, 2 deletions
diff --git a/src/azure-cli/devcontainer-feature.json b/src/azure-cli/devcontainer-feature.json
index 012e287..a2ba452 100644
--- a/src/azure-cli/devcontainer-feature.json
+++ b/src/azure-cli/devcontainer-feature.json
@@ -1,6 +1,6 @@
{
"id": "azure-cli",
- "version": "1.0.6",
+ "version": "1.0.7",
"name": "Azure CLI",
"documentationURL": "https://github.com/devcontainers/features/tree/main/src/azure-cli",
"description": "Installs the Azure CLI along with needed dependencies. Useful for base Dockerfiles that often are missing required install dependencies like gpg.",
@@ -17,6 +17,11 @@
"type": "string",
"default": "",
"description": "Optional comma separated list of Azure CLI extensions to install in profile."
+ },
+ "installBicep": {
+ "type": "boolean",
+ "description": "Optionally install Azure Bicep",
+ "default": false
}
},
"customizations": {
diff --git a/src/azure-cli/install.sh b/src/azure-cli/install.sh
index 99b4af5..31bc6d8 100755
--- a/src/azure-cli/install.sh
+++ b/src/azure-cli/install.sh
@@ -14,6 +14,7 @@ rm -rf /var/lib/apt/lists/*
AZ_VERSION=${VERSION:-"latest"}
AZ_EXTENSIONS=${EXTENSIONS}
+AZ_INSTALLBICEP=${INSTALLBICEP:-false}
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
AZCLI_ARCHIVE_ARCHITECTURES="amd64"
@@ -197,6 +198,30 @@ if [ ${#AZ_EXTENSIONS[@]} -gt 0 ]; then
done
fi
+if [ "${AZ_INSTALLBICEP}" = "true" ]; then
+ # Install dependencies
+ check_packages apt-transport-https curl
+
+ # Properly install Azure Bicep based on current architecture
+ # The `az bicep install` command installs the linux-x64 binary even on arm64 devcontainers
+ # The `az bicep install --target-platform` could be a solution; however, linux-arm64 is not an allowed value for this argument yet
+ # Manually installing Bicep and moving to the appropriate directory where az expects it to be
+
+ if [ "${architecture}" = "arm64" ]; then
+ curl -Lo bicep https://github.com/Azure/bicep/releases/latest/download/bicep-linux-arm64
+ else
+ curl -Lo bicep https://github.com/Azure/bicep/releases/latest/download/bicep-linux-x64
+ fi
+
+ chmod +x ./bicep
+ mv ./bicep /usr/local/bin/bicep
+
+ # Add a symlink so bicep can be accessed as a standalone executable or as part of az
+ mkdir -p ${_REMOTE_USER_HOME}/.azure/bin
+ chown -hR ${_REMOTE_USER}:${_REMOTE_USER} ${_REMOTE_USER_HOME}/.azure
+ ln -s /usr/local/bin/bicep ${_REMOTE_USER_HOME}/.azure/bin/bicep
+fi
+
# Clean up
rm -rf /var/lib/apt/lists/*
diff --git a/test/azure-cli/install_bicep.sh b/test/azure-cli/install_bicep.sh
new file mode 100644
index 0000000..955507f
--- /dev/null
+++ b/test/azure-cli/install_bicep.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+
+# Import test library for `check` command
+source dev-container-features-test-lib
+
+# Check to make sure the user is vscode
+check "user is vscode" whoami | grep vscode
+
+# Bicep-specific tests
+check "bicep" bicep --version
+check "az bicep" az bicep version
+
+# Report result
+reportResults \ No newline at end of file
diff --git a/test/azure-cli/scenarios.json b/test/azure-cli/scenarios.json
index aa21f72..cc1fd75 100644
--- a/test/azure-cli/scenarios.json
+++ b/test/azure-cli/scenarios.json
@@ -1,6 +1,6 @@
{
"install_extensions": {
- "image": "ubuntu:focal",
+ "image": "mcr.microsoft.com/devcontainers/base:jammy",
"user": "vscode",
"features": {
"azure-cli": {
@@ -8,5 +8,15 @@
"extensions": "aks-preview,amg,containerapp"
}
}
+ },
+ "install_bicep": {
+ "image": "mcr.microsoft.com/devcontainers/base:jammy",
+ "user": "vscode",
+ "features": {
+ "azure-cli": {
+ "version": "latest",
+ "installBicep": true
+ }
+ }
}
} \ No newline at end of file