Commit 599bfdcf authored by Dom Sekotill's avatar Dom Sekotill
Browse files

Use buildkit and docker-reg for building and tagging images

The tags used have also been rejigged.

Closes #1
parent c7c60c0a
Loading
Loading
Loading
Loading
Loading
+28 −32
Original line number Diff line number Diff line
@@ -2,6 +2,9 @@ variables:
  VERSION:
    value: 2.20.0
    description: Pre-Commit version
  TARGET_PLATFORM:
    value: linux/amd64,linux/arm64
    description: Comma separated list of platforms to build images for

.docker:
  image: docker:stable
@@ -17,41 +20,34 @@ variables:
    - docker info
    - docker login -u gitlab-ci-token -p "$CI_JOB_TOKEN" "$CI_REGISTRY"

build:
Build:
  stage: build
  extends: .docker
  image: docker.kodo.org.uk/ci-images/buildkit/buildctl:latest
  tags: [buildkit]
  script:
    - docker build .
      --pull=true
      --build-arg=VERSION=${VERSION}
      --tag=${BUILD_TAG}
    - docker push ${BUILD_TAG}
  - buildctl build
    --frontend=dockerfile.v0
    --local context=.
    --local dockerfile=.
    --output=type=image,name=$CI_REGISTRY_IMAGE/build:pipeline-$CI_PIPELINE_IID,push=true
    --opt platform=$TARGET_PLATFORMS
    --opt label:commit=$CI_COMMIT_SHA
    ${VERSION:+--opt build-arg:VERSION=$VERSION}

deploy:commit:
Tag Commit:
  stage: deploy
  extends: .docker
  variables:
    TAG: ${CI_REGISTRY_IMAGE}/commit:${CI_COMMIT_SHORT_SHA}
  image: docker.kodo.org.uk/ci-images/docker-reg:0.2.0
  script:
    - docker pull ${BUILD_TAG}
    - docker tag ${BUILD_TAG} ${TAG}
    - docker push ${TAG}

deploy:branch:
  extends: [ "deploy:commit" ]
  only: [ branches ]
  except: [ master ]
  variables:
    TAG: ${CI_REGISTRY_IMAGE}/branch/${CI_COMMIT_REF_SLUG}:latest
  - docker-reg $CI_REGISTRY_IMAGE/build:pipeline-$CI_PIPELINE_IID
    retag commit-$CI_COMMIT_SHA

deploy:tag:
  extends: [ "deploy:commit" ]
  only: [ tags ]
  except:
    - /^[^v]/
    - /^v[^0-9]/
  variables:
    TAG: ${CI_REGISTRY_IMAGE}:latest
  after_script:
    - docker tag ${BUILD_TAG} ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG#v}
    - docker push ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG#v}
Tag Release:
  stage: deploy
  image: docker.kodo.org.uk/ci-images/docker-reg:0.2.0
  rules:
  - if: $CI_COMMIT_TAG =~ /^v[0-9]/
  script:
  - docker-reg $CI_REGISTRY_IMAGE/build:pipeline-$CI_PIPELINE_IID
    retag $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG#v}
  - docker-reg $CI_REGISTRY_IMAGE/build:pipeline-$CI_PIPELINE_IID
    retag $CI_REGISTRY_IMAGE:latest