stages:
  - validate
  - test
  - release
  - deploy
  - web_deploy

.puppet_def: &puppet_job_def
  stage: test
  script:
    - gem update --system > /dev/null
    - gem install bundler > /dev/null
    - bundle install --without development validate
    - bundle exec puppet module install puppetlabs-stdlib
    - bundle exec rake spec
  tags:
    - ruby

web_trigger_staging:
  stage: web_deploy
  variables:
    REF: staging
  only:
    - master
  script:
    - "curl -X POST -F token=$PREPL_BUILD_TRIGGER_TOKEN -F ref=$REF https://gitlab.com/api/v3/projects/1146764/trigger/builds"

rubocop_ruby:
  stage: validate
  allow_failure: true
  only:
    - branches
  tags:
    - ruby
  script:
    - bundle install
    - bundle exec rubocop -D

bump_and_tag:
  stage: release
  when: manual
  tags:
    - ruby2.2
  only:
    - master@puppet-debugger/puppet-debugger
  script:
    - gem install release_me
    - bump_and_tag

#web_trigger_production:
#  type: web_deploy
#  variables:
#    REF: production
#  only:
#    - tags
#  tags:
#    - ruby
#  script:
#    - "curl -X POST -F token=$PREPL_BUILD_TRIGGER_TOKEN -F ref=$REF https://gitlab.com/api/v3/projects/1146764/trigger/builds"

.ruby_21: &ruby21
  image: ruby:2.1
  script:
    - gem install bundler -v 1.17.3 > /dev/null
    - bundle install --without development validate
    - bundle exec puppet module install puppetlabs-stdlib
    - bundle exec rake spec

.ruby_22: &ruby22
  image: ruby:2.2
  script:
    - gem install bundler -v 1.17.3 > /dev/null
    - bundle install --without development validate
    - bundle exec puppet module install puppetlabs-stdlib
    - bundle exec rake spec

.ruby_23: &ruby23
  image: ruby:2.3

.ruby_24: &ruby24
  image: ruby:2.4

.ruby_25: &ruby25
  image: ruby:2.5

.ruby_26: &ruby26
  image: ruby:2.6

.ruby_27: &ruby27
  image: ruby:2.7

gem_production:
  image: ruby:2.5
  tags:
    - ruby
  before_script:
    - gem install dpl
  stage: deploy
  script:
    - dpl --provider=rubygems --api-key=$RUBYGEMS_API_KEY
  only:
    - tags

puppet_410_ruby24:
  allow_failure: true
  variables:
    PUPPET_GEM_VERSION: "~> 4.10"
  <<: *puppet_job_def
  <<: *ruby24

puppet_5_ruby24:
  variables:
    PUPPET_GEM_VERSION: "~> 5.5"
  <<: *puppet_job_def
  <<: *ruby24

puppet_6_ruby25:
  variables:
    PUPPET_GEM_VERSION: "~> 6.0"
  <<: *puppet_job_def
  <<: *ruby25

puppet_6_ruby26:
  variables:
    PUPPET_GEM_VERSION: "~> 6.0"
  <<: *puppet_job_def
  <<: *ruby26

puppet_6_ruby27:
  allow_failure: true
  variables:
    PUPPET_GEM_VERSION: "~> 6.0"
  <<: *puppet_job_def
  <<: *ruby27