Skip to content
Snippets Groups Projects
Commit 9eb851d1 authored by Dean Lovett's avatar Dean Lovett
Browse files

Initial commit

parents
No related branches found
No related tags found
No related merge requests found
image: docker:latest
variables:
DOCKER_DRIVER: overlay2
IMAGE_NAME: gitlab.nexdev.uk:5555/web-dev/users
stages:
- prebuild
- build
- testing
- release
- deploy
docker_lint:
stage: prebuild
image: hadolint/hadolint:latest-debian
script:
# Ignoring DL3008 - Pin Versions of apt-get modules
- hadolint --ignore DL3008 Dockerfile
tags:
- nexus_runner
build_image:
stage: build
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN gitlab.nexdev.uk:5555
- docker build -t $IMAGE_NAME:$CI_COMMIT_SHA .
- docker push $IMAGE_NAME:$CI_COMMIT_SHA
tags:
- nexus_runner
rubocop_lint:
variables:
PRONTO_GITLAB_API_ENDPOINT: "https://gitlab.nexdev.uk/api/v4"
stage: testing
image: $IMAGE_NAME:$CI_COMMIT_SHA
script:
- cd /builds/web-dev/users
- git fetch
# - bundle exec pronto run -c=origin/master --exit-code -f gitlab
tags:
- nexus_runner
dependency_scanning:
stage: testing
image: ruby:2.6.2
allow_failure: true
script:
- gem install bundler-audit
- bundle audit check --update
artifacts:
paths: [gl-dependency-scanning-report.json]
tags:
- nexus_runner
test:unit:
stage: testing
image: $IMAGE_NAME:$CI_COMMIT_SHA
services:
- name: postgres:12.2
alias: user_db
- name: mysql:5.6
alias: mysql
variables:
# Set variables for the MySQL image
FW_DB_TEST_HOST: mysql
MYSQL_DATABASE: nexus_api_forum_test
MYSQL_USER: runner
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
OTP_ENC_KEY: 'avQrhpsxSNtx26xdM6M65Z7KUARctq5z'
TWILIO_NUMBER: '+15005550006'
TWILIO_SID: 'ACe28fd8b14f682e46536a3a2910f5ea0e'
TWILIO_TOKEN: 'd117d8463ebf05cf8ed5b9584b1a6d66'
POSTGRES_PASSWORD: password
script:
- bundle exec rake db:create RAILS_ENV=test
- bundle exec rake db:migrate RAILS_ENV=test
- bundle exec rake fw_test_db:import_forum RAILS_ENV=test
- COVERAGE=true bundle exec rspec --format documentation
tags:
- nexus_runner
test:integration:
stage: testing
image: $IMAGE_NAME:$CI_COMMIT_SHA
allow_failure: true
services:
- name: postgres:12.2
alias: user_db
- name: mysql:5.6
alias: mysql
variables:
# Set variables for the MySQL image
FW_DB_TEST_HOST: mysql
MYSQL_DATABASE: nexus_api_forum_test
MYSQL_USER: runner
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
OTP_ENC_KEY: 'avQrhpsxSNtx26xdM6M65Z7KUARctq5z'
TWILIO_NUMBER: '+15005550006'
TWILIO_SID: 'ACe28fd8b14f682e46536a3a2910f5ea0e'
TWILIO_TOKEN: 'd117d8463ebf05cf8ed5b9584b1a6d66'
POSTGRES_PASSWORD: password
script:
- bundle exec rake db:create RAILS_ENV=test
- bundle exec rake db:migrate RAILS_ENV=test
- bundle exec rake fw_test_db:import_forum RAILS_ENV=test
- bundle exec rspec --format documentation --tag integration
tags:
- nexus_runner
release:version:
image: gitlab.nexdev.uk:5555/pub/nexus-release-image/master
stage: release
before_script:
- eval $(ssh-agent -s)
- echo "$CI_DEPLOY_KEY" | tr -d '\r' | ssh-add -
- ssh-keyscan gitlab.nexdev.uk >> ~/.ssh/known_hosts
script:
- /build/release.sh
tags:
- nexus_runner
only:
- master
release_staging:
stage: release
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN gitlab.nexdev.uk:5555
- docker tag $IMAGE_NAME:$CI_COMMIT_SHA $IMAGE_NAME:staging
- docker push $IMAGE_NAME:$CI_COMMIT_SHA
- docker push $IMAGE_NAME:staging
only:
- staging
tags:
- nexus_runner
deploy_staging:
stage: deploy
image: nexusmods/gitlab-ci-kube-deploy
script:
- mkdir /root/.kube
- echo "$STAGING_KUBE_CONFIG" > /root/.kube/config
- kubectl apply -f deploy/staging
- kubectl -n staging-nexus set image deployment/users users=$IMAGE_NAME:$CI_COMMIT_SHA
environment: staging
when: manual
except:
- master
tags:
- nexus_runner
release:
stage: release
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN gitlab.nexdev.uk:5555
- docker tag $IMAGE_NAME:$CI_COMMIT_SHA $IMAGE_NAME:latest
- docker push $IMAGE_NAME:$CI_COMMIT_SHA
- docker push $IMAGE_NAME:latest
only:
- release
- master
tags:
- nexus_runner
deploy_production:
stage: deploy
image: nexusmods/gitlab-ci-kube-deploy
script:
- mkdir /root/.kube
- echo "$KUBE_CONFIG" > /root/.kube/config
- kubectl apply -f deploy/production
- kubectl -n production set image deployment/users users=$IMAGE_NAME:$CI_COMMIT_SHA
environment: production
only:
- master
tags:
- nexus_runner
\ No newline at end of file
rails-base-image-builder
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment