国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

CI/CD:GitLab-CI 自動(dòng)化集成/部署 JAVA微服務(wù)的應(yīng)用合集

這篇具有很好參考價(jià)值的文章主要介紹了CI/CD:GitLab-CI 自動(dòng)化集成/部署 JAVA微服務(wù)的應(yīng)用合集。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

CI/CD:GitLab-CI 自動(dòng)化集成/部署 JAVA微服務(wù)的應(yīng)用合集

日常開發(fā)中,每次代碼編寫完成后,都需要手動(dòng)打包,并且上傳服務(wù)器,無論本地打包的時(shí)間或者上傳文件到服務(wù)器都需要花費(fèi)大量的時(shí)間來完成,都是重復(fù)的并且毫無意義,應(yīng)該將時(shí)間花費(fèi)在更有價(jià)值的時(shí)間上;所以編寫這篇文章,將自己收集、搭建、測(cè)試的步驟或經(jīng)驗(yàn)匯總一下,也歡迎大家提出或一起討論更好的解決方案。

前置技能

  • Shell簡(jiǎn)單腳本編寫(此項(xiàng)滿足則說明了解并能夠使用Linux)
  • Docker
  • Git
  • Java(可選,既然看了這篇文章,這個(gè)會(huì)的吧,不過無論自動(dòng)化部署什么,原理都是相通的)

安裝

因?yàn)槎际潜镜販y(cè)試,采用Docker容器來進(jìn)行快速安裝,減少部署所花費(fèi)的時(shí)間,并且大部分之前都有寫過對(duì)應(yīng)的安裝文章,這里就不重復(fù)粘貼了。

Docker

Docker離線安裝

GitLab

Docker GitLab安裝

GitLab-Runner

Docker GitLab-Runner安裝

阿里云容器倉庫

(未使用跳過),原本打算使用Harbor鏡像私服倉庫或者阿里云容器倉庫,發(fā)現(xiàn)可以省略此步驟,將打包好的docker鏡像直接通過宿主機(jī)運(yùn)行(需要Runner配置docker in docker)。

GitLab-CI

進(jìn)入到CI/CD的核心,語法部分,都是死的,這里推薦一篇文章,原本是b站的視頻,發(fā)現(xiàn)有對(duì)應(yīng)文章就直接瀏覽了一遍文章再進(jìn)行測(cè)試,文章鏈接。

Java微服務(wù)的GitLab-CI應(yīng)用

  1. 拉取gitlab-ci模版?zhèn)}庫,并上傳到自己的gitlab上(注意CI/CD引入模版的代碼倉庫需要此倉庫權(quán)限)

gitlab-ci模版?zhèn)}庫(develop分支):https://github.com/zsl0/devops-ci-template.git

  1. Java倉庫項(xiàng)目目錄下創(chuàng)建.gitlab-ci.yml文件

CI/CD:GitLab-CI 自動(dòng)化集成/部署 JAVA微服務(wù)的應(yīng)用合集,# CI/CD,ci/cd,gitlab,java,gitlab-ci

簡(jiǎn)化版本,能夠滿足代碼提交后自動(dòng)docker運(yùn)行,注意需要根據(jù)需要運(yùn)行的輔助配置stage為deploy的job任務(wù),如下面配置的gatewayadmin服務(wù)器自動(dòng)化部署,需要配置variables的三個(gè)變量IMAGE_NAMEMODULE_PATHJAR_NAME,分別對(duì)應(yīng)服務(wù)名、服務(wù)模塊相對(duì)路徑、打包后的jar包名稱。

項(xiàng)目相對(duì)路徑:

CI/CD:GitLab-CI 自動(dòng)化集成/部署 JAVA微服務(wù)的應(yīng)用合集,# CI/CD,ci/cd,gitlab,java,gitlab-ci

.gitlab-ci.yml配置:

include:
  - project: 'zsl0/devops-ci-template'
    ref: develop
    file: 'templates/default-pipeline.yml'

