Unverified Commit 133b4cf2 authored by Paul Yu's avatar Paul Yu Committed by GitHub

Optionally install Azure Bicep as part of azure-cli feature (#305)

* Adding azure-cli bicep installer to correctly install on arm64 containers

* Adding a few updates following @joshspicer's review.
parent c4648ab9
{
"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": {
......
......@@ -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/*
......
#!/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
{
"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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment