= QA for OCI Images = OCI Images (or 'docker images') are built by Launchpad from an OCI project and recipe. == Build Procedure == These build OCI ('docker') images, they are closely related to the snap package builds, but different enough to need separate testing. They require a git repository with an appropriate Dockerfile to already exist. [[https://code.dogfood.paddev.net/~twom/+git/test-docker-repo/|This can be used]]. 1. Create an OCI project under a distribution that supports OCI. [[https://dogfood.paddev.net/ubuntu/+oci/twom-test-recipe-for-documentation|This is a good candidate]]. 2. Create a recipe for this OCI Project, using 'Create OCI recipe' 3. Fill in the details of the recipe and the source git repository. Any architecture that has docker in the archive should work. 4. You can add a push rule / credentials once the recipe is created, if you need to test the OCI image being pushed to a registry. 5. Request a build of this recipe. == Testing the image == Launchpad is a lot more involved in the build process for an OCI image than an equivalent snap or binary package. As such, it is important to test any changes to ensure that the image is still valid. === Via docker === If the image has been pushed to an OCI registry, you can test it by installing docker (`snap install docker`), and doing `docker pull /:` `docker run ` This will ensure the manifest is valid enough to be pulled and started. Any further investigation will be dependent on the type of image/app. === Via microk8s === microk8s is more strict about the manifest that it will accept on pull, which has caused some problems in the past. 1. `snap install microk8s` and configure 2. Create the following deployment yaml {{{ apiVersion: v1 kind: Pod metadata: name: postgresql spec: containers: - image: : name: }}} 3. `microk8s kubectl apply deployment.yaml` 4. `microk8s kubectl get pods` 5. `microk8s kubectl describe `