image: docker:git services: - docker:dind stages: - build - test - release variables: TEST_IMAGE: ${CI_REGISTRY_IMAGE}:$CI_BUILD_REF_NAME RELEASE_IMAGE: ${CI_REGISTRY_IMAGE}:latest GITLAB_RUNNER_IMAGE: gitlab/gitlab-runner:alpine before_script: - echo $CI_BUILD_TOKEN | docker login -u gitlab-ci-token --password-stdin ${CI_REGISTRY} build: stage: build script: - apk add --no-cache bash - /bin/bash -n gitlab-ci-git-buildpackage - echo Building ${RELEASE_IMAGE} - docker build -t $TEST_IMAGE . - docker push $TEST_IMAGE test: stage: test variables: CI_CONFIG_PATH: debian/.gitlab-ci.yml script: - echo Testing ${RELEASE_IMAGE} - docker pull ${GITLAB_RUNNER_IMAGE} - docker run --rm --interactive --volume /var/run/docker.sock:/var/run/docker.sock ${GITLAB_RUNNER_IMAGE} exec docker --help - git clone https://salsa.debian.org/debian/pidcat.git - cd pidcat - printf "image\x3a ${TEST_IMAGE}\n\ntest:\n script:\n - /gitlab-ci-git-buildpackage\n" > $CI_CONFIG_PATH - git add $CI_CONFIG_PATH - git config user.name $GITLAB_USER_NAME - git config user.email $GITLAB_USER_EMAIL - git commit $CI_CONFIG_PATH -m $CI_CONFIG_PATH - cat $CI_CONFIG_PATH - docker run --rm --interactive --volume /var/run/docker.sock:/var/run/docker.sock --volume $PWD:$PWD --workdir $PWD --env "CI_CONFIG_PATH=$CI_CONFIG_PATH" ${GITLAB_RUNNER_IMAGE} exec docker --docker-volumes "/var/run/docker.sock:/var/run/docker.sock" --env "HOSTNAME=$HOSTNAME" --env "CI_PROJECT_NAMESPACE=debian" --env "CI_PROJECT_NAME=pidcat" --env "CI_COMMIT_REF_NAME=`git symbolic-ref HEAD --short`" --env "CI_COMMIT_SHA=`git rev-parse HEAD`" --env "CI_CONFIG_PATH=$CI_CONFIG_PATH" test || true release: stage: release script: - echo Publishing ${RELEASE_IMAGE} - docker pull $TEST_IMAGE - docker tag $TEST_IMAGE $RELEASE_IMAGE - docker push $RELEASE_IMAGE only: - master - tags