azadeh-afzar/OpenMoji-Jekyll-Plugin

View on GitHub
.gitlab-ci.yml

Summary

Maintainability
Test Coverage
# stages of gitlab ci.
stages:
  - test
  - deploy
  - release

# default settings for all ci jobs.
default:
  image: azadehafzarhub/gitlab-ci-ruby-build:latest
  cache:
    paths:
      - vendor/

# job for testing package against default ruby version
# on master branch and send test coverage result to
# codeclimate.
test master branch defaut:
  stage: test
  before_script:
    # setup rbenv.
    - source ~/.bash_profile
    # use default ruby version.
    - rbenv global 3.0.0
    # install dependency gems.
    - bundle config set path 'vendor'
    - bundle install
    # run codeclimate test reporter agent.
    - cc-test-reporter before-build
  # run tests.
  script:
    - cd script && ./test.sh
  # send test coverage result to codeclimate.
  after_script:
    - cc-test-reporter after-build --coverage-input-type simplecov
  only:
    - master

# job for testing package on mon master branch
# and merge requests against other ruby versions.
test master branch ruby 2.7.2:
  stage: test
  before_script:
    # setup rbenv.
    - source ~/.bash_profile
    # use custom ruby version.
    - rbenv global 2.7.2
    # install dependency gems.
    - bundle config set path 'vendor'
    - bundle install
  # run tests.
  script:
    - cd script && ./test.sh
  only:
    - master

# job for testing package on other branches than master
# and merge requests against default version.
test branch ruby default:
  stage: test
  before_script:
    # setup rbenv.
    - source ~/.bash_profile
    # use default ruby version.
    - rbenv global 3.0.0
    # install dependency gems.
    - bundle config set path 'vendor'
    - bundle install
  # run tests.
  script:
    - cd script && ./test.sh
  only:
    - branches
    - merge_requests
  except:
    - master

# job for testing package on other branches than master
# and merge requests against other ruby versions.
test branch ruby 2.7.2:
  stage: test
  before_script:
    # setup rbenv.
    - source ~/.bash_profile
    # use custom ruby version.
    - rbenv global 2.7.2
    # install dependency gems.
    - bundle config set path 'vendor'
    - bundle install
  # run tests.
  script:
    - cd script && ./test.sh
  only:
    - branches
    - merge_requests
  except:
    - master

# release a preview blog for master branch with gitlab pages.
pages:
  stage: deploy
  before_script:
    # setup rbenv.
    - source ~/.bash_profile
    # use ruby version 3.0.0 .
    - rbenv global 3.0.0
    # delete and recreate directory.
    - rm --force --recursive public
    - mkdir public
    # go to blog folder.
    - cd doc/blog
    # install dependency gems.
    - bundle config set path 'vendor'
    - bundle install
  script:
    # generate site with jekyll.
    - bundle exec jekyll build --trace --config ./_config.yml --destination ../../public
  artifacts:
    paths:
      - public
    expire_in: 7 days
  only:
    - tags
  when: manual

# deploy gems to rubygems.org whenever a tag is released.
release to rubygems:
  stage: release
  script:
    # setup rbenv.
    - source ~/.bash_profile
    # use default ruby version.
    - rbenv global 3.0.0
    # create rubygems credential file for auto login.
    - script/ci_rubygems.sh
    # extract tag from git log and strip "v".
    - version=$(git describe --tags)
    - version=${version:1}
    # build and push gem.
    - gem build jekyll-openmoji.gemspec
    - gem push "jekyll-openmoji-$version.gem"
  # only run for new tags.
  only:
    - tags
  when: manual