Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/anchore/test-images
Container automation for testing and validation
https://github.com/anchore/test-images
Last synced: 3 days ago
JSON representation
Container automation for testing and validation
- Host: GitHub
- URL: https://github.com/anchore/test-images
- Owner: anchore
- Created: 2020-10-02T20:41:45.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-09-17T16:57:45.000Z (about 2 months ago)
- Last Synced: 2024-09-18T19:13:44.306Z (about 2 months ago)
- Language: Dockerfile
- Size: 6.33 MB
- Stars: 2
- Watchers: 16
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# test-images
This repository holds files like `Dockerfile` with some automation to build container images used for testing.## Development
If you need to create a new container for testing, create a new directory with a Dockerfile and symlink the `ContainerMakefile` into it. In this example
we create a `new` directory which will hold the contents for a new container image:```text
$ mkdir containers/new
$ cd containers/new
$ ln -s ../../ContainerMakefile Makefile
```After creating the new directory and symlinking the `ContainerMakefile` the automation will be able to make it part of its workflow to make it available on `anchore/test_images`.
Next, add a `Dockerfile` and make sure it passes the `build` and `lint` targets:
```
$ make lint
Linting container image anchore/test_image:new
docker run --rm -i hadolint/hadolint < Dockerfile
/dev/stdin:1 DL3006 Always tag the version of an image explicitly
make: *** [lint] Error 1
```Since the tagging is done by the automation, add the following line at the top of the container:
```
# hadolint ignore=DL3006
```That should allow the linting to pass. Create a pull request, which will also build and lint the container as part of the verification process.
After your container merges to the `main` branch, it will be pushed to `anchore/test_images`. Following the example in this section, it will tag it with the name
of the directory, which in this case is `new`. The end result will create the following container: `anchore/test_images:new`.### Optional setups when building
There are some situations where the default `ContainerMakefile` is insufficient to create an image along with `Dockerfile`. This is the case of the Java image, where
there is a need to run some ephemeral containers to create a java artifact. In such cases, there is support for a `setup.sh` script that needs to be defined in the target. If
this file exists, the `Makefile` will execute it as part of the `build` target.Note: make sure the file is executable
## make targets
A couple of other `make` commands are available for the symlinked `Makefile`, they are documented as part of the `make help` output.* `make build`: builds the current container locally, tags it with the current directory name
* `make clean`: Removes the container image associated with the directory. If the directory name is `new`, then it will try to remove `anchore/test_images:new`
* `make lint`: Runs the `hadolint/hadolint` container passing the contents of the `Dockerfile` to stdin, this step is run as a verification when a PR is openedIn addition to defined targets, the `Makefile` supports dynamic targets by looking into the `containers/` directory. Every sub-directory in that path becomes an available target to build it locally. For example, `containers/py38` is exposed and available with the following command:
```
$ make py38
```