国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

這樣來輕松自定義 Jenkins 發(fā)行版!

RichardXG / 2958人閱讀

摘要:在內(nèi)運行集成測試很長時間以來都是一個難題。為了復(fù)用已有的框架,我們需要打包一個自帶配置的文件,以便可以在現(xiàn)有的框架中運行集成測試。

今天,我打算給 Jenkins 管理員和開發(fā)者們介紹一個新的工具 Custom WAR Packager。該工具可以打包 Jenkins 的自定義 WAR 發(fā)行版、 Docker 鏡像以及 Jenkinsfile Runner 包。它可以打包 Jenkins、插件以及配置為開箱即用的發(fā)行版。 Custom WAR Packager 是我們曾在一篇博客-- A Cloud Native Jenkins --中介紹過的無狀態(tài) Jenkins master 工具鏈的一部分。這個工具鏈已在 Jenkins X 中被用于構(gòu)建 serverless 鏡像。

在這篇文章中,我將會介紹幾種 Custom WAR Packager 常見的使用場景。

歷史

正如 Jenkins 本身一樣,Custom WAR Packager 開始于一個小的開發(fā)工具。在 Jenkins 內(nèi)運行集成測試很長時間以來都是一個難題。對此,我們有三個主要的框架: Jenkins Test Harness, Acceptance Test Harness, 和 Plugin Compatibility Tester。這些框架都需要一個 Jenkins WAR 文件來運行測試。但是,假如你想在類似 AWS 一樣的自定義環(huán)境中進行 Jenkins 測試呢? 或者,你希望基于 Pluggable Storage 的環(huán)境也可以復(fù)用 Jenkins 流水線測試,來確保沒有回歸缺陷,又如何呢?

這并不是沒有意義的問題。云原生 Jenkins、Jenkins Evergreen 以及 Jenkins X, 這些 Jenkins 項目中正在進行的主要活動,都需要大量的集成測試來實現(xiàn)持續(xù)交付流程。為了復(fù)用已有的框架,我們需要打包一個自帶配置的 WAR 文件,以便可以在現(xiàn)有的框架中運行集成測試。這正是 Custom WAR Packager 于 2018年4月 創(chuàng)建的原因。到 2018年9月,它相繼支持了 Docker 鏡像和 Jenkinsfile Runner,后者由 Kohsuke Kawaguchi 創(chuàng)建并由 Nicolas de Loof 完善。

揭開面紗

Custom WAR Packager 是一個工具,可以作為命令行、Maven 插件或者 Docker 程序包來用。該工具可以從用戶處獲取配置,并根據(jù)用戶請求進行打包。所有內(nèi)容都由一個 YAML 配置文件管理:

該工具支持多種輸入類型。插件列表可以來自 YAML,pom.xml 或一個 BOM(jep:309[] 提出的 Bill of Materials) 文件。Custom WAR Packager 不僅支持發(fā)布版本,還可以構(gòu)建部署到 增量倉庫 (Jenkins 核心及插件的 CD 流程 - jep:305[]),甚至直接從 Git 或指定目錄中構(gòu)建。它允許從任何來源構(gòu)建包,而無需等待官方版本。由于插件已經(jīng)通過 Commit ID 緩存到了本地的 Maven 倉庫中,因此其構(gòu)建過程也非常快。

自定義Custom WAR Packager 還支持下面的配置選項:

Jenkins 配置即代碼 的 YAMl 文件

Groovy Hooks (例如:預(yù)配置的 init hooks)

系統(tǒng)屬性

WAR打包

每當(dāng)這個庫構(gòu)建時會打包出來一個 WAR 文件。通常,Custom WAR Packager 會根據(jù)下面對 Jenkins 核心和 JCasC 的配置把所有內(nèi)容打包的一個 WAR 文件中。

樣例配置:

bundle: groupId: "io.jenkins.tools.war-packager.demo"
artifactId: "blogpost-demo"
vendor: "Jenkins project"
description: "Just a demo for the blogpost"war: groupId: "org.jenkins-ci.main"
artifactId: "jenkins-war"
source: version: 2.138.2plugins:

groupId: "io.jenkins"

artifactId: "configuration-as-code"
source: # Common release
version: 1.0-rc2

groupId: "io.jenkins"

artifactId: "artifact-manager-s3"
source: # Incrementals
version: 1.2-rc259.c9d60bf2f88c

groupId: "org.jenkins-ci.plugins.workflow"

