Commit d5a4e628 authored by Seblu's avatar Seblu
Browse files

Update CI/CD

parent c6adef3a
Loading
Loading
Loading
Loading
Loading
+7 −18
Original line number Diff line number Diff line
stages:
 - build
 - push

docker_build:
  stage: build
  script: BUILD_EXTRA="--no-cache --pull" ./build.sh $CI_REGISTRY_IMAGE

docker_push:
  stage: push
  before_script:
  - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
  script:
  - docker push "${CI_REGISTRY_IMAGE}:oldstable"
  - docker push "${CI_REGISTRY_IMAGE}:stable"
  - docker push "${CI_REGISTRY_IMAGE}:rc"
  - docker push "${CI_REGISTRY_IMAGE}:dev"
  - docker push "${CI_REGISTRY_IMAGE}:latest"
update:
  variables:
    BUILD_EXTRA: "--no-cache --pull"
    BUILD_NAME: "$CI_REGISTRY_IMAGE"
    BUILD_PUSH: "1"
  before_script: docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
  script: ./build.sh
  only:
    refs:
    - master
+21 −20
Original line number Diff line number Diff line
@@ -2,39 +2,40 @@

set -e

declare -r name=${1:-docker.seblu.net/docker/dokuwiki}
# Build dokuwiki images.
# Set environ BUILD_PUSH to push build images.
# Set environ BUILD_EXTRA to add arguents to docker build command line.

# Define build image name. Define env BUILD_NAME to override.
declare BUILD_NAME=${BUILD_NAME:-docker.seblu.net/docker/dokuwiki}

# Dokuwiki upstream consider the last reliable version to be rc when available.
# The update_check in dokuwiki is always looking for RC too.
# https://forum.dokuwiki.org/d/8939-update-check-should-not-be-used-for-release-candidates
# so we tag latest rc when available, either stable or oldstable.
declare latest=''

# declare well known versions. order matter!
declare -a versions=(dev oldstable stable rc)
declare -A url=(
# Declare well known versions. Order matter! Latest is the latest tag.
declare -r -A versions=(
  ["dev"]="http://github.com/splitbrain/dokuwiki/tarball/master"
  ["oldstable"]="https://download.dokuwiki.org/src/dokuwiki/dokuwiki-oldstable.tgz"
  ["stable"]="https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz"
  ["rc"]="https://download.dokuwiki.org/src/dokuwiki/dokuwiki-rc.tgz"
)

for version in "${versions[@]}"; do
  # do not build unavailable url (e.g: rc is only avaible before a new release)
  echo "Checking $version url ${url[$version]}"
  curl -Isf "${url[$version]}" -o /dev/null || continue
for version in "${!versions[@]}"; do
  # Do not build unavailable url (e.g: rc is only avaible before a new release)
  echo "Checking $version at ${versions[$version]}"
  curl -Isf "${versions[$version]}" -o /dev/null || continue
  echo "Building $version"
  docker build --build-arg=DOKUWIKI_URL="${url[$version]}" --tag "$name:$version" $BUILD_EXTRA .
  docker build --build-arg=DOKUWIKI_URL="${versions[$version]}" --tag "$BUILD_NAME:$version" $BUILD_EXTRA .
  [[ "$BUILD_PUSH" ]] && docker push "$BUILD_NAME:$version"
  latest=$version
done

echo "Tag latest: $latest"
docker tag $name:$latest $name:latest

echo =========================================================================
echo ::: IMAGE NOT PUSHED
echo ::: to push image:
for version in "${versions[@]}"; do
  echo       docker push "$name:$version"
done
echo       docker push "${name%:*}:latest"
echo =========================================================================
# The latest tag is special
if [[ "$latest" ]]; then
  echo "Tag latest is $latest"
  docker tag "$BUILD_NAME:$latest" "$BUILD_NAME:latest"
  [[ "$BUILD_PUSH" ]] && docker push "$BUILD_NAME:latest"
fi