.gitlab-ci.yml in development-toolbox-0.1.0 vs .gitlab-ci.yml in development-toolbox-0.2.0

- old
+ new

@@ -1,19 +1,90 @@ -# This file is a template, and might need editing before it works on your project. -# Official language image. Look for the different tagged releases at: -image: ruby:latest +# See documentation at https://docs.gitlab.com/ee/ci/yaml/README.html +variables: + CI_REGISTRY_IMAGE_LATEST: $CI_REGISTRY_IMAGE:latest + CI_REGISTRY_IMAGE_STABLE: $CI_REGISTRY_IMAGE:stable -# Cache gems in between builds -cache: - paths: - - .bundle +stages: +- test +- deploy -# This is a basic example for a gem or script which doesn't use -# services such as redis or postgres -before_script: -- ruby -v # Print out ruby version for debugging -- gem install bundler --no-ri --no-rdoc # Bundler is not installed with the image -- bundle install -j $(nproc) --path=".bundle" # Install dependencies into ./.bundle +.docker_build: &docker + image: docker:latest + services: + - docker:dind + before_script: + - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY -rake: +.ruby_build: &ruby + image: $CI_REGISTRY_IMAGE_LATEST + # Cache gems in between builds + cache: + paths: + - /cache + # This is a basic example for a gem or script which doesn't use + # services such as redis or postgres + before_script: + - ruby -v # Print out ruby version for debugging + - gem install bundler --no-ri --no-rdoc # Bundler is not installed with the image + - bundle install -j $(nproc) --path=".bundle" # Install dependencies into ./.bundle + +.release_docker_image: &release_docker_image + <<: *docker + stage: deploy script: - - rake + - echo "Releasing ${$TARGET_IMAGE} from $CI_REGISTRY_IMAGE_LATEST" + - docker pull $CI_REGISTRY_IMAGE_LATEST + - docker tag $CI_REGISTRY_IMAGE_LATEST ${$TARGET_IMAGE} + - docker push ${$TARGET_IMAGE} + +test: + <<: *ruby + script: bin/rake test + stage: test + artifacts: + paths: + - Gemfile.lock + - spec/reports + - coverage + +doc: + <<: *ruby + script: bin/rake doc + stage: test + artifacts: + paths: + - doc + +build latest docker: + <<: *docker + stage: deploy + only: + - develop + dependencies: + - test + script: + - echo "Building $CI_REGISTRY_IMAGE_LATEST" + - docker build --pull -t $CI_REGISTRY_IMAGE_LATEST . + - docker push $CI_REGISTRY_IMAGE_LATEST + +build stable docker: + <<: *docker + stage: deploy + only: + - master + dependencies: + - test + script: + - echo "Building $CI_REGISTRY_IMAGE_STABLE" + - docker build --pull -t $CI_REGISTRY_IMAGE_STABLE . + - docker push $CI_REGISTRY_IMAGE_STABLE + +build_gem: + <<: *ruby + script: bin/rake build + only: + - develop + stage: deploy + artifacts: + paths: + - doc + - pkg