artifactId: "workflow-job"
source: # Git
git: https://github.com/jglick/wor...
commit: 18d78f305a4526af9cdf3a7b68eb9caf97c7cfbc

etc.systemProperties: jenkins.model.Jenkins.slaveAgentPort: "9000"

jenkins.model.Jenkins.slaveAgentPortEnforce: "true"groovyHooks:

type: "init"

id: "initScripts"
source: dir: src/main/groovycasc:

id: "jcasc"

source: dir: casc.yml

Docker 打包

為了打包 Docker,Custom WAR Packager 使用官方的 Docker 鏡像 jenkins/jenkins 或同樣格式的其他鏡像。在構(gòu)建期間,WAR 文件會被該工具構(gòu)建的文件所替換。這也就意味著鏡像的 所有 特色在該自定義構(gòu)建中都可用: plugins.txt, Java 選項, Groovy hooks 等等。

...## WAR configuration from above## ...buildSettings: docker: build: true

Base image

base: "jenkins/jenkins:2.138.2"

Tag to set for the produced image

tag: "jenkins/custom-war-packager-casc-demo"

例如:示例 展示了打包帶有將構(gòu)建日志存儲到 Elasticsearch 的 Docker 鏡像。 盡管這些已經(jīng)作為了 jep:207 和 jep:210 的一部分,你還是可以查看這個示例,了解該 Docker 鏡像是如何配置、連接到 Elasicsearch、然后啟動外部的日志存儲,而不需要改變?nèi)罩镜慕缑妗R粋€ Docker Compose 文件對于運行整個集群是必要的。

Jenkinsfile Runner 打包

這可能是 Jenkinsfile Runner 最微妙的模式。三月,在開發(fā)者列表中 宣布了一個新的項目 Jenkinsfile Runner。大體的思路是,支持在單一 master 上只運行一次并打印輸出到控制臺的 Jenkins 流水線。 Jenkinsfile Runner 作為命令或一個 Docker 鏡像來運行。雖然只推薦 Docker 的形式,但是 Custom WAR Packager 都能夠生成。使用 Jenkinsfile Runner ,你可以像下面的方式來運行流水線:

docker run --rm -v $PWD/Jenkinsfile:/workspace/Jenkinsfile acmeorg/jenkinsfile-runner

當(dāng)我們開始在云原生特別興趣小組(Cloud Native SIG)中研究無狀態(tài)(也就是“一次”)時,有一個想法就是使用 Custom WAR Packager 和其他已有的工具(Jenkinsfile Runner, Jenkins Configuration as Code 等)來實現(xiàn)。也許只是替換 Jenkinsfile Runner 中的 Jenkins 核心的 JAR 以及插件,但這還不夠。為了高效,Jenkinsfile Runner 鏡像應(yīng)該啟動得 很快。在構(gòu)建流程實現(xiàn)中,我們使用了 Jenkins 和 Jenkinsfile Runner 一些實驗性的選項,包括:類加載預(yù)緩存、插件解壓等等。有了這些后,Jenkins 使用 configuration-as-code 和幾十個插件可以在幾秒鐘內(nèi)啟動。

那么,如何構(gòu)建自定義 Jenkinsfile Runner 鏡像呢?盡管目前還沒有發(fā)布,但這不會影響我們繼續(xù)實現(xiàn)上文提到的內(nèi)容。

...## WAR Configuration from above##...buildSettings: jenkinsfileRunner: source: groupId: "io.jenkins"
artifactId: "jenkinsfile-runner"
build: noCache: true
source: git: https://github.com/jenkinsci/j ... r.git
commit: 8ff9b1e9a097e629c5fbffca9a3d69750097ecc4
docker: base: "jenkins/jenkins:2.138.2"
tag: "onenashev/cwp-jenkinsfile-runner-demo"
build: true

你可以從 這里 找到用 Custom WAR Packager 打包 Jenkinsfile Runner 的例子。

更多信息

還有很多其他的特色沒有在本文中提到。例如:它還可以修改 Maven 構(gòu)建配置或增加、替換 Jenkins 核心中的庫(例如:Remoting)。請查看 Custom WAR Packager 文檔 獲取更多信息和示例。

如果你有興趣對這個庫做貢獻,請創(chuàng)建 PR 并抄送 @oleg-nenashev 和 Raul Arabaolaza。(編者注:Raul Arabaolaza 是第二位正在研究 Jenkins 自動化測試流程的維護者。)

