jenkinsfile 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. node {
  2. service_name = "tzy-admin"
  3. registry = "registry.azure.ipangyou.com/poyi/${service_name}"
  4. try{
  5. stage("source code check out"){
  6. echo "1. Check out project source ..."
  7. dir("projdir"){
  8. git branch: 'master', credentialsId: 'lingxz_git.ipangyou.com', url: 'https://git.ipangyou.com/poyi/tzy-admin.git'
  9. }
  10. dir("confdir") {
  11. git branch: 'master', credentialsId: 'lingxz_git.ipangyou.com', url: 'http://git.ipangyou.com/poyi/deployments.git'
  12. }
  13. }
  14. stage("maven build") {
  15. echo "2. Building java package ..."
  16. dir("projdir"){
  17. sh '$MAVEN_HOME/bin/mvn clean package'
  18. }
  19. }
  20. stage("docker image build") {
  21. echo "3. Building docker image: $registry:$BUILD_NUMBER ..."
  22. dir("projdir"){
  23. sh '''cat > Dockerfile<<EOF
  24. FROM openjdk:8-alpine as final
  25. ADD tzy-admin/target/tzy-admin.jar /app/tzy-admin/target/tzy-admin.jar
  26. #Minimum heap size set to 128mb as Xms128m, and maximum is set to 512 as Xmx512m - to be configured depending on individual needs of the app
  27. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Xmx4096m","-Dserver.port=80","-jar","/app/tzy-admin/target/tzy-admin.jar", "--spring.config.location=file:/app/application.yml,file:/app/application-druid.yml"]
  28. EOF
  29. '''
  30. def image = docker.build("$registry:$BUILD_NUMBER")
  31. image.push()
  32. sh "docker rmi $registry:$BUILD_NUMBER"
  33. }
  34. }
  35. stage("deploy") {
  36. HOST = 'docker.hobbystock.cn'
  37. echo "4. Deploying on server: ${HOST} ..."
  38. dir('confdir') {
  39. // put configuration files
  40. remote = [:]
  41. remote.name = "name"
  42. remote.host = "127.0.0.1"
  43. remote.port = 22100
  44. remote.allowAnyHosts = true
  45. remote.failOnError = true
  46. withCredentials([sshUserPrivateKey(credentialsId: 'root_key_at_hobbystock.cn', usernameVariable:'username', keyFileVariable: 'identity', passphraseVariable: '')]){
  47. remote.user = username
  48. remote.identityFile = identity
  49. sshPut remote: remote, from: 'tyz-admin/configs', into: '.'
  50. }
  51. }
  52. // update docker image
  53. DOCKER_OPTS = "-H tcp://${HOST}:2375 --tlsverify"
  54. network = "app_network"
  55. sh "if [ \$(docker ${DOCKER_OPTS} ps -aq --filter name=${service_name}) ]; then docker ${DOCKER_OPTS} rm -f ${service_name};fi"
  56. EXEC_RUN = """docker ${DOCKER_OPTS} run -d --network ${network} --restart=always -p 80:80 --name ${service_name} \
  57. -e TZ=Asia/Shanghai -e FLUENTD_ENABLED=true -e FLUENTD_HOST=192.168.33.1 -e FLUENTD_PORT=24225 \
  58. -v /root/configs/application.yml:/app/application.yml -v /root/configs/application-druid.yml:/app/application-druid.yml \
  59. -v /root/nfs:/home/tzy \
  60. ${registry}:${BUILD_NUMBER}"""
  61. sh "$EXEC_RUN"
  62. }
  63. } catch (e) {
  64. mail to: '81554636@qq.com,xiaozhou.ling@hobbystock.cn,1169705999@qq.com', body: "${e}", subject: "[DEV]error occurs in building tzy-admin:$BUILD_NUMBER"
  65. throw e
  66. } finally {
  67. }
  68. mail to: '81554636@qq.com,xiaozhou.ling@hobbystock.cn,1169705999@qq.com', body: "success", subject: "[DEV]succeed building tzy-admin:$BUILD_NUMBER"
  69. }