diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b65cc9f..d36834a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,8 +20,6 @@ variables: - if: '$CI_COMMIT_BRANCH == "master"' - if: '$CI_COMMIT_BRANCH == "next"' - if: "$CI_COMMIT_TAG" - # TODO: Remove this before merging: - - if: '$CI_COMMIT_BRANCH == "better-multiarch-building-the-second-attempt"' interruptible: true image: "rust:latest" tags: ["docker"] @@ -125,55 +123,11 @@ build:debug:cargo:x86_64-unknown-linux-musl: - "conduit-debug-x86_64-unknown-linux-musl" expose_as: "Conduit DEBUG for x86_64-unknown-linux-musl" -# --------------------------------------------------------------------- # -# Cargo: Compiling deb packages for different architectures # -# --------------------------------------------------------------------- # - -#.build-cargo-deb-shared-settings: -# stage: "build" -# needs: [ ] -# rules: -# - if: '$CI_COMMIT_BRANCH == "master"' -# - if: '$CI_COMMIT_BRANCH == "next"' -# - if: '$CI_COMMIT_TAG' -# interruptible: true -# image: "rust:latest" -# tags: ["docker"] -# cache: -# paths: -# - cargohome -# - target/ -# key: "build_cache-deb-$TARGET" -# before_script: -# - 'echo "Building debian package for target $TARGET"' -# - 'mkdir -p cargohome && CARGOHOME="cargohome"' -# - "cat /etc/*-release && rustc --version && cargo --version" # Print version info for debugging -# - 'apt-get update -yqq' -# - 'echo "Installing packages: $NEEDED_PACKAGES"' -# - "apt-get install -yqq --no-install-recommends $NEEDED_PACKAGES" -# - "rustup target add $TARGET" -# - "cargo install cargo-deb" -# script: -# - time cargo deb --target $TARGET -# - 'mv target/$TARGET/debian/*.deb "conduit-$TARGET.deb"' -# -#build:cargo-deb:x86_64-unknown-linux-gnu: -# extends: .build-cargo-deb-shared-settings -# variables: -# TARGET: "x86_64-unknown-linux-gnu" -# NEEDED_PACKAGES: "" -# artifacts: -# name: "conduit-x86_64-unknown-linux-gnu.deb" -# paths: -# - "conduit-x86_64-unknown-linux-gnu.deb" -# expose_as: "Debian Package x86_64" -# - # --------------------------------------------------------------------- # # Create and publish docker image # # --------------------------------------------------------------------- # -build:docker: +.docker-shared-settings: stage: "build docker image" image: jdrouet/docker-with-buildx:stable tags: ["docker"] @@ -184,20 +138,16 @@ build:docker: - "build:release:cargo:arm-unknown-linux-musleabihf" - "build:release:cargo:armv7-unknown-linux-musleabihf" - "build:release:cargo:aarch64-unknown-linux-musl" - rules: - - if: '$CI_COMMIT_BRANCH == "master"' - - if: '$CI_COMMIT_BRANCH == "next"' - # TODO: Remove this after debugging - - if: '$CI_COMMIT_BRANCH == "better-multiarch-building-the-second-attempt"' variables: DOCKER_HOST: tcp://docker:2375/ DOCKER_TLS_CERTDIR: "" DOCKER_DRIVER: overlay2 PLATFORMS: "linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/amd64" - IMAGE_TAG: "$CI_REGISTRY_IMAGE/debug-conduit:multiarch-test-dont-use-yet" DOCKER_FILE: "docker/ci-binaries-packaging.Dockerfile" before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + # Only log in to Dockerhub if the credentials are given: + - if [ -n $DOCKER_HUB ]; then docker login -u "$DOCKER_HUB_USER" -p "$DOCKER_HUB_PASSWORD" "$DOCKER_HUB"; fi script: # Prepare buildx to build multiarch stuff: - docker context create 'ci-context' @@ -208,7 +158,26 @@ build:docker: - mkdir -p linux/arm/ && mv ./conduit-armv7-unknown-linux-musleabihf linux/arm/v7 - mkdir -p linux/arm64/ && mv ./conduit-aarch64-unknown-linux-musl linux/arm64/v8 # Actually create multiarch image: - - docker buildx build --pull --push --platform $PLATFORMS --tag $IMAGE_TAG --file $DOCKER_FILE . + - docker buildx build --pull --push --platform "$PLATFORMS" --tag "$GL_IMAGE_TAG" --tag "$GL_IMAGE_TAG-commit-$CI_COMMIT_SHORT_SHA"--file "$DOCKER_FILE" . + # Only try to push to docker hub, if auth data for dockerhub exists: + - if [ -n $DOCKER_HUB ]; then docker push "$DH_IMAGE_TAG"; fi + - if [ -n $DOCKER_HUB ]; then docker push "$DH_IMAGE_TAG-commit-$CI_COMMIT_SHORT_SHA"; fi + +build:docker:next: + extends: .docker-shared-settings + rules: + - if: '$CI_COMMIT_BRANCH == "next"' + variables: + GL_IMAGE_TAG: "$CI_REGISTRY_IMAGE/conduit:next" + DH_IMAGE_TAG: "$DOCKER_HUB_IMAGE/matrixconduit/matrix-conduit:next" + +build:docker:master: + extends: .docker-shared-settings + rules: + - if: '$CI_COMMIT_BRANCH == "master"' + variables: + GL_IMAGE_TAG: "$CI_REGISTRY_IMAGE/conduit:latest" + DH_IMAGE_TAG: "$DOCKER_HUB_IMAGE/matrixconduit/matrix-conduit:latest" ## Build a docker image by packaging up the x86_64-unknown-linux-musl binary into an alpine image #.docker-shared-settings: