Jenkinsfile 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /**
  2. * Jenkinsfile 示例代码
  3. * 拷贝使用要记得修改agent和steps内执行项目
  4. */
  5. pipeline {
  6. agent none
  7. stages {
  8. // 生产
  9. // stage('prod build') {
  10. // // 当分支为master的时候执行
  11. // when {
  12. // branch 'master'
  13. // beforeAgent true // 设置 beforeAgent 为 true 来避免直接运行 docker 容器
  14. // }
  15. // // 自动构建项目根目录下的 Dockerfile 文件,并使用其为运行容器
  16. // agent { dockerfile true }
  17. // // 一些额外的选项
  18. // options {
  19. // // 失败则重试三次
  20. // retry(3)
  21. // }
  22. // steps {
  23. // // 在容器中执行 shell
  24. // sh 'composer'
  25. // // 在jenkins输出中打印信息
  26. // echo '一些有用的信息'
  27. // }
  28. // }
  29. // 开发环境
  30. stage('main build') {
  31. when {
  32. branch 'main'
  33. beforeAgent true
  34. }
  35. // 在标签为 'test80' 的服务器上执行
  36. agent { label 'devPhp80' }
  37. // 复杂参数 docker
  38. // agent {
  39. // docker {
  40. // label 'test80' // 使用 label 为 test80 的节点为宿主机运行docker
  41. // image 'php:7.4-cli'
  42. // args '-d -p 13333:8080 -d -w /usr/src/app -v $PWD:/usr/src/app' // 参数
  43. // }
  44. // }
  45. steps {
  46. echo 'master step执行完了'
  47. }
  48. }
  49. //测试环境
  50. stage('test build') {
  51. when {
  52. branch 'test'
  53. beforeAgent true
  54. }
  55. // 在标签为 'test80' 的服务器上执行
  56. agent { label 'devPhp80' }
  57. // 复杂参数 docker
  58. // agent {
  59. // docker {
  60. // label 'test80' // 使用 label 为 test80 的节点为宿主机运行docker
  61. // image 'php:7.4-cli'
  62. // args '-d -p 13333:8080 -d -w /usr/src/app -v $PWD:/usr/src/app' // 参数
  63. // }
  64. // }
  65. steps {
  66. echo '拷贝后端测试环境变量'
  67. sh '''
  68. cd api
  69. cp ./dotenv/.test.env .env
  70. cd ..
  71. '''
  72. echo '拷贝后台测试环境变量'
  73. sh '''
  74. cd h5
  75. cp ./dotenv/test-on-server.test.env .env
  76. cd ..
  77. '''
  78. echo '构建前端'
  79. sh 'npm update && npm run build:test-on-server'
  80. echo 'test step执行完了'
  81. }
  82. }
  83. // 没有when也就是任意时候都会执行
  84. stage('after build') {
  85. agent any // 在任何可用的代理上执行流水线或阶段,没有多节点的情况下其实就是直接执行shell啦。。
  86. steps {
  87. echo '结束了Always excecute after other stages.'
  88. }
  89. }
  90. }
  91. // 根据执行结果执行
  92. post {
  93. // 失败
  94. failure {
  95. echo 'FAILURE MESSAGE'
  96. }
  97. // 成功
  98. success {
  99. echo 'SUCCESS MESSAGE'
  100. }
  101. }
  102. }