Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/actions/smoke-test/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ PREBUILD_DIR="prebuild/${TEMPLATE_ID}"
if [ -d "${PREBUILD_DIR}" ] ; then
RUNTIME_OPTION=$(jq -r '.options | keys[] | select(. != "azureFunctionsCliVersion")' "src/${TEMPLATE_ID}/devcontainer-template.json")
RUNTIME_VERSION=$(jq -r ".options | .${RUNTIME_OPTION} | .default" "src/${TEMPLATE_ID}/devcontainer-template.json")
PREBUILD_IMAGE="ghcr.io/shibayan/devcontainers/${TEMPLATE_ID}:${RUNTIME_VERSION}-noble"
PREBUILD_IMAGE="ghcr.io/shibayan/devcontainers/${TEMPLATE_ID}-base:${RUNTIME_VERSION}-noble"

if [ -z "${RUNTIME_OPTION}" ] || [ -z "${RUNTIME_VERSION}" ] || [ "${RUNTIME_VERSION}" = "null" ] ; then
echo "Unable to determine the runtime version for '${TEMPLATE_ID}'"
Expand Down
32 changes: 30 additions & 2 deletions .github/workflows/prebuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
- ubuntu-24.04-arm
env:
RUNTIME_VERSION: ${{ matrix.config.runtime }}
IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/devcontainers/${{ matrix.config.template }}
IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/devcontainers/${{ matrix.config.template }}-base
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

Expand Down Expand Up @@ -103,7 +103,7 @@ jobs:
matrix:
config: ${{ fromJSON(needs.prepare.outputs.configs) }}
env:
IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/devcontainers/${{ matrix.config.template }}
IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/devcontainers/${{ matrix.config.template }}-base
RUNTIME_VERSION: ${{ matrix.config.runtime }}
steps:
- name: Log in to GitHub Container Registry
Expand Down Expand Up @@ -133,3 +133,31 @@ jobs:
any(.manifests[]; .platform.os == "linux" and .platform.architecture == $architecture)
' <<< "${manifest}" > /dev/null
done

verify-public:
needs:
- prepare
- merge
runs-on: ubuntu-24.04
env:
CONFIGS: ${{ needs.prepare.outputs.configs }}
steps:
- name: Verify anonymous image access
shell: bash
run: |
failed=false
while IFS= read -r config; do
template=$(jq -r '.template' <<< "${config}")
runtime=$(jq -r '.runtime' <<< "${config}")
image="ghcr.io/${GITHUB_REPOSITORY_OWNER}/devcontainers/${template}-base:${runtime}-noble"

echo "Verifying anonymous access to ${image}"
if ! docker buildx imagetools inspect "${image}" > /dev/null; then
echo "::error::Package '${template}-base' must be made public in GitHub Packages."
failed=true
fi
done < <(jq -c '.[]' <<< "${CONFIGS}")

if [ "${failed}" = true ]; then
exit 1
fi
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
runtime_option=$(jq -r '.options | keys[] | select(. != "azureFunctionsCliVersion")' "${manifest_path}")

