Update the docker build to include features based images (#3875)
## Proposed Changes There are some features that are enabled/disabled with the `FEATURES` env variable. This PR would introduce a pattern to introduce docker images based on those features. This can be useful later on to have specific images for some experimental features in the future. ## Additional Info We at Lodesart need to have `minimal` spec support for some cross-client network testing. To make it efficient on the CI, we tend to use minimal preset.
This commit is contained in:
parent
9547ac069c
commit
7934485aef
13
.github/workflows/docker.yml
vendored
13
.github/workflows/docker.yml
vendored
@ -43,7 +43,7 @@ jobs:
|
||||
VERSION: ${{ env.VERSION }}
|
||||
VERSION_SUFFIX: ${{ env.VERSION_SUFFIX }}
|
||||
build-docker-single-arch:
|
||||
name: build-docker-${{ matrix.binary }}
|
||||
name: build-docker-${{ matrix.binary }}${{ matrix.features.version_suffix }}
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix:
|
||||
@ -51,6 +51,10 @@ jobs:
|
||||
aarch64-portable,
|
||||
x86_64,
|
||||
x86_64-portable]
|
||||
features: [
|
||||
{version_suffix: "", env: ""},
|
||||
{version_suffix: "-dev", env: "spec-minimal"}
|
||||
]
|
||||
include:
|
||||
- profile: maxperf
|
||||
|
||||
@ -60,6 +64,8 @@ jobs:
|
||||
DOCKER_CLI_EXPERIMENTAL: enabled
|
||||
VERSION: ${{ needs.extract-version.outputs.VERSION }}
|
||||
VERSION_SUFFIX: ${{ needs.extract-version.outputs.VERSION_SUFFIX }}
|
||||
FEATURE_SUFFIX: ${{ matrix.features.version_suffix }}
|
||||
FEATURES: ${{ matrix.features.env }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Update Rust
|
||||
@ -98,8 +104,9 @@ jobs:
|
||||
docker buildx build \
|
||||
--platform=linux/${SHORT_ARCH} \
|
||||
--file ./Dockerfile.cross . \
|
||||
--tag ${IMAGE_NAME}:${VERSION}-${SHORT_ARCH}${VERSION_SUFFIX}${MODERNITY_SUFFIX} \
|
||||
--provenance=false \
|
||||
--tag ${IMAGE_NAME}:${VERSION}-${SHORT_ARCH}${VERSION_SUFFIX}${MODERNITY_SUFFIX}${FEATURE_SUFFIX} \
|
||||
--build-arg FEATURES=${FEATURES} \
|
||||
--provenance=false \
|
||||
--push
|
||||
build-docker-multiarch:
|
||||
name: build-docker-multiarch${{ matrix.modernity }}
|
||||
|
@ -57,7 +57,7 @@ $ docker pull sigp/lighthouse:latest-modern
|
||||
Image tags follow this format:
|
||||
|
||||
```
|
||||
${version}${arch}${stability}${modernity}
|
||||
${version}${arch}${stability}${modernity}${features}
|
||||
```
|
||||
|
||||
The `version` is:
|
||||
@ -81,6 +81,12 @@ The `modernity` is:
|
||||
* `-modern` for optimized builds
|
||||
* empty for a `portable` unoptimized build
|
||||
|
||||
The `features` is:
|
||||
|
||||
* `-dev` for a development build with `minimal-spec` preset enabled.
|
||||
* empty for a standard build with no custom feature enabled.
|
||||
|
||||
|
||||
Examples:
|
||||
|
||||
* `latest-unstable-modern`: most recent `unstable` build for all modern CPUs (x86_64 or ARM)
|
||||
|
Loading…
Reference in New Issue
Block a user