Partum dynamicam parametri in Jenkins officium, vel quomodo negotium tuum fac usor-amicum?

Bonus dies, Habr!

Hodie communicare unum ex modis utendi Active electiones Plugin facere negotium in Imago maxime unita et usuario-amica.

introduction

Talis abbreviatio sicut DevOps iam non est aliquid novi pro communitate IT. Multis verbis "do DevOps" coniungitur cum quadam conjunctione magica, cum clicked, applicatio Codicis automatice in applicationem explicatam et probatam vertit (omnia quidem magis perplexa sunt, sed ab omnibus processibus abstrahimus).

Itaque mandatum accepimus ut talem conjunctionem magicam efficiamus ut administratores applicationem uno clic enucleare possent. Variae species exsecutionis huius operis sunt: ​​ex scripto autocineto cuilibet instantium nuntiorum ad applicationem separatum enucleandum. Nihilominus haec omnia eundem finem habent - initium facere ac instruere applicationis quam maxime perspicuam et opportunam.

In casu nostro utemur Imago.


Partum dynamicam parametri in Jenkins officium, vel quomodo negotium tuum fac usor-amicum?

negotium

Jenkins officium opportunum crea, quod fabricare et deducet et (vel) microservii cuiusdam versionis instruere.

Partum dynamicam parametri in Jenkins officium, vel quomodo negotium tuum fac usor-amicum?

Input data

Plures repositoria habemus in quibus fons codicis variarum operarum est.

Definiens parametri

Parametri sequentes recipiendi sunt tamquam initus ad officium nostrum:

  1. Domicilium repositorii cum codice microservii quem aedificare volumus et explicandi sunt cum officium currit.
  2. Id sunt veniam a quo architecto eveniet.

AS*

Facillima via ad hoc munus perficiendum est duos parametris typo Stringis creare.

Partum dynamicam parametri in Jenkins officium, vel quomodo negotium tuum fac usor-amicum?

Hoc in casu, necesse est utentis viam manualem in repositorio et id committat, quod, ut vides, non omnino convenit.

Partum dynamicam parametri in Jenkins officium, vel quomodo negotium tuum fac usor-amicum?

quoad BE*

Nunc aliam rationem parametri conemur omnia eius commoda considerare.
Primum parametrum crearemus cum speciei Electionis Parametri, secundum - activum electiones Reactivum Reference Parametrum. In parametro cum electione speciei, manually addamus nomina repositoriorum in campo electionum ubi Codex microserviarum nostrarum reponitur.

Partum dynamicam parametri in Jenkins officium, vel quomodo negotium tuum fac usor-amicum?

Si auditores hunc articulum delectant, in sequenti articulo describemus processum configurandi officiorum in Jenkins, descriptione per codicem (Configurationis in codice), i.e. non opus est manually nomina repositoria intrare et parametros creare, omnia automatice fient (indicem repositoriorum ex SCM in codice nostro accipiet et cum hoc indice parametrum creabit).

Valores secundi parametri dynamice implebuntur, secundum quanti valoris primi parametri (test1 vel test2), quia unaquaeque repositio suum habet album committit.

Active electiones Reactive Reference Parameter has sequentes agros explere;

  1. nomine β€” parametri nomen.
  2. Scriptor - Codex, qui omni tempore exsecutioni mandabitur, valor parametri ex parametri Referenced mutatur (in nostro casu, cum inter test1 et test2 eligimus).
  3. Description β€” brevis descriptio parametri.
  4. Electio Type – genus obiecti scripto redditum (in nostro casu reddemus html codicem).
  5. Parametri Referenced - nomen moduli, cuius valor mutatus est, signum e sectione Scripta exsecutioni mandabitur.

Partum dynamicam parametri in Jenkins officium, vel quomodo negotium tuum fac usor-amicum?

Protinus procedamus ad campum maximi momenti in hoc parametro complendum. Proponitur duo genera exsecutionis ad eligendum ex: usura Groovy Script aut Scriptor Script.
Primum eligimus, quia Scriptler plugin iustus est qui scripta servat quae antea scripsisti et sinit te illis in aliis muneribus uti sine exemplari praetereunte iterum uti.

Groovy code ut omnia committit ex promptuario delectorum:

AUTH = "Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² Base64"                           
GIT_URL = "url до вашСй SCM (https://bitbucket.org/)"                       
PROJECT_NAME = "имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠΉ области, Π³Π΄Π΅ находятся Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ"

def htmlBuild() {
    html = """
            <html>
            <head>
            <meta charset="windows-1251">
            <style type="text/css">
            div.grayTable {
            text-align: left;
            border-collapse: collapse;
            }
            .divTable.grayTable .divTableCell, .divTable.grayTable .divTableHead {
            padding: 0px 3px;
            }
            .divTable.grayTable .divTableBody .divTableCell {
            font-size: 13px;
            }
            </style>
            </head>
            <body>
        """

    def commitOptions = ""
    getCommitsForMicroservice(MICROSERVICE_NAME).each {
        commitOptions += "<option style='font-style: italic' value='COMMIT=${it.getKey()}'>${it}</option>"
    }
    html += """<p style="display: inline-block;">
        <select id="commit_id" size="1" name="value">
            ${commitOptions}
        </select></p></div>"""

    html += """
            </div>
            </div>
            </div>
            </body>
            </html>
         """
    return html
}

def getCommitsForMicroservice(microserviceRepo) {
    def commits = [:]
    def endpoint = GIT_URL + "/rest/api/1.0/projects/${PROJECT_NAME}/repos/${microserviceRepo}/commits"
    def conn = new URL(endpoint).openConnection()
    conn.setRequestProperty("Authorization", "Basic ${AUTH}")
    def response = new groovy.json.JsonSlurper().parseText(conn.content.text)
    response.values.each {
        commits.put(it.displayId, it.message)
    }
    return commits
}

return htmlBuild()

Sine details exitum, hic signum microservice nomen (MICROSERVICE_NAME) pro initus accipit et rogationem mittit. Bitbucket (ratio getCommitsForMicroservice) API utens suo, et nuntium accipit id ac mandata omnium quae dat pro microservio dato.
Hic codex, ut ante dictum est, reverti debet html, quod in pagina ostendetur Γ†dificate cum Morbi in Jenkins, omnia bona recepta ab Bitbucket in indice involvimus et eas ad lego.

Omnibus gradibus perfectis, talem paginam pulchram habere debemus Γ†dificate cum Morbi.

Test1 microservice si delegisti:

Partum dynamicam parametri in Jenkins officium, vel quomodo negotium tuum fac usor-amicum?

Test2 microservice si delegisti:

Partum dynamicam parametri in Jenkins officium, vel quomodo negotium tuum fac usor-amicum?

Conveniunt multo commodius erit usori hoc modo inter se commercium tuum intervenire quam scribendo url omni tempore et requirendo id committere.

PS Articulus hic praebet exemplum valde simplicissimum, quod in hac forma non potest esse usui practici, cum conventus plures parametri habeant plures, sed propositum erat ostendere quomodo instrumentum operandi, solutionem laborantem non praeberet.

PSS Sicut supra scripsi, si articulus iste utilis est, tunc proximus erit dynamic configuration of Jenkins tasks via code.

Source: www.habr.com