From 8082ebc6ea98cae62b3e211f737ef9fac8693fb0 Mon Sep 17 00:00:00 2001
From: CrazyMax <crazy-max@users.noreply.github.com>
Date: Thu, 23 Feb 2023 14:02:47 +0100
Subject: [PATCH] ci: named context jobs

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
---
 .github/workflows/ci.yml                      | 110 ++++++++++++++----
 test/named-context-base.Dockerfile            |   4 +
 ...xt.Dockerfile => named-context.Dockerfile} |   1 +
 3 files changed, 92 insertions(+), 23 deletions(-)
 create mode 100644 test/named-context-base.Dockerfile
 rename test/{buildcontext.Dockerfile => named-context.Dockerfile} (98%)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8854d5c..93409a3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -444,29 +444,6 @@ jobs:
             docker:10.180.0.1
             foo:10.0.0.1
 
-  build-contexts:
-    runs-on: ubuntu-latest
-    steps:
-      -
-        name: Checkout
-        uses: actions/checkout@v3
-      -
-        name: Set up Docker Buildx
-        uses: docker/setup-buildx-action@v2
-        with:
-          version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
-          driver-opts: |
-            image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
-      -
-        name: Build
-        uses: ./
-        with:
-          context: ./test
-          file: ./test/buildcontext.Dockerfile
-          build-contexts: |
-            alpine=docker-image://debian:stable-slim
-          tags: name/app:latest
-
   no-cache-filters:
     runs-on: ubuntu-latest
     steps:
@@ -873,3 +850,90 @@ jobs:
         with:
           context: ./test
           file: ./test/Dockerfile
+
+  named-context-pin:
+    runs-on: ubuntu-latest
+    steps:
+      -
+        name: Checkout
+        uses: actions/checkout@v3
+      -
+        name: Set up Docker Buildx
+        uses: docker/setup-buildx-action@v2
+        with:
+          version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
+          driver-opts: |
+            image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
+      -
+        name: Build base image
+        uses: ./
+        with:
+          context: ./test
+          file: ./test/named-context.Dockerfile
+          build-contexts: |
+            alpine=docker-image://alpine:edge
+
+  named-context-docker:
+    runs-on: ubuntu-latest
+    steps:
+      -
+        name: Checkout
+        uses: actions/checkout@v3
+      -
+        name: Set up Docker Buildx
+        uses: docker/setup-buildx-action@v2
+        with:
+          version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
+          driver: docker
+      -
+        name: Build base image
+        uses: ./
+        with:
+          context: ./test
+          file: ./test/named-context-base.Dockerfile
+          load: true
+          tags: my-base-image:local
+      -
+        name: Build
+        uses: ./
+        with:
+          context: ./test
+          file: ./test/named-context.Dockerfile
+          build-contexts: |
+            base=docker-image://my-base-image:local
+
+  named-context-container:
+    runs-on: ubuntu-latest
+    services:
+      registry:
+        image: registry:2
+        ports:
+          - 5000:5000
+    steps:
+      -
+        name: Checkout
+        uses: actions/checkout@v3
+      -
+        name: Set up Docker Buildx
+        uses: docker/setup-buildx-action@v2
+        with:
+          version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
+          driver-opts: |
+            image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
+            network=host
+      -
+        name: Build base image
+        uses: ./
+        with:
+          context: ./test
+          file: ./test/named-context-base.Dockerfile
+          tags: localhost:5000/my-base-image:latest
+          push: true
+      -
+        name: Build
+        uses: ./
+        with:
+          context: ./test
+          file: ./test/named-context.Dockerfile
+          build-contexts: |
+            alpine=docker-image://localhost:5000/my-base-image:latest
diff --git a/test/named-context-base.Dockerfile b/test/named-context-base.Dockerfile
new file mode 100644
index 0000000..238ace7
--- /dev/null
+++ b/test/named-context-base.Dockerfile
@@ -0,0 +1,4 @@
+# syntax=docker/dockerfile:1
+
+FROM debian
+RUN echo "Hello debian!"
diff --git a/test/buildcontext.Dockerfile b/test/named-context.Dockerfile
similarity index 98%
rename from test/buildcontext.Dockerfile
rename to test/named-context.Dockerfile
index 18ea58c..ca55c6e 100644
--- a/test/buildcontext.Dockerfile
+++ b/test/named-context.Dockerfile
@@ -1,3 +1,4 @@
 # syntax=docker/dockerfile:1
+
 FROM alpine
 RUN cat /etc/*release