diff options
author | Paul Yu <paul.d.yu@gmail.com> | 2022-11-23 23:18:22 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-23 23:18:22 +0300 |
commit | 133b4cf23c6e4d6679940a8806f76877790c7f45 (patch) | |
tree | 017c6027e84089f6f99e862dd9c7bc9858e9b3a2 | |
parent | c4648ab98cdeeb520e7e629c5db4a471ec802954 (diff) |
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.
-rw-r--r-- | src/azure-cli/devcontainer-feature.json | 7 | ||||
-rwxr-xr-x | src/azure-cli/install.sh | 25 | ||||
-rw-r--r-- | test/azure-cli/install_bicep.sh | 16 | ||||
-rw-r--r-- | test/azure-cli/scenarios.json | 12 |
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 |