Jenkinsfile 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. }
  14. // 自动构建项目根目录下的 Dockerfile 文件,并使用其为运行容器
  15. agent { dockerfile true } // agent要放在when后,否则依旧会运行一次docker
  16. // 一些额外的选项
  17. options {
  18. // 失败则重试三次
  19. retry(3)
  20. }
  21. steps {
  22. // 在容器中执行 shell
  23. sh 'composer'
  24. // 在jenkins输出中打印信息
  25. echo '一些有用的信息'
  26. }
  27. }
  28. // 测试环境
  29. stage('test build') {
  30. when {
  31. branch 'test'
  32. }
  33. // 使用 docker 镜像 php:7.4-cli 为运行容器
  34. agent { docker 'php:7.4-cli' }
  35. steps {
  36. sh 'php --version'
  37. }
  38. }
  39. // 生产环境
  40. stage('dev build') {
  41. when {
  42. branch 'dev'
  43. }
  44. // 在标签为 'test80' 的服务器上执行,可以与 docker 等组合使用
  45. def workspace = '/usr/src/app'
  46. agent {
  47. lable: 'test80'
  48. docker {
  49. image {
  50. id: 'php:7.4-cli'
  51. withRun: '-d -p 13333:8080 -d -w ${workspace} -v $PWD:${workspace}' // run 参数
  52. }
  53. }
  54. }
  55. /*
  56. agent {
  57. docker {
  58. image 'php:8.2-cli'
  59. lable: 'develop-server' // 在lable为xxx的节点对应docker容器运行
  60. args: ' --verbose' // 额外的docker参数
  61. }
  62. }
  63. */
  64. steps {
  65. sh 'cat ./file_need_to_merge'
  66. }
  67. }
  68. // 没有when也就是任意时候都会执行
  69. stage('after build') {
  70. agent any // 在任何可用的代理上执行流水线或阶段,没有多节点的情况下其实就是直接执行shell啦。。
  71. /*
  72. agent { lable: 'maybe-server' } // 在lable为xxx的节点上运行
  73. */
  74. steps {
  75. echo 'Always excecute after other stages.'
  76. }
  77. }
  78. }
  79. // 根据执行结果执行
  80. post {
  81. // 失败
  82. failure {
  83. echo 'FAILURE MESSAGE'
  84. }
  85. // 成功
  86. success {
  87. echo 'SUCCESS MESSAGE'
  88. }
  89. }
  90. }