diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..03b22a4 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,45 @@ +stages: + - prep + - build + +fetch-versions: + image: bash:latest + stage: prep + script: + - apk add git curl jq + - echo "export NEED_UPDATE=false" > .env.update + - git clone https://gitlab.com/gitlab-org/omnibus-gitlab + - cd omnibus-gitlab + - "HALIA_VER=$(curl --request GET -L --header 'Accept: application/json' --header 'Content-Type: application/json' https://git.halia.dev/api/v4/projects/24/registry/repositories/6/tags | jq -r '.[].location' | grep -v latest | cut -d ':' -f2 | sort -V | tail -1)" + - "GITLAB_VER=$(git tag | sort -V | grep ce | tail -1 | cut -d '+' -f1)" + - if [ $HALIA_VER != $GITLAB_VER ]; then echo "export NEED_UPDATE=true" > ../.env.update; fi + artifacts: + paths: + - .env.update + expire_in: 1 week + +build-image: + image: docker:latest + stage: build + services: + - name: docker:dind + script: + - source .env.update + - if [ "$NEED_UPDATE" = false ]; then exit 0; fi + - apk add git wget + - git clone https://gitlab.com/gitlab-org/omnibus-gitlab + - cd omnibus-gitlab + - "GITLAB_VER=$(git tag | sort -V | grep ce | tail -1)" + - "GITLAB_SHORT_VER=$(echo $GITLAB_VER | cut -d '+' -f 1)" + - git checkout $GITLAB_VER + - "GITLAB_VER=$(echo $GITLAB_VER | tr '+' -)" + - NEW_URL="wget --no-check-certificate --content-disposition 'https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/focal/gitlab-ce_${GITLAB_VER}_arm64.deb/download.deb' -O /tmp/gitlab.deb" + - sed -i "/wget/c$NEW_URL" docker/assets/download-package + - cd docker + - echo "RELEASE_PACKAGE=gitlab-ce" >> RELEASE + - echo "RELEASE_VERSION=$GITLAB_SHORT_VER-ce" >> RELEASE + - echo "DOWNLOAD_URL=http://random.com" >> RELEASE + - sed -i '14 i \ libatomic1 \\' Dockerfile + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - docker build -t $CI_REGISTRY/athens-school/gitlab:$GITLAB_SHORT_VER . + - docker push $CI_REGISTRY/athens-school/gitlab:$GITLAB_SHORT_VER