Jenkinsfile 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. node {
  2. checkout scm
  3. result = sh(script: "git log -1 | grep '(wip)'", returnStatus: true)
  4. if (result == 0) {
  5. echo "Skipping commit"
  6. } else {
  7. script {
  8. IMAGE_BACKEND = sh(returnStdout: true, script: "cd gmus-backend && make get_image").trim()
  9. IMAGE_WEB = sh(returnStdout: true, script: "cd gmus-web && make get_image").trim()
  10. }
  11. stage('Build and push images') {
  12. script {
  13. docker.withRegistry('https://docker.fela.space', 'docker.fela.space-registry') {
  14. sh 'REACT_APP_API_URL=//gmus.fela.space/api make build.docker push'
  15. }
  16. }
  17. }
  18. docker.withRegistry('https://docker.fela.space', 'docker.fela.space-registry') {
  19. docker.image('postgres:10-alpine').withRun('-e POSTGRES_USER=docker -e POSTGRES_PASSWORD=docker') { pg ->
  20. docker.image('postgres:10-alpine').inside("--link ${pg.id}:db") {
  21. sh 'while ! psql postgres://docker:docker@db/postgres -c "select 1" > /dev/null 2>&1; do sleep 1; done'
  22. sh 'psql postgres://docker:docker@db/postgres -c "create database music_player_test;"'
  23. }
  24. docker.image('redis:6-alpine').withRun('') { redis ->
  25. stage('Lint') {
  26. parallel([
  27. "gmus-web:lint": {
  28. sh "docker run -e 'CI=1' --rm docker.fela.space/gmus-web-builder:latest sh -c 'yarn lint'"
  29. },
  30. "gmus-backend:lint": {
  31. sh "docker run --rm ${IMAGE_BACKEND} sh -c 'make lint'"
  32. }
  33. ])
  34. }
  35. stage('Test') {
  36. parallel([
  37. "gmus-web:unit tests": {
  38. sh "docker run --rm -e 'CI=1' -e 'REACT_APP_API_URL=http://my-api.url:1234' docker.fela.space/gmus-web-builder:latest sh -c 'yarn test'"
  39. },
  40. "gmus-backend:tests": {
  41. sh "docker run --rm --link ${pg.id}:db --link ${redis.id}:redis ${IMAGE_BACKEND} sh -c 'make test.ci'"
  42. }
  43. ])
  44. }
  45. }
  46. }
  47. }
  48. stage('Deploy') {
  49. if (env.BRANCH_NAME == "master") {
  50. sh 'LIBRARY_DIRECTORY=/data/user/music/ogg ./k8s/deploy.sh'
  51. }
  52. }
  53. }
  54. }