# 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: `: [: [: ...]]`. 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)