stages:
        - build
        - dockerize

variables:
        IMAGE_NAME: registry.hottis.de/dockerized/mosquitto-with-auth
        HUB_IMAGE_NAME: wollud1969/mosquitto-with-auth
        GO_BINARIES: go1.19.1.linux-amd64.tar.gz
build:
        stage: build
        image: registry.hottis.de/dockerized/base-build-env:1.5.3-bullseye
        tags:
                - hottis
                - linux
                - docker
        variables:
                GIT_SUBMODULE_STRATEGY: recursive
        except:
                - tags
        artifacts:
                paths:
                  - opt/
                  - etc/
                  - generated-version.txt
                  - version.txt
        script:
                - apt update
                - apt install -y gcc g++ libssl-dev uuid-dev libcjson-dev xsltproc docbook docbook-xsl libmariadb-dev libpq-dev libwebsockets-dev
                - wget https://dl.google.com/go/$GO_BINARIES
                - tar -xzf $GO_BINARIES
                - mv go /usr/local
                - GOROOT=/usr/local/go
                - PATH=$PATH:$GOROOT/bin
                - MOSQ_SRC=`pwd`/parts/mosquitto
                - BUILD_DIR=`pwd`
                - pushd parts/mosquitto 
                - sed -i 's,prefix?=/usr/local,prefix=/opt,' config.mk 
                - sed -i 's,WITH_WEBSOCKETS:=no,WITH_WEBSOCKETS:=yes,' config.mk 
                - env DESTDIR=$BUILD_DIR make 
                - env DESTDIR=$BUILD_DIR make install 
                - popd
                - pushd parts/mosquitto-go-auth 
                - export CGO_CFLAGS="-I$BUILD_DIR/opt/include -fPIC"
                - export CGO_LDFLAGS="-shared"
                - make
                - cp go-auth.so $BUILD_DIR/opt/lib
                - cp pw $BUILD_DIR/opt/bin
                - popd
                - VERSION=`cat VERSION`
                - echo -n "$VERSION" > version.txt
                - REFCNT=`git rev-list --all --count`
                - echo -n "$VERSION.$REFCNT.$CI_COMMIT_REF_NAME" > generated-version.txt 

dockerize:
        stage: dockerize
        image: docker:stable
        tags:
                - hottis
                - linux
                - docker
        dependencies:
                - build
        script:
                - GENERATED_VERSION=`cat generated-version.txt`
                - VERSION=`cat version.txt`
                - echo docker build --tag $IMAGE_NAME:latest --tag $IMAGE_NAME:$VERSION --tag $IMAGE_NAME:$GENERATED_VERSION --tag $HUB_IMAGE_NAME:latest --tag $HUB_IMAGE_NAME:$VERSION --tag $HUB_IMAGE_NAME:$GENERATED_VERSION .
                - docker build --tag $IMAGE_NAME:latest --tag $IMAGE_NAME:$VERSION --tag $IMAGE_NAME:$GENERATED_VERSION --tag $HUB_IMAGE_NAME:latest --tag $HUB_IMAGE_NAME:$VERSION --tag $HUB_IMAGE_NAME:$GENERATED_VERSION .
                - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
                - docker push $IMAGE_NAME:latest
                - docker push $IMAGE_NAME:$VERSION
                - docker push $IMAGE_NAME:$GENERATED_VERSION
                - docker login -u $DOCKER_HUB_LOGIN -p $DOCKER_HUB_PASSWORD
                - docker push $HUB_IMAGE_NAME:latest
                - docker push $HUB_IMAGE_NAME:$VERSION
                - docker push $HUB_IMAGE_NAME:$GENERATED_VERSION