Ho theha liparamente tse matla mosebetsing oa Jenkins, kapa mokhoa oa ho etsa hore mosebetsi oa hau o be bonolo ho o sebelisa

Lumela, Habr!

Kajeno ke rata ho arolelana e 'ngoe ea litsela tsa ho sebelisa Plugin ea Likhetho tse sebetsang etsa mosebetsi ka Jenkins e kopaneng ka ho fetesisa ebile e bonolo ho mosebedisi.

Selelekela

Kgutsufatso e kang DevOps ha e sa le ntho e ntjha bakeng sa setjhaba sa IT. Ho batho ba bangata, poleloana "do DevOps" e amahanngoa le mofuta o itseng oa konopo ea boselamose, ha e tobetse, khoutu ea kopo e fetoha ts'ebeliso e sebelisitsoeng le e lekiloeng (ntho e 'ngoe le e' ngoe e rarahane le ho feta, empa re ikhula lits'ebetsong tsohle).

Kahoo, re ile ra fumana taelo ea ho etsa konopo e joalo ea boselamose e le hore batsamaisi ba ka tsamaisa kopo ka ho tobetsa hanngoe feela. Ho na le mefuta e fapaneng ea ts'ebetsong ea mosebetsi ona: ho tloha ho ngola bot bakeng sa mang kapa mang oa manqosa a potlakileng ho isa ho ho etsa kopo e fapaneng. Leha ho le joalo, sena sohle se na le sepheo se le seng - ho etsa hore ho qala kaho le phepelo ea ts'ebeliso e be pepeneneng le e bonolo kamoo ho ka khonehang.

Tabeng ea rona re tla e sebelisa Jenkins.


Ho theha liparamente tse matla mosebetsing oa Jenkins, kapa mokhoa oa ho etsa hore mosebetsi oa hau o be bonolo ho o sebelisa

Sepheo

Theha mosebetsi o bonolo oa Jenkins o tla qala moaho le (kapa) phepelo ea microservice e khethiloeng ea mofuta o itseng.

Ho theha liparamente tse matla mosebetsing oa Jenkins, kapa mokhoa oa ho etsa hore mosebetsi oa hau o be bonolo ho o sebelisa

Kenya data

Re na le lipolokelo tse 'maloa tse nang le khoutu ea mohloli oa li-microservices tse fapaneng.

Ho hlalosa liparamente

Lintlha tse latelang li lokela ho amoheloa e le tlhahiso ea mosebetsi oa rona:

  1. URL ea polokelo e nang le khoutu ea microservice eo re batlang ho e haha ​​​​le ho e sebelisa ha re etsa mosebetsi.
  2. ID ea boitlamo eo moaho o tla etsoa ho eona.

JOALOKAHA

Tsela e bonolo ka ho fetisisa ea ho phethahatsa mosebetsi ona ke ho etsa liparamente tse peli tsa mofuta oa String.

Ho theha liparamente tse matla mosebetsing oa Jenkins, kapa mokhoa oa ho etsa hore mosebetsi oa hau o be bonolo ho o sebelisa

Tabeng ena, mosebelisi o tla hloka ho kenya tsela e eang sebakeng sa polokelo le id ea boitlamo, eo, u e bonang, e seng bonolo ka botlalo.

Ho theha liparamente tse matla mosebetsing oa Jenkins, kapa mokhoa oa ho etsa hore mosebetsi oa hau o be bonolo ho o sebelisa

JOALOKAHA

Joale a re lekeng mofuta o mong oa li-parameter ho nahana ka melemo eohle ea eona.
Ha re theheng paramente ea pele ka mofuta oa Choice Parameter, ea bobeli - Active Choices Reactive Reference Parameter. Ka paramenteng e nang le mofuta oa Khetho, re tla kenyelletsa tšimong ea Khetho mabitso a polokelo moo khoutu ea li-microservices tsa rona e bolokiloeng teng.

Ho theha liparamente tse matla mosebetsing oa Jenkins, kapa mokhoa oa ho etsa hore mosebetsi oa hau o be bonolo ho o sebelisa

