{"id":1923,"date":"2020-08-19T10:22:48","date_gmt":"2020-08-19T10:22:48","guid":{"rendered":"https:\/\/www.ipcpu.com\/?p=1923"},"modified":"2022-08-19T10:23:19","modified_gmt":"2022-08-19T10:23:19","slug":"gitlab-cicd","status":"publish","type":"post","link":"https:\/\/c.ipcpu.com\/2020\/08\/gitlab-cicd\/","title":{"rendered":"gitlab\u5185\u7f6eCICD\u7684\u4f7f\u7528"},"content":{"rendered":"
<\/div>\n

gitlab CICD.md<\/p>\n

\u6982\u8ff0<\/h2>\n

GitLab\u5185\u7f6e\u4e86CI\/CD\u5de5\u5177\uff0c\u76f8\u6bd4\u4e8eJenkins\u7b49\u5de5\u5177\uff0c\u66f4\u52a0\u5feb\u6377\u548c\u65b9\u4fbf\u3002<\/p>\n

GitLab CI\/CD\u7531\u4e00\u4e2a\u540d\u4e3a .gitlab-ci.yml \u7684\u6587\u4ef6\u8fdb\u884c\u914d\u7f6e\uff0c\u8be5\u6587\u4ef6\u4f4d\u4e8e\u4ed3\u5e93\u7684\u6839\u76ee\u5f55\u4e0b\u3002<\/p>\n

\u914d\u7f6e\u6587\u4ef6\u4e2d\u6307\u5b9a\u7684\u811a\u672c\u7531GitLab Runner\u6267\u884c\u3002
\n
\nGitLab Runner \u6709\u56db\u79cd\u8fd0\u884c\u65b9\u5f0f\uff0cShell\u3001DockerinDocker\u3001DockerOutOfDocker\u3001Kaniko\u56db\u79cd\u65b9\u5f0f\uff0cKaniko\u662fGoogle\u4e3a\u4e86\u89e3\u51b3DinD\u548cDooD\u7684\u6743\u9650\u548c\u5b89\u5168\u6027\u63a8\u51fa\u7684\u5de5\u5177\uff0c\u672c\u7ad9\u5176\u4ed6\u6587\u7ae0\u6709\u4ecb\u7ecd\u3002<\/p>\n

.gitlab-ci.yml\u6587\u4ef6\u6837\u4f8b<\/h2>\n

\u8fd9\u91cc\u7684Runner\u4f7f\u7528\u7684\u662fDooD\u6a21\u5f0f\u3002<\/p>\n

\n
image: golang:1.18\n\nstages:\n  - test\n  - codesonarscan\n  - dockerbuild\n  - deploy\n\ntest:\n  stage: test\n\n  before_script:\n    - go env -w GOPROXY=https:\/\/goproxy.cn,direct\n    - go env -w GO111MODULE=on\n  script:\n    - echo \"start test\"\n    - go test .\/... -v >test.json\n\ncodesonarscan:\n  stage: codesonarscan\n  variables:\n    SONAR_TOKEN: \"TOKEN\"\n    SONAR_HOST_URL: \"SONAR_SERVER\"\n    GIT_DEPTH: 0\n  image: sonarsource\/sonar-scanner-cli:latest\n  script:\n    - echo \"start sonar scaning\"\n    - sonar-scanner -Dsonar.projectKey=PROJECT_NAME   -Dsonar.sources=.\n  allow_failure: true\n\ndockerbuild:\n  stage: dockerbuild\n  image: docker:stable\n  before_script:\n    - docker  info    \n  script:\n    - docker login user password \n    - docker  build -t reg.ipcpu.com\/m\/gohelloworld:${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}  \n    - docker      push  reg.ipcpu.com\/m\/gohelloworld:${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}\n\n\ndeploy_staging:\n  stage: deploy\n  image: lwolf\/kubectl_deployer:latest\n  script:\n    - kubectl version\n    - cd k8s\/\n    - sed -i \"s\/__CI_BUILD_REF_SLUG__\/${CI_PROJECT_NAME}-${CI_ENVIRONMENT_SLUG}\/\" deployment.yml \n    - sed -i \"s\/__VERSION__\/${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}\/\" deployment.yml\n    - sed -i \"s\/__CI_REPL_NUMBER__\/1\/\" deployment.yml\n    - kubectl apply -f deployment.yml\n    - kubectl rollout status -f deployment.yml\n    - echo \"Deploy to staging server\"\n  environment:\n    name: staging\n    url: https:\/\/staging.ipcpu.com\n  only:\n  - master\n\n\ndeploy_prod:\n  stage: deploy\n  image: lwolf\/kubectl_deployer:latest\n  script:\n    - kubectl version\n    - cd k8s\/\n    - sed -i \"s\/__CI_BUILD_REF_SLUG__\/${CI_PROJECT_NAME}-${CI_ENVIRONMENT_SLUG}\/\" deployment.yml \n    - sed -i \"s\/__VERSION__\/${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}\/\" deployment.yml\n    - sed -i \"s\/__CI_REPL_NUMBER__\/4\/\" deployment.yml\n    - kubectl apply -f deployment.yml\n    - kubectl rollout status -f deployment.yml\n    - echo \"Deploy to production server\"\n  environment:\n    name: production\n    url: https:\/\/www.ipcpu.com\n  when: manual\n  only:\n  - master\n\n<\/code><\/pre>\n<\/div>\n

\u5f53\u9879\u76ee\u4ee3\u7801\u66f4\u65b0\u540e\uff0cCICD\u6d41\u7a0b\u4f1a\u81ea\u52a8\u6267\u884c\uff1a
\n
\n\u5982\u679c\u60f3\u8981\u624b\u52a8\u64cd\u4f5c\u67d0\u4e9b\u8fc7\u7a0b\uff0c\u6bd4\u5982\u4e0a\u7ebf\u5230\u751f\u4ea7\u73af\u5883\uff0c\u52a0\u4e0a when: manual \u5c31\u53ef\u4ee5\u4e86\uff0c\u6548\u679c\u5982\u4e0b\uff1a
\n<\/p>\n

\u8f6c\u8f7d\u8bf7\u6ce8\u660e\uff1aIPCPU-\u7f51\u7edc\u4e4b\u8def<\/a> » gitlab\u5185\u7f6eCICD\u7684\u4f7f\u7528<\/a><\/p>","protected":false},"excerpt":{"rendered":"

gitlab CICD.md \u6982\u8ff0 GitLab\u5185\u7f6e\u4e86CI\/CD\u5de5\u5177\uff0c\u76f8\u6bd4\u4e8eJenkins\u7b49\u5de5\u5177\uff0c\u66f4\u52a0\u5feb\u6377\u548c\u65b9\u4fbf\u3002 GitLab CI\/CD\u7531\u4e00\u4e2a\u540d\u4e3a .gitlab-ci.yml \u7684\u6587\u4ef6\u8fdb\u884c\u914d\u7f6e\uff0c\u8be5\u6587\u4ef6\u4f4d\u4e8e\u4ed3\u5e93\u7684\u6839\u76ee\u5f55\u4e0b\u3002 \u914d\u7f6e\u6587\u4ef6\u4e2d\u6307\u5b9a\u7684\u811a\u672c\u7531GitLab Runner\u6267\u884c\u3002 GitLab Runner \u6709\u56db\u79cd\u8fd0\u884c\u65b9\u5f0f\uff0cShell\u3001DockerinDocker\u3001DockerOutOfDocker\u3001Kaniko\u56db\u79cd\u65b9\u5f0f\uff0cKaniko\u662fGoogle\u4e3a\u4e86\u89e3\u51b3DinD\u548cDooD\u7684\u6743\u9650\u548c\u5b89\u5168\u6027\u63a8\u51fa\u7684\u5de5\u5177\uff0c\u672c\u7ad9\u5176\u4ed6\u6587\u7ae0\u6709\u4ecb\u7ecd\u3002 .gitlab-ci.yml\u6587\u4ef6\u6837\u4f8b \u8fd9\u91cc\u7684Runner\u4f7f\u7528\u7684\u662fDooD\u6a21\u5f0f\u3002 image: golang:1.18 stages: – test – codesonarscan – dockerbuild – deploy test: stage: test before_script: – go env -w GOPROXY=https:\/\/goproxy.cn,direct – go env -w GO111MODULE=on script: – echo “start test” – go test .\/… -v >test.json codesonarscan: stage: codesonarscan variables: […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[232],"_links":{"self":[{"href":"https:\/\/c.ipcpu.com\/wp-json\/wp\/v2\/posts\/1923"}],"collection":[{"href":"https:\/\/c.ipcpu.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/c.ipcpu.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/c.ipcpu.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/c.ipcpu.com\/wp-json\/wp\/v2\/comments?post=1923"}],"version-history":[{"count":1,"href":"https:\/\/c.ipcpu.com\/wp-json\/wp\/v2\/posts\/1923\/revisions"}],"predecessor-version":[{"id":1924,"href":"https:\/\/c.ipcpu.com\/wp-json\/wp\/v2\/posts\/1923\/revisions\/1924"}],"wp:attachment":[{"href":"https:\/\/c.ipcpu.com\/wp-json\/wp\/v2\/media?parent=1923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/c.ipcpu.com\/wp-json\/wp\/v2\/categories?post=1923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/c.ipcpu.com\/wp-json\/wp\/v2\/tags?post=1923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}