variables:
  ## 全局配置
  GIT_CLONE_PATH: ${CI_BUILDS_DIR}/builds/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/${CI_PIPELINE_ID}
  GIT_CHECKOUT: "false"
  CACHE_DIR: "**/target/**.jar"

  ## 作業(yè)控制
  RUN_PIPELINE_BUILD:   "yes"     #是否運(yùn)行構(gòu)建 yes/no
  RUN_PIPELINE_TEST:    "no"      #是否運(yùn)行測(cè)試 yes/no
  RUN_CODE_ANALYSIS:    "no"     #是否代碼掃描 yes/no
  RUN_BUILD_IMAGE:      "no"     #是否生成鏡像 yes/no
  RUN_DEPLOY_ARTIFACTS: "no"      #是否上傳制品 yes/no
  RUN_DEPLOY_K8S:       "no"     #是否發(fā)布K8S yes/no
  RUN_DEPLOY_DOCKER:    "yes"     #是否發(fā)布DOCKER yes/no

  ## 依賴容器鏡像
  BUILD_IMAGE: "registry.cn-hangzhou.aliyuncs.com/zsl0/maven-build:0.0.2"
  CURL_IMAGE: "curlimages/curl:7.70.0"
  SONAR_IMAGE: "sonarsource/sonar-scanner-cli:latest"
  KUBECTL_IMAGE: "lucj/kubectl:1.17.2"


  ## 構(gòu)建測(cè)試參數(shù)
  MAVEN_OPTS: "-Dmaven.repo.local=/home/gitlab-runner/ci-build-cache/maven "  #maven構(gòu)建參數(shù)
#  BUILD_SHELL: 'mvn clean package  -DskipTests -P zsl0-prod'   #構(gòu)建命令
  BUILD_SHELL: 'mvn clean package  -DskipTests -P hxkj-dev'   #構(gòu)建命令
  #GRADLE_OPTS: ""               #gradle構(gòu)建參數(shù)

  ## 單元測(cè)試參數(shù)
  TEST_SHELL : 'mvn test   '       #測(cè)試命令
  JUNIT_REPORT_PATH: 'target/surefire-reports/TEST-*.xml'   #單元測(cè)試報(bào)告                                #項(xiàng)目掃描參數(shù)

  ## 構(gòu)建鏡像
  #CI_REGISTRY: 'registry.cn-beijing.aliyuncs.com'               #鏡像倉庫地址
  #CI_REGISTRY_USER: '610556220zy'                               #倉庫用戶信息
  #CI_REGISTRY_PASSWD: 'xxxxxxxx.'                              #倉庫用戶密碼
  IMAGE_NAME: "${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}"     #鏡像名稱
  DOCKER_FILE_PATH: "./Dockerfile"                              #Dockerfile位置

  ## 上傳制品庫(artifactory)
  #ARTIFACTORY_URL: "http://192.168.1.200:30082/artifactory"     #制品庫地址
  #ARTIFACTORY_NAME: "${CI_PROJECT_NAMESPACE}"                   #制品庫名稱
  #ARTIFACT_PACKAGE: "jar"                                       #制品類型
  #ARTIFACT_PATH: "target/*.${ARTIFACT_PACKAGE}"                 #制品位置
  #TARGET_FILE_PATH: "${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}"   #目標(biāo)制品位置(目錄結(jié)構(gòu))
  #TARGET_ARTIFACT_NAME: "${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}.${ARTIFACT_PACKAGE}"   #目標(biāo)制品名稱

  ## 部署應(yīng)用k8s
  APP_NAME: "$CI_PROJECT_NAME"                #應(yīng)用名稱 <-->deploymentName
  CONTAINER_PORT: "8081"                      #服務(wù)端口 <--> servicesPort
  NAMESPACE: "$CI_PROJECT_NAME-$CI_PROJECT_ID-$CI_ENVIRONMENT_SLUG"             #名稱空間
  ENV_URL: "${ENV_NAME}.${CI_PROJECT_NAMESPACE}.${CI_PROJECT_NAME}.devops.com"  #IngressHosts

cache:
  paths:
    # 后續(xù)修改解決mvn打包repository緩存問題,需要根據(jù)路徑設(shè)置本地倉庫路徑
    - /root/.m2/repository
    - /opt/repository
    - ~/.m2/repository
    - ${CACHE_DIR}

## 構(gòu)建作業(yè)
build:
  # 指定Runner,不指定默認(rèn)使用共享Runner
  tags:
    - runner-java

## 部署
## gateway Docker自動(dòng)化部署
deploy-gateway:
  stage: deploy
  image: docker:latest
  tags:
    - runner-java
  extends: .deploy_docker
  variables:
    # 鏡像名稱,默認(rèn)使用服務(wù)名
    IMAGE_NAME: "gateway"
    # 模塊路徑
    MODULE_PATH: "data-center/gateway/"
    # jar包名稱
    JAR_NAME: gateway.jar

## gateway Docker自動(dòng)化部署
deploy-admin-server:
  stage: deploy
  image: docker:latest
  tags:
    - runner-java
  extends: .deploy_docker
  variables:
    # 鏡像名稱,默認(rèn)使用服務(wù)名
    IMAGE_NAME: "admin-server"
    # 模塊路徑
    MODULE_PATH: "data-center/admin/admin-server/"
    # jar包名稱
    JAR_NAME: admin-server.jar

  1. 創(chuàng)建Dockerfile_template模版