Haeba bamameli ba rata sehlooho sena, joale sehloohong se latelang ke tla hlalosa mokhoa oa ho lokisa mesebetsi ho Jenkins, ho sebelisa tlhaloso ka khoutu (Configuration as code), i.e. re ke ke ra hloka ho kenya mabitso a polokelo ka letsoho le ho theha li-parameter, ntho e 'ngoe le e' ngoe e tla etsahala ka bo eona (khoutu ea rona e tla fumana lethathamo la li-repositories tse tsoang ho SCM le ho etsa parameter e nang le lenane lena).

Litekanyetso tsa paramente ea bobeli li tla tlatsoa ka matla, ho latela hore na paramente ea pele e nka boleng bofe (test1 kapa test2), hobane polokelo ka 'ngoe e na le lenane la eona la boitlamo.

Likhetho tse sebetsang Reactive Reference parameter e na le likarolo tse latelang tseo u lokelang ho li tlatsa:

  1. lebitso – lebitso la paramethara.
  2. rx - khoutu e tla etsoa nako le nako ha boleng ba parameter bo tsoa tšimong ea Referenced parameter bo fetoloa (ho rona, ha re khetha pakeng tsa test1 le test2).
  3. Tlhaloso – tlhaloso e khutšoanyane ea paramethara.
  4. Mofuta oa khetho - mofuta oa ntho e khutlisitsoeng ke script (ho rona re tla khutlisa khoutu ea html).
  5. Paramethara e boletsoeng - lebitso la parameter, ha boleng ba eona bo fetoloa, khoutu e tsoang karolong ea Script e tla etsoa.

Ho theha liparamente tse matla mosebetsing oa Jenkins, kapa mokhoa oa ho etsa hore mosebetsi oa hau o be bonolo ho o sebelisa

Ha re tsoeleng pele ka kotloloho ho tlatsa tšimo ea bohlokoa ka ho fetisisa paramenteng ena. Re fana ka mefuta e 'meli ea ts'ebetsong eo u ka khethang ho eona: ho sebelisa Sengoloa sa Groovy kapa Scriptler Script.
Re khetha ea pele, kaha Scriptler ke plugin feela e bolokang mangolo ao u a ngotseng pele 'me e u lumella ho e sebelisa mesebetsing e meng ntle le ho kopitsa hape.

Khoutu ea Groovy ho fumana litlatsetso tsohle sebakeng se khethiloeng:

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()

Ntle le ho kena ka botlalo, khoutu ena e fumana lebitso la microservice (MICROSERVICE_NAME) joalo ka tlhahiso mme e romela kopo ho Bitbucket (mokhoa getCommitsForMicroservice) e sebelisa API ea eona, 'me e fumana id le ho etsa molaetsa oa boitlamo bohle bakeng sa microservice e fanoeng.
Joalokaha ho boletsoe pejana, khoutu ena e lokela ho khutlisa html e tla hlahisoa leqepheng Haha ka Parameters ho Jenkins, kahoo re thatela litekanyetso tsohle tse amoheloang ho tsoa ho Bitbucket lethathamong ebe re li kenyelletsa ho li khetha.

Kamora ho qeta mehato eohle, re lokela ho fumana leqephe le letle joalo Haha ka Parameters.

Haeba u khethile test1 microservice:

Ho theha liparamente tse matla mosebetsing oa Jenkins, kapa mokhoa oa ho etsa hore mosebetsi oa hau o be bonolo ho o sebelisa

Haeba u khethile test2 microservice:

Ho theha liparamente tse matla mosebetsing oa Jenkins, kapa mokhoa oa ho etsa hore mosebetsi oa hau o be bonolo ho o sebelisa

Lumellana hore ho tla ba bonolo haholoanyane hore mosebelisi a sebelisane le mosebetsi oa hau ka tsela ena ho feta ho kopitsa url nako le nako le ho batla id ea boitlamo e hlokahalang.

PES Sehlooho sena se fana ka mohlala o nolofalitsoeng haholo, o ka 'nang oa se ke oa sebelisoa ka mokhoa o sebetsang ka mokhoa ona, kaha likopano li na le mekhahlelo e mengata e fapaneng, empa morero oa sehlooho sena e ne e le ho bontša kamoo sesebelisoa se sebetsang kateng, eseng ho fana ka tharollo e sebetsang.

PSS Joalokaha ke ngotse pejana, haeba sehlooho sena se le molemo, joale se latelang se tla bua ka tlhophiso e matla ea mesebetsi ea Jenkins ka khoutu.

Source: www.habr.com

Eketsa ka tlhaloso