Skip to content

Add sample for OCI context with base image trigger #20

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
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
65 changes: 65 additions & 0 deletions windows-oci-context/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Using an OCI context

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we maybe add a note on when using this might be beneficial. As far as I can tell this is the first mention of using an OCI context in our docs so it might be good to give some additional guidance and context to users


The sample below builds a windows image based on an OCI context.

> These are `powershell` commands.

## Bundle up the context into an OCI Artifact

The context has a simple `Dockerfile` and a `hello.txt`
Use oras to create the context and ensure you are in `context` directory.

```shell
$REGISTRY="myregistry"
$REGISTRY_LOGIN_SERVER="myregistry.azurecr.io"
cd context
az acr login -n $REGISTRY
oras push $REGISTRY_LOGIN_SERVER/windows/oci-context:latest .
```

## Create an ACR to use the context

Create a base image trigger enabled task with the new context and ensure that you specify the required `--platform`.

```powershell
$REGISTRY="myregistry"
$REGISTRY_LOGIN_SERVER="myregistry.azurecr.io"
az acr task create `
--registry $REGISTRY `
--name ocicontextbuild `
--platform Windows/amd64 `
--image "windowsimage:{{.Run.ID}}" `
--context "oci://$REGISTRY_LOGIN_SERVER/windows/oci-context:latest" `
--file Dockerfile `
--commit-trigger-enabled false `
--base-image-trigger-enabled true
```

## Run the task to build and register the base image

Execute the task to build the container image.

```powershell
$REGISTRY="myregistry"
az acr task run --name ocicontextbuild --registry $REGISTRY
```

The output should confirm that the base images were identified.

```
...
- image:
registry: myregistry.azurecr.io
repository: windowsimage
tag: cf1bun
digest: sha256:90f3c6534f9ed4ed8fa5bdaca006e284f0900bb19a850c0a249bede83bb6ed70
runtime-dependency:
registry: mcr.microsoft.com
repository: windows/servercore
tag: ltsc2019
digest: sha256:2bacc4bdc5d1bd805587cb90a2fb2d58d1c775b02df1a19fd221cbfc639ff587
git: {}


Run ID: cf1bun was successful after 5m1s
```
9 changes: 9 additions & 0 deletions windows-oci-context/context/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# escape=`
FROM mcr.microsoft.com/windows/servercore:ltsc2019

# Copy a simple text file into the image
COPY hello.txt C:\hello.txt

# When the container runs, display the contents of hello.txt
CMD ["cmd", "/c", "type C:\\hello.txt && timeout /t 10"]

1 change: 1 addition & 0 deletions windows-oci-context/context/hello.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Hello from Windows container!