Newer
Older
#workflow:
# rules:
# - if: $CI_PIPELINE_SOURCE == "merge_request_event"
# - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
# - if: $CI_PIPELINE_SOURCE == "web"
GIT_SUBMODULE_STRATEGY: recursive
BASE_IMAGE: build-base:latest
CARGO_INCREMENTAL: 0
CARGO_HOME: ${CI_PROJECT_DIR}/.cargo
REGISTRY_IMAGE: docker-public.binary.picodata.io
RAW_REGISTRY: https://binary.picodata.io/repository/raw-private/
#
# See also:
# GitLab CI/CD predefined variables
# https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
#
# CI_COMMIT_SHA: The commit revision the project is built for
# CI_REGISTRY: The address of the GitLab Container Registry
# CI_REGISTRY_USER: The username to push containers to the project’s
# GitLab Container Registry
# CI_REGISTRY_PASSWORD: The password to push containers to the project’s
# GitLab Container Registry
# CI_REGISTRY_IMAGE: The address of the project’s Container Registry
docker-build-base:
stage: prebuild
image: docker:20
tags:
changes:
- docker-build-base/Dockerfile
before_script:
- mkdir -p $CI_PROJECT_DIR/.docker
- echo $DOCKER_AUTH_RW > $CI_PROJECT_DIR/.docker/config.json
- docker pull ${REGISTRY_IMAGE}/${BASE_IMAGE} || true
- >
docker build
--pull
--label GIT_COMMIT=${CI_COMMIT_SHA}
--cache-from ${REGISTRY_IMAGE}/${BASE_IMAGE}
-t ${REGISTRY_IMAGE}/${BASE_IMAGE}
-f ./docker-build-base/Dockerfile
./docker-build-base
- docker --config $CI_PROJECT_DIR/.docker/ push ${REGISTRY_IMAGE}/${BASE_IMAGE}
image: ${REGISTRY_IMAGE}/${BASE_IMAGE}
# - git submodule foreach --recursive 'git fetch --tags; git describe --always'
- pushd tarantool-sys; git describe; popd
- pushd tarantool-sys/third_party/luajit; git describe; popd
- export RUST_BACKTRACE=1
- cargo clippy --version
- cargo clippy -- --deny clippy::all
- PIPENV_VENV_IN_PROJECT=1 PIP_NO_CACHE_DIR=true python3.10 -m pipenv install --deploy
tags:
- shell
only:
- web
- tags
before_script:
- git submodule update --init --recursive
- git clone https://github.com/packpack/packpack.git packpack
- sed -i "s/(id -u)/(id -u) -o/g" packpack/packpack
script:
- |
pushd tarantool-sys; export VER_TNT=$(git describe --long | sed -n 's/^\([0-9\.]*\)-\([0-9]*\)-\([a-z0-9]*\)/\1.\2/p'); popd
OS=centos DIST=7 PRESERVE_ENVVARS=VER_TNT packpack/packpack
OS=centos DIST=8 PRESERVE_ENVVARS=VER_TNT packpack/packpack
artifacts:
paths:
- build/picodata*.rpm
only:
- web
- tags
before_script:
- git submodule update --init --recursive
- git clone https://github.com/packpack/packpack.git packpack
- git describe --long
script:
- |
pushd tarantool-sys; export VER_TNT=$(git describe --long | sed -n 's/^\([0-9\.]*\)-\([0-9]*\)-\([a-z0-9]*\)/\1.\2/p'); popd
OS=ubuntu DIST=focal PRESERVE_ENVVARS=VER_TNT BUILDDIR=$PWD/build_ubuntu/ RELEASE=${DIST} packpack/packpack
build-package-debian:
tags:
- shell
stage: pack-debian
only:
- web
- tags
before_script:
- git submodule update --init --recursive
- git clone https://github.com/packpack/packpack.git packpack
- git describe --long
script:
- |
pushd tarantool-sys; export VER_TNT=$(git describe --long | sed -n 's/^\([0-9\.]*\)-\([0-9]*\)-\([a-z0-9]*\)/\1.\2/p'); popd
OS=debian DIST=bullseye PRESERVE_ENVVARS=VER_TNT BUILDDIR=$PWD/build_debian/ RELEASE=${DIST} packpack/packpack
artifacts:
paths:
- build_debian/*.deb
sign-rpm-packages:
variables:
DOCKER_AUTH_CONFIG: $DOCKER_AUTH_RO
stage: sign
tags:
- shell
only:
- web
- tags
before_script:
- mkdir -p $CI_PROJECT_DIR/.docker
- echo $DOCKER_AUTH_RW > $CI_PROJECT_DIR/.docker/config.json
- echo "$GPG_KEY_KDY" | base64 -d > build/kdy.asc
script:
- docker run --rm -e KEY_FILE=kdy.asc -v $PWD/build:/build docker-picodata.binary.picodata.io/rpmsign:centos7
artifacts:
paths:
- build/picodata*.rpm
stage: deploy
tags:
- shell
only:
- web
- tags
before_script:
- eval $(ssh-agent -s)
- echo "$DEPLOY_PROD_SSH_KEY" | base64 -d | ssh-add -
script:
- echo "Deploying rpm-centos7-packet..."
- scp -o stricthostkeychecking=no build/picodata*.el7.*rpm ansible@94.26.239.246:/data/nginx/www/packrepo/tarantool-picodata/el/7/x86_64/
- ssh -o stricthostkeychecking=no ansible@94.26.239.246 "cd /data/nginx/www/packrepo/tarantool-picodata/el/7/ && createrepo --update x86_64 && gpg --no-tty --yes -u kdy@picodata.io --detach-sign --armor x86_64/repodata/repomd.xml"
- echo "rpm-centos7-packet successfully deployed."
- echo
# CentOS 8
- echo "Deploying rpm-centos8-packet..."
- scp -o stricthostkeychecking=no build/picodata*.el8.*rpm ansible@94.26.239.246:/data/nginx/www/packrepo/tarantool-picodata/el/8/x86_64/
- ssh -o stricthostkeychecking=no ansible@94.26.239.246 "cd /data/nginx/www/packrepo/tarantool-picodata/el/8/ && createrepo --update x86_64 && gpg --no-tty --yes -u kdy@picodata.io --detach-sign --armor x86_64/repodata/repomd.xml"
- echo "rpm-centos8-packet successfully deployed."
- echo
# Ubuntu
- echo "Deploying ubuntu deb-packets..."
- ssh -o stricthostkeychecking=no ansible@94.26.239.246 "mkdir -p ~/.deb/ubuntu"
- scp -o stricthostkeychecking=no build_ubuntu/picodata*deb ansible@94.26.239.246:.deb/ubuntu/
- ssh -o stricthostkeychecking=no ansible@94.26.239.246 "reprepro -b /data/nginx/www/packrepo/tarantool-picodata/ubuntu/ -C main includedeb focal ~/.deb/ubuntu/picodata*focal*deb; rm ~/.deb/ubuntu/picodata*focal*deb"
- echo "ubuntu deb-packets successfully deployed."
- echo
# Debian
- echo "Deploying debian packets..."
- ssh -o stricthostkeychecking=no ansible@94.26.239.246 "mkdir -p ~/.deb/debian"
- scp -o stricthostkeychecking=no build_debian/picodata*deb ansible@94.26.239.246:.deb/debian/
- ssh -o stricthostkeychecking=no ansible@94.26.239.246 "reprepro -b /data/nginx/www/packrepo/tarantool-picodata/debian/ -C main includedeb bullseye ~/.deb/debian/picodata*bullseye*deb; rm ~/.deb/debian/picodata*bullseye*deb"
- echo "debian packets successfully deployed."
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
dependencies:
- build-package-ubuntu
- build-package-debian
- sign-rpm-packages
test_el7:
stage: test_rpm
only:
- web
- tags
tags: [docker]
image: centos:7
before_script:
- rpm --import https://download.picodata.io/tarantool-picodata/el/RPM-GPG-KEY-kdy
- yum install -y https://download.picodata.io/tarantool-picodata/el/7/x86_64/picodata-release-1.1.0.11-1.el7.x86_64.rpm
script:
- yum install -y picodata
test_el8:
stage: test_rpm
only:
- web
- tags
tags: [docker]
image: rockylinux:8
before_script:
- rpm --import https://download.picodata.io/tarantool-picodata/el/RPM-GPG-KEY-kdy
- yum install -y https://download.picodata.io/tarantool-picodata/el/8/x86_64/picodata-release-1.1.0.11-1.el8.x86_64.rpm
script:
- yum install -y picodata