日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Jenkins流水线极速打包

發(fā)布時間:2023/12/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jenkins流水线极速打包 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在使用Jenkins流水線進行打包時,發(fā)現(xiàn)直接使用Dockerfile去構建一個java或者go程序會非常慢,go好一點也要一分鐘,java則需要3分鐘以上。go極速打包設置見:這里

dockerfile如下:

FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home/gradle/src WORKDIR /home/gradle/src RUN gradle build --no-daemonFROM openjdk:8-jre-slim EXPOSE 10087 RUN mkdir /app COPY --from=build /home/gradle/src/build/libs/*.jar /app/test.jar ENTRYPOINT ["java", "-jar","/app/test.jar"]

在上述步驟中,第一步是構建一個gradle環(huán)境,然后再構建一個java環(huán)境。在java環(huán)境中使用gradle環(huán)境中的打包。在使用鏡像gradle進行打包時,發(fā)現(xiàn)特別慢。這很大一部分原因是由于我們每次都是臨時構建一個gradle環(huán)境,其中的依賴下載都是重復工作,當程序有一個很小的改動時,它同樣會從0下載一次,就造成了很長的構建耗時。

怎么樣提升速度呢?

在上述構建中,最慢的步驟是gradle的build,如果選擇選用服務器安裝gradle進行打包,再將打好的jar包直接構建成docker鏡像,一定會快很多。
那就開始做吧,原先在Jenkinsfile中,只需要build鏡像一步就夠了。現(xiàn)在需要先clone代碼,然后gradle打包,最后將打好的包打入鏡像。

費了九牛二虎之力,終于,我做到了。

node {def appimagedef registry = ''def registryCredential = 'aliyun-docker-image-repository'def pathenv.JAVA_HOME="${tool 'java8'}"stage("Checkout"){checkout([$class: 'GitSCM', branches: [[name: '*/'+env.BRANCH_NAME]], extensions: [[$class: 'SubmoduleOption', disableSubmodules: false, parentCredentials: false, recursiveSubmodules: true, reference: '', trackingSubmodules: false]], userRemoteConfigs: [[credentialsId: '', url: '']]])}// 拉代碼 stage('Source') {git branch: 'master', credentialsId: '', url: ''}// 打包stage('Gradle') {sh "sudo chmod -R 777 ${env.WORKSPACE}"sh "${tool 'gradle-6.5.1'}/bin/gradle clean build"}// 構建鏡像stage('Build') {appimage = docker.build registry + ":" + env.BRANCH_NAME + "-$BUILD_NUMBER"}stage('Publish') {}stage('Deploy') {} }

在這次嘗試中,我遇到了幾個問題:

  • 找不到java環(huán)境
  • 找不到gradle環(huán)境
  • 權限不夠
  • 這些問題是使用Jenkinsfile常見的問題,其中,java環(huán)境和gradle環(huán)境需要在jenkins中安裝好(見Jenkins系統(tǒng)配置),然后在Jenkinsfile中進行聲明:

    env.JAVA_HOME="${tool 'java8'}" 或者像這樣直接使用 sh "${tool 'gradle-6.5.1'}/bin/gradle clean build"

    需要注意的是,以上的“java8”和“gradle-6.5.1”都是在Jenkins中進行安裝時,起的名字,指向的是具體的插件,而不是這里填什么Jenkins下載什么。

    另外權限不夠的問題,我在上面的Jenkinsfile中也有解決,如:sh “sudo chmod -R 777 ${env.WORKSPACE}”

    這里將整個工作目錄的權限都放開了,讓腳本可以順暢執(zhí)行。具體的權限可以自行摸索,777是偷懶的做法。

    總結

    以上是生活随笔為你收集整理的Jenkins流水线极速打包的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。