Merge pull request #33 from turniere/ticket/TURNIERE-155

Use GitLab CI pipeline for test, build and deploy
This commit is contained in:
Daniel Schädler 2019-04-24 21:45:38 +02:00 committed by GitHub
commit ffc1b7c19e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 108 additions and 2 deletions

38
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,38 @@
stages:
- test
- build
- deploy
rails spec:
stage: test
image: ruby:2.6.2
script:
- bundle install --path /cache
- bundle exec rails db:migrate RAILS_ENV=test
- bundle exec rails spec
kaniko:
stage: build
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:latest --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
kubernetes:
stage: deploy
only:
- master
image: ruby
variables:
KUBERNETES_SERVICE_ACCOUNT_OVERWRITE: gitlab-deploy
script:
- curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
- chmod +x kubectl
- mv kubectl /usr/bin/kubectl
- kubectl config set-cluster k8s --server="https://kubernetes.default.svc" --certificate-authority=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
- kubectl config set-credentials sa --token="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)"
- kubectl config set-context local --cluster=k8s --user=sa --namespace=turniere
- gem install kubernetes-deploy
- REVISION=$CI_COMMIT_SHA kubernetes-deploy --template-dir kubernetes turniere local

View File

@ -1,4 +1,4 @@
# turniere-backend [![Build Status](https://travis-ci.org/turniere/turniere-backend.svg?branch=master)](https://travis-ci.org/turniere/turniere-backend) [![Coverage Status](https://coveralls.io/repos/github/turniere/turniere-backend/badge.svg)](https://coveralls.io/github/turniere/turniere-backend)
# turniere-backend [![pipeline status](https://gitlab.com/turniere/turniere-backend/badges/master/pipeline.svg)](https://gitlab.com/turniere/turniere-backend/commits/master) [![Coverage Status](https://coveralls.io/repos/gitlab/turniere/turniere-backend/badge.svg?branch=ticket%2FTURNIERE-155)](https://coveralls.io/gitlab/turniere/turniere-backend?branch=ticket%2FTURNIERE-155)
Ruby on Rails application serving as backend for turnie.re
# Installation

View File

@ -1 +1 @@
Y4UIuVqLavjXmFEOE+O7Au4QNdTdrtAWHnwX/cPi8iPFOJ+UqbTh3MEtMv14eZuT6nZrcM/hHq5JgeiVWzqo2HPG3n2pKTOT6Vq9XNKdBnjsrnjvmiPUTKV+rLOJt3jyzU9UUL/TZr+fNFGvukvPX+7jfqcS05SFwZyfTUmjXC8Z4taZl2pxrE5x52grwgIF7Gi0LzPhJEMGJcp2vD2CzmJHMtrw6X5ZXFS6ps1w/j8xpiTtXz4QjCJKUo1q42jg+Vx+ksokFb/RDvd/JiK9llSrmmTAjRKZEvAlKjzSqF6VCXKwlAO4/i9Hw8cvKG10AtZoN/pLTs21R4OvpGJtOMkuPaRQeGIpdwCZAr+2Igwm2tY0SlzfYinMCiGPNvZ/fzRgQ6jnUdXBO/Hx+ovgsx1K1YlNeyKWbXCE--cJq+CSeYnVuFylpi--tT3Rzku2Nhrvw2rrKkwYig==
a/Vh9cLLEd1hfBWkDT1nYmMfT4R/BgM3FMeZCBgaghdJ2O5r5+Fv68PtkdPgNlLObecjswDHrB9G4a6asUuHs9gDNSr1cppsCIFYEPMOxc+UFBxsJI7xD5G5Cz4MSXRg8awKLV5tRj/WG5f5TK3IlvCisqp/MqsHpWVrr0Phyi+GxEiqDqmAT+da5b0DISm+LTMLsSJPpSCTSwg0i8K0PNx6DLEHx0gSjFL8AYkjij2a0IyuOeCWGmhVJLtK/nRIS13ZG9kGlugiCambSbS/2jqh+FAk24pdW1ehEj2Aeho+UTq/Q6UGUGfyJXtsSmv94HGNd4hDOCv5Rl1syzHMgeybC8TxIWWkq2hFp8eaeZlUM/XJJY/SeWrnCQKnVRN/Q7U06sPhXr/mJ3QdAt5h5MVRgEX7HmZg97KN--61sCxyaYwUNHTLta--RPxslZdR5UsB1Jko8C/H2w==

View File

@ -0,0 +1,28 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend-deployment
namespace: turniere
labels:
app: turniere-backend
spec:
replicas: 1
selector:
matchLabels:
app: turniere-backend
template:
metadata:
labels:
app: turniere-backend
spec:
containers:
- name: backend-container
image: registry.gitlab.com/turniere/turniere-backend:<%= current_sha %>
ports:
- containerPort: 3000
env:
- name: RAILS_MASTER_KEY
valueFrom:
secretKeyRef:
name: turniere-secret
key: master.key

11
kubernetes/secrets.ejson Normal file
View File

@ -0,0 +1,11 @@
{
"_public_key": "c837fba31b5cd2adb6809c23818e9ee1bc7a85f585f8bf9bca767f6e6e71db39",
"kubernetes_secrets": {
"turniere-secret": {
"_type": "Opaque",
"data": {
"master.key": "EJ[1:QEauT9a+p+4WLCIpVRIVafEN6KemhM544B3bx67Gyg4=:/2xjJ3RseqBy6JORX9vkaFv3pnhWYELB:KQvFX2W4aLBquluKJikYeO/sp2TOUROxGU8qj941EMk0vxapeGEh9CdQ9Rit1B+e]"
}
}
}
}

29
kubernetes/service.yml Normal file
View File

@ -0,0 +1,29 @@
apiVersion: v1
kind: Service
metadata:
name: backend-service
namespace: turniere
spec:
selector:
app: turniere-backend
ports:
- name: http
port: 3000
targetPort: 3000
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: backend-ingress
namespace: turniere
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: api01.turnie.re
http:
paths:
- path: /
backend:
serviceName: backend-service
servicePort: http