下一步

還有很多值得改進的地方可以使這個工具更加高效:

增加對插件依賴傳遞的檢查以便在構(gòu)建過程中發(fā)現(xiàn)沖突

允許在 YAML 配置文件中設(shè)置各種系統(tǒng)屬性和 Java 選項

改進 Jenkinsfile Runner 的性能

集成到 Jenkins 集成測試流程中,(查看 Jenkins 流水線庫中的 essentialsTest())

即使目前,該工具已經(jīng)能夠讓 Jenkins 用戶構(gòu)建他們自己的發(fā)行版,從理論上來講,仍有許多其他任務(wù)可以在 Custom WAR Packager 中實現(xiàn)。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/27633.html

相關(guān)文章

  • Docker在開發(fā)、測試中的應(yīng)用

    摘要:對測試的影響讓單元測試運行的更順暢單元測試驅(qū)動開發(fā)是一個很好的應(yīng)用程序開發(fā)方式,單元測試往往也是和代碼一起被提交到代碼倉庫中。但是很多單元測試通常依賴于很多其他服務(wù),而這些服務(wù)的標(biāo)準(zhǔn)化配置往往是一個難點,如數(shù)據(jù)庫的搭建防火墻的配置等。 傳統(tǒng)的軟件開發(fā)、測試、運維需要三個團隊在三個不同的環(huán)境中進行,而三個環(huán)境的不同引發(fā)了很多的問題。如:工作內(nèi)容的重復(fù);開發(fā)環(huán)境中可運行的程序在測試和運維環(huán)...

    mating 評論0 收藏0
  • devpi 快速入門: 上傳, 測試, 推送發(fā)行

    摘要:命令配置一個調(diào)用,使用在索引上的與兼容的頁來尋找和下載包。現(xiàn)在我們切回然后尋找我們的發(fā)行文件我們看到被包含在兩個索引中,讓我們移除的發(fā)行版如果你沒有指定選項,你將被詢問確認刪除的交互式操作。 注:該文的原文是 Quickstart: uploading, testing, pushing releases,來自于 devpi 的官方文檔。 該快速入門文檔將引導(dǎo)你為你的 Pyt...

    fjcgreat 評論0 收藏0
  • 德國KubeCon直擊:如何輕松且安心地將k8s用于生產(chǎn)?

    摘要:年正在柏林盛大舉行,來自等多個開源云原生社區(qū)的領(lǐng)先技術(shù)專家正匯聚一堂,以進一步推動云原生計算的教育和發(fā)展。例如,你還需要諸如負載均衡器和的服務(wù)來運行應(yīng)用程序。負載均衡器可以進行高級定制,以滿足用戶的各類需求。 想要在生產(chǎn)環(huán)境中成功部署容器,你需要的不僅僅是容器編排。 2017年CloudNativeCon+KubeCon Europe正在柏林盛大舉行,來自Fluented、Kubern...

    Jensen 評論0 收藏0
  • 德國KubeCon直擊:如何輕松且安心地將k8s用于生產(chǎn)?

    摘要:年正在柏林盛大舉行,來自等多個開源云原生社區(qū)的領(lǐng)先技術(shù)專家正匯聚一堂,以進一步推動云原生計算的教育和發(fā)展。例如,你還需要諸如負載均衡器和的服務(wù)來運行應(yīng)用程序。負載均衡器可以進行高級定制,以滿足用戶的各類需求。 想要在生產(chǎn)環(huán)境中成功部署容器,你需要的不僅僅是容器編排。 2017年CloudNativeCon+KubeCon Europe正在柏林盛大舉行,來自Fluented、Kubern...

    opengps 評論0 收藏0
  • 使用Kubernetes你需要知道的硬道理

    摘要:是谷歌內(nèi)部為解決這個問題所做的工作的產(chǎn)物,它為管理容器如何在整個集群中運行提供了一個單一的框架。在云中使用服務(wù)在許多云中作為標(biāo)準(zhǔn)問題項提供,盡管它在谷歌云平臺,中最突出地表現(xiàn)為本地特性。使用,運行控制平面,將重點部署將用于所需配置的容器。每一項創(chuàng)新都會帶來新的復(fù)雜性。容器使以一種方便的、可移植的形式打包和運行應(yīng)用程序成為可能,但至少要說以規(guī)模管理容器是一個挑戰(zhàn)。Kubernetes是谷歌內(nèi)部...

    fyber 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<