forked from mirrors/gstreamer-rs
ci: improve docker image layering
At the moment we are building 3 independent images, each one having a different Rust version. This works perfectly fine but we can save storage space and bandwith by making a smarter use of Docker's layering system. Introducing a new 'base' image containing all the deps, including GStreamer, acting as a base for the actual images. As a result most of the actual content is now shared accross the same Docker layer. This would save us from downloading/building all the deps when updating images and will reduce storage and transfers for runners.
This commit is contained in:
parent
33dbedf59c
commit
fe30b4a388
2 changed files with 27 additions and 8 deletions
|
@ -30,7 +30,8 @@ variables:
|
||||||
FDO_UPSTREAM_REPO: gstreamer/gstreamer-rs
|
FDO_UPSTREAM_REPO: gstreamer/gstreamer-rs
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- "prep"
|
- "container-base"
|
||||||
|
- "container-final"
|
||||||
- "lint"
|
- "lint"
|
||||||
- "test"
|
- "test"
|
||||||
- "extras"
|
- "extras"
|
||||||
|
@ -47,6 +48,11 @@ stages:
|
||||||
- source ./ci/env.sh
|
- source ./ci/env.sh
|
||||||
- mkdir .cargo && echo -e "[net]\ngit-fetch-with-cli = true" > .cargo/config
|
- mkdir .cargo && echo -e "[net]\ngit-fetch-with-cli = true" > .cargo/config
|
||||||
|
|
||||||
|
.debian:10-base:
|
||||||
|
extends: .debian:10
|
||||||
|
variables:
|
||||||
|
FDO_DISTRIBUTION_TAG: 'base-$GST_RS_IMG_TAG'
|
||||||
|
|
||||||
.debian:10-stable:
|
.debian:10-stable:
|
||||||
extends: .debian:10
|
extends: .debian:10
|
||||||
variables:
|
variables:
|
||||||
|
@ -62,27 +68,40 @@ stages:
|
||||||
variables:
|
variables:
|
||||||
RUST_VERSION: "nightly"
|
RUST_VERSION: "nightly"
|
||||||
|
|
||||||
.build-debian-container:
|
.build-base-image:
|
||||||
extends:
|
extends:
|
||||||
- .fdo.container-build@debian
|
- .fdo.container-build@debian
|
||||||
stage: prep
|
stage: container-base
|
||||||
variables:
|
variables:
|
||||||
FDO_DISTRIBUTION_PACKAGES: "build-essential curl liborc-0.4-dev libglib2.0-dev libxml2-dev libgtk-3-dev libegl1-mesa libgles2-mesa libgl1-mesa-dri libgl1-mesa-glx libwayland-egl1-mesa xz-utils libssl-dev git wget ca-certificates ninja-build python3-pip flex bison libglib2.0-dev"
|
FDO_DISTRIBUTION_PACKAGES: "build-essential curl liborc-0.4-dev libglib2.0-dev libxml2-dev libgtk-3-dev libegl1-mesa libgles2-mesa libgl1-mesa-dri libgl1-mesa-glx libwayland-egl1-mesa xz-utils libssl-dev git wget ca-certificates ninja-build python3-pip flex bison libglib2.0-dev"
|
||||||
FDO_DISTRIBUTION_EXEC: 'bash ci/install-gst.sh && bash ci/install-rust.sh $RUST_VERSION'
|
FDO_DISTRIBUTION_EXEC: 'bash ci/install-gst.sh'
|
||||||
|
|
||||||
|
.build-final-image:
|
||||||
|
extends:
|
||||||
|
- .fdo.container-build@debian
|
||||||
|
stage: container-final
|
||||||
|
variables:
|
||||||
|
FDO_BASE_IMAGE: '$CI_REGISTRY_IMAGE/debian/10:base-$GST_RS_IMG_TAG'
|
||||||
|
FDO_DISTRIBUTION_EXEC: 'bash ci/install-rust.sh $RUST_VERSION'
|
||||||
|
|
||||||
|
build-base:
|
||||||
|
extends:
|
||||||
|
- .build-base-image
|
||||||
|
- .debian:10-base
|
||||||
|
|
||||||
build-stable:
|
build-stable:
|
||||||
extends:
|
extends:
|
||||||
- .build-debian-container
|
- .build-final-image
|
||||||
- .debian:10-stable
|
- .debian:10-stable
|
||||||
|
|
||||||
build-1-40:
|
build-1-40:
|
||||||
extends:
|
extends:
|
||||||
- .build-debian-container
|
- .build-final-image
|
||||||
- .debian:10-1-40
|
- .debian:10-1-40
|
||||||
|
|
||||||
build-nightly:
|
build-nightly:
|
||||||
extends:
|
extends:
|
||||||
- .build-debian-container
|
- .build-final-image
|
||||||
- .debian:10-nightly
|
- .debian:10-nightly
|
||||||
|
|
||||||
update-nightly:
|
update-nightly:
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
variables:
|
variables:
|
||||||
GST_RS_IMG_TAG: '2020-04-27.1'
|
GST_RS_IMG_TAG: '2020-04-28.0'
|
||||||
|
|
Loading…
Reference in a new issue