FROM openjdk:11

MAINTAINER 249269610@qq.com

WORKDIR /opt/jar

RUN mkdir -p /opt/shell/
#ADD /zsl0/shell/ /opt/shell/

RUN mkdir -p /opt/jar/
ADD MODULE_PATH/target/JAR_NAME /opt/jar/java-program.jar

ENTRYPOINT ["java", "-jar"]
CMD ["java-program.jar"]

其他問題

Maven本地倉庫緩存

根據(jù) 參考文章 選擇在配置文件中添加 /.m2緩存目錄,并在指定mvn指定 /.m2/repository倉庫目錄:文章來源地址http://www.zghlxwxcb.cn/news/detail-718537.html

variables:
  MAVEN_OPTS: "-Dmaven.repo.local=/.m2/repository "  #maven構(gòu)建參數(shù)

到了這里,關(guān)于CI/CD:GitLab-CI 自動(dòng)化集成/部署 JAVA微服務(wù)的應(yīng)用合集的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【前端自動(dòng)化部署】,Devops,CI/CD

    【前端自動(dòng)化部署】,Devops,CI/CD

    提到 Jenkins ,想到的第一個(gè)概念就是 CI/CD 在這之前應(yīng)該再了解一個(gè)概念。 DevOps Development 和 Operations 的組合,是一種方法論,并不特指某種技術(shù)或者工具。 DevOps 是一種重視 Dev 開發(fā)人員和 Ops 運(yùn)維人員之間溝通、協(xié)作的流程。通過自動(dòng)化的軟件交付,使軟件的構(gòu)建,測(cè)試,發(fā)

    2024年02月10日
    瀏覽(56)
  • 純手工搭建 GitaLab與Gitlab-CI/CD--附 gitlab-ci.yml示例

    純手工搭建 GitaLab與Gitlab-CI/CD--附 gitlab-ci.yml示例

    作者:javastarboy 背景:前幾年(2018 年前后)的 jenkins+docker+k8s 的CI/CD 在工作之中受益不少。提升了不少工作效率。而隨著這幾年的使用發(fā)現(xiàn),目前 gitlab-CI/CD 在持續(xù)集成部署中更加方便、高效。 尤其是在測(cè)試環(huán)節(jié)中,研發(fā)無需編寫復(fù)雜的 jenkins 腳本,只要提交代碼,即可自動(dòng)

    2023年04月08日
    瀏覽(24)
  • 通過 Github workflows CI/CD 自動(dòng)化部署 Github Pages hugo 免費(fèi)博客

    通過 Github workflows CI/CD 自動(dòng)化部署 Github Pages hugo 免費(fèi)博客

    文章博客地址:https://blog.taoluyuan.com/posts/github-workflows/ GitHub Actions 介紹 GitHub 文檔:https://docs.github.com/zh/actions/learn-github-actions/understanding-github-actions 官方介紹: GitHub Actions 是一種持續(xù)集成和持續(xù)交付 (CI/CD) 平臺(tái),可用于自動(dòng)執(zhí)行生成、測(cè)試和部署管道。 您可以創(chuàng)建工作流程來

    2024年02月07日
    瀏覽(54)
  • 《DevOps企業(yè)級(jí)CI/CD實(shí)戰(zhàn)》:一站式掌握DevOps核心方法論,實(shí)現(xiàn)高效自動(dòng)化部署

    《DevOps企業(yè)級(jí)CI/CD實(shí)戰(zhàn)》:一站式掌握DevOps核心方法論,實(shí)現(xiàn)高效自動(dòng)化部署

    DevOps是一組實(shí)踐,由人、工具和文化理念組成。DevOps的核心是實(shí)現(xiàn)軟件開發(fā)團(tuán)隊(duì)和IT運(yùn)維團(tuán)隊(duì)之間的流程自動(dòng)化。自2018年起,筆者參與了大型企業(yè)中多個(gè)項(xiàng)目的DevOps項(xiàng)目實(shí)施和改進(jìn),從中積累了豐富的實(shí)踐經(jīng)驗(yàn)。于是將實(shí)踐思考與開發(fā)經(jīng)驗(yàn)整理成一本書分享給同路人共同學(xué)習(xí)

    2024年04月14日
    瀏覽(27)
  • 微服務(wù) & 云原生:基于 Gogs + Drone 實(shí)現(xiàn) CI/CD 自動(dòng)化

    微服務(wù) & 云原生:基于 Gogs + Drone 實(shí)現(xiàn) CI/CD 自動(dòng)化

    以一個(gè)簡(jiǎn)單的前后端項(xiàng)目來說,分別編寫前后端的 Dockerfile 文件并構(gòu)建鏡像,然后編寫 docker-compose.yml 構(gòu)建部署,啟動(dòng)運(yùn)行。每次代碼變更后都需重新手動(dòng)打包、構(gòu)建、推送。 一個(gè)簡(jiǎn)單的例子: 前端: 項(xiàng)目名:kubemanagement-web 技術(shù)棧:Vue 后端: 項(xiàng)目名:kubemanagement 技術(shù)棧:

    2024年02月13日
    瀏覽(22)
  • 在 CI/CD流水線中運(yùn)行自動(dòng)化單元測(cè)試的4個(gè)原因

    目錄 什么是單元測(cè)試? C#中的單元測(cè)試示例 我需要在CI/CD 流水線中運(yùn)行自動(dòng)化測(cè)試嗎? 開發(fā)人員代碼驗(yàn)證反饋循環(huán) 預(yù)驗(yàn)證 步步為營 減少“另一個(gè)開發(fā)人員寫了這段代碼”的問題 單元測(cè)試 什么是單元測(cè)試? 單元測(cè)試是一小段代碼,用于測(cè)試應(yīng)用程序編寫的代碼的邏輯。單

    2024年02月16日
    瀏覽(50)
  • DevOps系列文章 之 SpringBoot整合GitLab-CI實(shí)現(xiàn)持續(xù)集成

    DevOps系列文章 之 SpringBoot整合GitLab-CI實(shí)現(xiàn)持續(xù)集成

    在企業(yè)開發(fā)過程中,我們開發(fā)的功能或者是修復(fù)的BUG都需要部署到服務(wù)器上去,而這部分部署操作又是重復(fù)且繁瑣的工作,GitLab-CI 持續(xù)集成為我們解決了這一痛點(diǎn),將重復(fù)部署的工作自動(dòng)化,大大的節(jié)省了程序員們的寶貴時(shí)間。本文詳細(xì)講述了 GitLab-CI 持續(xù)集成的安裝、部署

    2024年02月13日
    瀏覽(23)
  • 基于Docker構(gòu)建CI/CD工具鏈(七)使用Jmeter進(jìn)行自動(dòng)化壓測(cè)

    基于Docker構(gòu)建CI/CD工具鏈(七)使用Jmeter進(jìn)行自動(dòng)化壓測(cè)

    上一篇文章中,我們?cè)敿?xì)介紹了構(gòu)建 Apifox Cli 的 Docker 鏡像的步驟,并通過簡(jiǎn)單的示例演示了如何利用 GitLab 的 CI/CD 功能,將構(gòu)建好的鏡像利用在自動(dòng)化測(cè)試作業(yè)中。在今天的文章中,我們將重點(diǎn)討論如何構(gòu)建 JMeter 的 Docker 鏡像,并演示如何在 GitLab 的 CI/CD 作業(yè)中利用該鏡像

    2024年04月16日
    瀏覽(35)
  • gitlab-ci相關(guān)部署踩坑及要點(diǎn)記錄

    最近在搞cicd相關(guān)的事情,在這個(gè)過程中遇到了一些疑惑,順便記錄下來,如果對(duì)正在有相同迷惑的同學(xué)有幫助的話,也是一件很好的事情。 準(zhǔn)備工作: 安裝gitlab,這個(gè)安裝網(wǎng)上太多了,可以使用二進(jìn)制的方式安裝,也可以使用docker直接運(yùn)行。 安裝gitlab-runner,這個(gè)主要就是

    2024年01月22日
    瀏覽(22)
  • 【測(cè)試】自動(dòng)化測(cè)試平臺(tái)MeterSphere與CI流水線集成配置步驟

    【測(cè)試】自動(dòng)化測(cè)試平臺(tái)MeterSphere與CI流水線集成配置步驟

    登錄 MeterSphere 控制臺(tái)。訪問個(gè)人信息下的 API Keys,點(diǎn)擊新建來創(chuàng)建 API Keys API Keys 創(chuàng)建好之后,可以進(jìn)行查看、復(fù)制Access Key。 點(diǎn)擊 Secret Key 下的顯示并復(fù)制 Secret Key 在 Jenkins 上安裝 MeterSphere 提供的 Jenkins 插件。Jenkins 插件下載地址:https://github.com/metersphere/jenkins-plugin/release

    2023年04月20日
    瀏覽(39)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包