Jenkinsfile 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. IMAGE_MOBILE = sh(returnStdout: true, script: "cd gmus-mobile && make get_image").trim()
  11. }
  12. stage('Build and push images') {
  13. script {
  14. docker.withRegistry('https://docker.fela.space', 'docker.fela.space-registry') {
  15. sh 'REACT_APP_API_URL=//gmus.fela.space/api make build.docker push'
  16. }
  17. }
  18. }
  19. docker.withRegistry('https://docker.fela.space', 'docker.fela.space-registry') {
  20. docker.image('postgres:10-alpine').withRun('-e POSTGRES_USER=docker -e POSTGRES_PASSWORD=docker') { pg ->
  21. docker.image('postgres:10-alpine').inside("--link ${pg.id}:db") {
  22. sh 'while ! psql postgres://docker:docker@db/postgres -c "select 1" > /dev/null 2>&1; do sleep 1; done'
  23. sh 'psql postgres://docker:docker@db/postgres -c "create database music_player_test;"'
  24. }
  25. docker.image('redis:6-alpine').withRun('') { redis ->
  26. stage('Lint') {
  27. parallel([
  28. "gmus-web:lint": {
  29. sh "docker run -e 'CI=1' --rm docker.fela.space/gmus-web-builder:latest sh -c 'make lint'"
  30. },
  31. "gmus-backend:lint": {
  32. sh "docker run --rm ${IMAGE_BACKEND} sh -c 'make lint'"
  33. }
  34. ])
  35. }
  36. stage('Test') {
  37. parallel([
  38. "gmus-web:unit tests": {
  39. 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 'make test'"
  40. },
  41. "gmus-mobile:unit tests": {
  42. sh "docker run --rm ${IMAGE_MOBILE} sh -c 'flutter test'"
  43. },
  44. "gmus-backend:tests": {
  45. sh "docker run --rm --link ${pg.id}:db --link ${redis.id}:redis ${IMAGE_BACKEND} sh -c 'make test.ci'"
  46. }
  47. ])
  48. }
  49. }
  50. }
  51. }
  52. stage('Deploy') {
  53. if (env.BRANCH_NAME == "master") {
  54. sh 'LIBRARY_DIRECTORY=$GMUS_LIBRARY_DIRECTORY ./k8s/deploy.sh'
  55. }
  56. }
  57. }
  58. }