pipeline案例

前端nodejs

  1. // 公共
  2. def registry = "192.168.16.18"
  3. // 项目
  4. def project = "scm-dev"
  5. def app_name = "batar-scm-web"
  6. def image_name = "${registry}/${project}/${app_name}:1.${BUILD_NUMBER}" // ${BUILD_NUMBER} 为tag标签 获取Jenkins构建时的编号(累计+1)
  7. def git_address = "http://192.168.16.20/batar-scm/scn-web.git"
  8. // 认证
  9. def secret_name = "registry-pull-secret"
  10. def docker_registry_auth = "3883fa5e-4067-41c7-87d4-238142944c84"
  11. def git_auth = "35e81e5f-3d31-4d31-8190-2a47820683b3"
  12. //def k8s_auth = "d2374738-3c6f-4077-aa55-186b74c50002"
  13. pipeline {
  14. agent {
  15. label "k8s-master(16.24)"
  16. }
  17. stages {
  18. stage('拉取代码') {
  19. steps {
  20. checkout([$class: 'GitSCM',
  21. branches: [[name: '*/dev']],
  22. doGenerateSubmoduleConfigurations: false,
  23. extensions: [],
  24. submoduleCfg: [],
  25. userRemoteConfigs: [[credentialsId: "${git_auth}",
  26. url: "${git_address}"]]])
  27. }
  28. }
  29. stage('编译代码') {
  30. steps {
  31. sh """
  32. source /root/.bashrc
  33. cnpm install
  34. echo y| fef test
  35. """
  36. }
  37. }
  38. stage('镜像制作') {
  39. steps {
  40. sh """
  41. echo '
  42. FROM nginx
  43. LABEL maintainer fengyuanfei
  44. RUN rm -rf /usr/share/nginx/html/* \
  45. && rm -f /etc/localtime \
  46. && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  47. && echo "Asia/Shanghai" > /etc/timezone
  48. COPY dist /usr/share/nginx/html/
  49. WORKDIR /usr/share/nginx
  50. EXPOSE 80
  51. ' > Dockerfile
  52. docker build -t ${image_name} .
  53. docker login -u admin -p Harbor12345 ${registry}
  54. docker push ${image_name}
  55. docker rmi ${image_name}
  56. """
  57. }
  58. }
  59. stage('部署到k8s') {
  60. steps {
  61. sh """
  62. cp /root/batar/scm/scm-web-deply.yaml ./dev-scm-web-deploy.yaml
  63. sed -i 's#BATAR#scm-web-dev#g' dev-scm-web-deploy.yaml
  64. sed -i 's#IMAGE#"${image_name}"#g' dev-scm-web-deploy.yaml
  65. sed -i 's#NAMESPACE#dev#g' dev-scm-web-deploy.yaml
  66. sed -i 's#ClusterIP#NodePort#g' dev-scm-web-deploy.yaml
  67. sed -i 's#BBS#31002#g' dev-scm-web-deploy.yaml
  68. kubectl apply -f dev-scm-web-deploy.yaml
  69. """
  70. }
  71. }
  72. }
  73. }

后端java项目

  1. // 公共
  2. def registry = "192.168.16.18"
  3. // 项目
  4. def project = "scm-dev"
  5. def app_name = "batar-scm"
  6. def image_name = "${registry}/${project}/${app_name}:1.${BUILD_NUMBER}"
  7. def git_address = "http://192.168.16.20/batar-scm/scm-manage.git"
  8. // 认证
  9. def secret_name = "registry-pull-secret"
  10. def docker_registry_auth = "3883fa5e-4067-41c7-87d4-238142944c84"
  11. def git_auth = "35e81e5f-3d31-4d31-8190-2a47820683b3"
  12. //def k8s_auth = "d2374738-3c6f-4077-aa55-186b74c50002"
  13. pipeline {
  14. agent none
  15. stages {
  16. stage('拉取代码') {
  17. agent { node { label "oms+bms(16.8)"} }
  18. steps {
  19. checkout([$class: 'GitSCM',
  20. branches: [[name: '*/dev']],
  21. doGenerateSubmoduleConfigurations: false,
  22. extensions: [],
  23. submoduleCfg: [],
  24. userRemoteConfigs: [[credentialsId: "${git_auth}",
  25. url: "${git_address}"]]])
  26. }
  27. }
  28. stage('编译代码') {
  29. agent { node { label "oms+bms(16.8)"} }
  30. steps {
  31. sh """
  32. pwd && ls
  33. /application/maven/bin/mvn clean install -Dmaven.test.skip=true
  34. """
  35. }
  36. }
  37. stage('镜像制作') {
  38. agent { node { label "oms+bms(16.8)"} }
  39. steps {
  40. sh """
  41. sudo docker ps
  42. sudo docker login -u admin -p Harbor12345 ${registry}
  43. sudo docker build --build-arg JAR_FILE=./target/*.jar -t ${image_name} .
  44. sudo docker push ${image_name}
  45. sudo docker rmi ${image_name}
  46. """
  47. }
  48. }
  49. stage('部署到k8s') {
  50. agent { node { label "k8s-master(16.24)"} }
  51. steps {
  52. sh """
  53. cp /root/batar/scm/batar-delpoy.yaml ./dev-scm-deploy.yaml
  54. sed -i 's#BATAR#scm-dev#g' dev-scm-deploy.yaml
  55. sed -i 's#IMAGE#"${image_name}"#g' dev-scm-deploy.yaml
  56. sed -i 's#NAMESPACE#dev#g' dev-scm-deploy.yaml
  57. sed -i 's#ZZZ#8080#g' dev-scm-deploy.yaml
  58. sed -i 's#ClusterIP#NodePort#g' dev-scm-deploy.yaml
  59. sed -i 's#BBS#31001#g' dev-scm-deploy.yaml
  60. kubectl apply -f dev-scm-deploy.yaml
  61. """
  62. }
  63. }
  64. }
  65. }