111 lines
3.5 KiB
Markdown
111 lines
3.5 KiB
Markdown
# Base Runner Image
|
|
|
|
This is a base container image for CI/CD processes.
|
|
|
|
## Description
|
|
|
|
Based on the Debian Slim series of images, this image provides common tools for continuous integration/delivery. It is only for build, not runtime purposes. These are used by GitHub, GitLab, and Gitea runners to perform builds, releases, and related tasks.
|
|
|
|
## Features
|
|
|
|
### Inherited
|
|
|
|
This image provides everything [Debian Slim](https://github.com/linuxcontainers/debian-slim) provides.
|
|
|
|
### Tools
|
|
|
|
This following tools are installed and available with this image.
|
|
|
|
`tar`
|
|
: TAR extraction or creation
|
|
|
|
`gzip`
|
|
: GZIP or `tar.gz` extraction or creation
|
|
|
|
`zip`/`unzip`
|
|
: ZIP extraction or creation
|
|
|
|
`curl`
|
|
: HTTP service calls, including downloads
|
|
|
|
`jq`
|
|
: JSON parsing and modification
|
|
|
|
`xmlstarlet`
|
|
: XML parsing and modification
|
|
|
|
`git`
|
|
: Git source control
|
|
|
|
### Extensible `ENTRYPOINT`
|
|
|
|
This base image implements a universal `ENTRYPOINT` script that executes all executable scripts in `/opt/containerd` that end with `.sh`. This provides the ability for all extending container images to include their own entrypoint script without overriding or shadowing any ancestral entrypoint.
|
|
|
|
This is nothing to the `CMD` directive, but if specified by an extending image, it will be respected.
|
|
|
|
## Tags
|
|
|
|
A version labeled `latest` always exists.
|
|
|
|
| Tag | Description |
|
|
| -------- | ----------- |
|
|
| `latest` | The latest version |
|
|
| `X` | The latest version within the specified major version `X`. |
|
|
| `X.Y` | The latest version within the specified minor version `X.Y`. |
|
|
| `X.Y.Z` | A specific version. |
|
|
|
|
## Runtime Configuration
|
|
|
|
### Environment Variables
|
|
|
|
| Name | Required | Default | Purpose |
|
|
| ------------------------ |:--------:| --------------- | ------- |
|
|
| `GIT_CONFIG_USER_NAME` | No | | Initialize Git to use this `user.name`. |
|
|
| `GIT_CONFIG_USER_EMAIL` | No | | Initialize Git to use this `user.email`. |
|
|
| `CURL_CONFIG_DIR` | No | `/opt/etc/curl` | Expected location of Curl configuration files. |
|
|
| `CURL_CONFIG_IDS` | No | | Create Curl configuration file(s) using values provided in corresponding environment variables. |
|
|
| `CURL_CONFIG_*_USERNAME` | No | | An HTTP BASIC username for a corresponding Curl configuration. |
|
|
| `CURL_CONFIG_*_PASSWORD` | No | | An HTTP BASIC password for a corresponding Curl configuration. |
|
|
|
|
`CURL_CONFIG_IDS`
|
|
: The expected format: `<id>:<key> [<id>:<key> [<id>:<key> ...]]`. The key is used in place of the `*` in the environment variables above. The ID is used in the configuration filename.
|
|
|
|
#### Examples
|
|
|
|
Here are sample environment variable definitions:
|
|
|
|
```sh
|
|
GIT_CONFIG_USER_NAME=John Doe
|
|
GIT_CONFIG_USER_EMAIL=john.doe@inteligr8.com
|
|
CURL_CONFIG_IDS="biz1:BIZ1 biz2:BIZ2"
|
|
CURL_CONFIG_BIZ1_USERNAME=john.doe
|
|
CURL_CONFIG_BIZ1_PASSWORD=
|
|
CURL_CONFIG_BIZ2_USERNAME=jane.doe
|
|
CURL_CONFIG_BIZ2_PASSWORD=
|
|
```
|
|
|
|
Here is the corresponding usage of `curl` with the configuration:
|
|
|
|
```sh
|
|
curl --config ${CURL_CONFIG_DIR}/biz1.cfg ...
|
|
curl --config ${CURL_CONFIG_DIR}/biz2.cfg ...
|
|
```
|
|
|
|
## Recommended Uses
|
|
|
|
This is expected to be extended or used directly for simple CI/CD runners.
|
|
|
|
## Contributing
|
|
|
|
You are welcome to copy the repository, but please open an issue first to avoid fragmentation.
|
|
|
|
- [Open Issue](https://git.inteligr8.com/inteligr8/base-runner-image/issues)
|
|
|
|
### Development
|
|
|
|
- [Documentation](docs/build.md)
|
|
|
|
## References
|
|
|
|
- [Debian Slim](https://github.com/linuxcontainers/debian-slim)
|