Jenkinsfile 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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('test build') {
  31. when {
  32. branch 'test'
  33. beforeAgent true
  34. }
  35. // 使用 docker 镜像 php:7.4-cli 为运行容器
  36. agent { docker 'php:7.4-cli' }
  37. steps {
  38. sh 'php --version'
  39. }
  40. }
  41. // 生产环境
  42. stage('dev build') {
  43. when {
  44. branch 'dev'
  45. beforeAgent true
  46. }
  47. // 在标签为 'test80' 的服务器上执行
  48. agent { label 'test80' }
  49. // 复杂参数 docker
  50. // agent {
  51. // docker {
  52. // label 'test80' // 使用 label 为 test80 的节点为宿主机运行docker
  53. // image 'php:7.4-cli'
  54. // args '-d -p 13333:8080 -d -w /usr/src/app -v $PWD:/usr/src/app' // 参数
  55. // }
  56. // }
  57. steps {
  58. sh '''cat ./file_need_to_merge
  59. pwd
  60. uname -a
  61. ifconfig
  62. cat /proc/1/cgroup || true
  63. '''
  64. }
  65. }
  66. // 没有when也就是任意时候都会执行
  67. stage('after build') {
  68. agent any // 在任何可用的代理上执行流水线或阶段,没有多节点的情况下其实就是直接执行shell啦。。
  69. /*
  70. agent { lable: 'maybe-server' } // 在lable为xxx的节点上运行
  71. */
  72. steps {
  73. echo 'Always excecute after other stages.'
  74. }
  75. }
  76. }
  77. // 根据执行结果执行
  78. post {
  79. // 失败
  80. failure {
  81. echo 'FAILURE MESSAGE'
  82. }
  83. // 成功
  84. success {
  85. echo 'SUCCESS MESSAGE'
  86. }
  87. }
  88. }