while IFS= read -r runtime_version; do
image="ghcr.io/${GITHUB_REPOSITORY_OWNER}/devcontainers/${template}:${runtime_version}-noble"
image="ghcr.io/${GITHUB_REPOSITORY_OWNER}/devcontainers/${template}-base:${runtime_version}-noble"
echo "Verifying ${image}"
manifest=$(docker buildx imagetools inspect --raw "${image}")

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ A collection of [Dev Container Templates](https://containers.dev/implementors/te

> All templates include the Azure Functions Core Tools (version selectable, default: `latest`).

All language runtimes are provided through prebuilt Ubuntu 24.04 images for both AMD64 and ARM64. The templates add the selected Azure Functions Core Tools version when the development container is created.
All language runtimes are provided through separate `*-base` prebuilt Ubuntu 24.04 images for both AMD64 and ARM64. The templates add the selected Azure Functions Core Tools version when the development container is created.

## Usage

Expand Down
9 changes: 9 additions & 0 deletions prebuild/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Prebuilt Runtime Images

This directory contains the Dev Container definitions used to build the Ubuntu 24.04 runtime images referenced by the templates in `src`.

Each language is published to a separate GHCR package whose name ends in `-base`. Images are published for AMD64 and ARM64 with rolling, dated, and revision tags.

GitHub Container Registry creates new packages as private. After the first successful image push for a language, change the corresponding `*-base` package visibility to public and rerun the workflow. The final workflow job verifies that every image can be pulled anonymously.

Previously published runtime tags without the `-base` package suffix must remain available because template versions published before this separation reference those tags.
2 changes: 1 addition & 1 deletion src/azure-functions-dotnet/.devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1 +1 @@
FROM ghcr.io/shibayan/devcontainers/azure-functions-dotnet:${templateOption:dotnetVersion}-noble
FROM ghcr.io/shibayan/devcontainers/azure-functions-dotnet-base:${templateOption:dotnetVersion}-noble
2 changes: 1 addition & 1 deletion src/azure-functions-dotnet/devcontainer-template.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"id": "azure-functions-dotnet",
"version": "2.0.6",
"version": "2.0.7",
"name": "Azure Functions (.NET)",
"description": "Develop C# and .NET based Azure Functions. Includes all needed SDKs, extensions, and dependencies.",
"documentationURL": "https://github.com/shibayan/devcontainers/tree/master/src/azure-functions-dotnet",
Expand Down
2 changes: 1 addition & 1 deletion src/azure-functions-go/.devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1 +1 @@
FROM ghcr.io/shibayan/devcontainers/azure-functions-go:${templateOption:goVersion}-noble
FROM ghcr.io/shibayan/devcontainers/azure-functions-go-base:${templateOption:goVersion}-noble
2 changes: 1 addition & 1 deletion src/azure-functions-go/devcontainer-template.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"id": "azure-functions-go",
"version": "1.0.1",
"version": "1.0.2",
"name": "Azure Functions (Go)",
"description": "Develop Go based Azure Functions. Includes all needed SDKs, extensions, and dependencies.",
"documentationURL": "https://github.com/shibayan/devcontainers/tree/master/src/azure-functions-go",
Expand Down
2 changes: 1 addition & 1 deletion src/azure-functions-java/.devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1 +1 @@
FROM ghcr.io/shibayan/devcontainers/azure-functions-java:${templateOption:javaVersion}-noble
FROM ghcr.io/shibayan/devcontainers/azure-functions-java-base:${templateOption:javaVersion}-noble
2 changes: 1 addition & 1 deletion src/azure-functions-java/devcontainer-template.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"id": "azure-functions-java",
"version": "2.0.6",
"version": "2.0.7",
"name": "Azure Functions (Java)",
"description": "Develop Java based Azure Functions. Includes all needed SDKs, extensions, and dependencies.",
"documentationURL": "https://github.com/shibayan/devcontainers/tree/master/src/azure-functions-java",
Expand Down
2 changes: 1 addition & 1 deletion src/azure-functions-node/.devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1 +1 @@
FROM ghcr.io/shibayan/devcontainers/azure-functions-node:${templateOption:nodeVersion}-noble
FROM ghcr.io/shibayan/devcontainers/azure-functions-node-base:${templateOption:nodeVersion}-noble
2 changes: 1 addition & 1 deletion src/azure-functions-node/devcontainer-template.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"id": "azure-functions-node",
"version": "2.0.6",
"version": "2.0.7",
"name": "Azure Functions (Node.js)",
"description": "Develop JavaScript and TypeScript based Azure Functions. Includes all needed SDKs, extensions, and dependencies.",
"documentationURL": "https://github.com/shibayan/devcontainers/tree/master/src/azure-functions-node",
Expand Down
2 changes: 1 addition & 1 deletion src/azure-functions-powershell/.devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1 +1 @@
FROM ghcr.io/shibayan/devcontainers/azure-functions-powershell:${templateOption:powerShellVersion}-noble
FROM ghcr.io/shibayan/devcontainers/azure-functions-powershell-base:${templateOption:powerShellVersion}-noble
2 changes: 1 addition & 1 deletion src/azure-functions-powershell/devcontainer-template.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"id": "azure-functions-powershell",
"version": "2.0.6",
"version": "2.0.7",
"name": "Azure Functions (PowerShell)",
"description": "Develop PowerShell based Azure Functions. Includes all needed SDKs, extensions, and dependencies.",
"documentationURL": "https://github.com/shibayan/devcontainers/tree/master/src/azure-functions-powershell",
Expand Down
2 changes: 1 addition & 1 deletion src/azure-functions-python/.devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1 +1 @@
FROM ghcr.io/shibayan/devcontainers/azure-functions-python:${templateOption:pythonVersion}-noble
FROM ghcr.io/shibayan/devcontainers/azure-functions-python-base:${templateOption:pythonVersion}-noble
2 changes: 1 addition & 1 deletion src/azure-functions-python/devcontainer-template.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"id": "azure-functions-python",
"version": "2.0.6",
"version": "2.0.7",
"name": "Azure Functions (Python)",
"description": "Develop Python based Azure Functions. Includes all needed SDKs, extensions, and dependencies.",
"documentationURL": "https://github.com/shibayan/devcontainers/tree/master/src/azure-functions-python",
Expand Down