Te whakahaere i nga tirotirohanga IntelliJ IDEA ki a Jenkins
Kei a IntelliJ IDEA i tenei ra te kaitirotiro waehere Java pateko tino matatau rawa atu, i runga i ona kaha ka mahue i muri i nga "hoia hoia" penei Kāhua taki и Nga Puka. Ko te maha o nga "tirotiro" he tirotiro i te waehere i roto i nga momo ahuatanga, mai i te momo tohu ki nga pepeke.
Heoi, i te mea ka whakaatuhia nga hua tātaritanga ki te atanga o te rohe o te IDE o te kaiwhakawhanake, he iti noa te whai hua ki te tukanga whanaketanga. Te tātari pateko me tutuki I te mea ko te mahi tuatahi o te paipa hanga, ko ona hua me tautuhi i nga kuaha o te kounga, a ka ngaro te hanga ki te kore e paahitia nga keeti kounga. E mohiotia ana ko TeamCity CI kua whakauruhia ki te IDEA. Engari ahakoa kare koe e whakamahi i te TeamCity, ka taea e koe te ngana ki te whakahaere i nga tirotirohanga IDEA ki tetahi atu tūmau CI. Ko taku whakaaro kia kite koe me pehea e taea ai tenei ma te whakamahi i te IDEA Community Edition, Jenkins me nga Whakatupato NG mono.
Hipanga 1. Whakahaerehia te tātaritanga i roto i te ipu ka whiwhi ripoata
I te tuatahi, ko te whakaaro ki te whakahaere IDE (tono papamahi!) i roto i te punaha CI karekau he atanga kauwhata he ahua pohehe, he tino raruraru. Waimarie, kua whakaratohia e nga kaihanga IDEA te kaha ki te whakahaere whakahōputu waehere и nga tirotirohanga mai i te rarangi whakahau. I tua atu, ki te whakahaere i te IDEA i tenei aratau, kaore e hiahiatia he punaha whakairoiro ka taea enei mahi ki runga i nga kaitoro me te anga kuputuhi.
Ka whakarewahia nga tirohanga ma te whakamahi i te tuhinga bin/inspect.sh mai i te whaiaronga whakaurunga IDEA. Ko nga tawhā e hiahiatia ana ko:
te ara katoa ki te kaupapa (kaore nga whanaunga e tautokona),
ara ki te kōnae .xml me nga tautuhinga tirotiro (i te nuinga o te waa kei roto i te kaupapa i .idea/inspectionProfiles/Project_Default.xml),
te ara katoa ki te kōpaki ka penapena nga konae .xml me nga purongo mo nga hua tātaritanga.
I tua atu, ko te tumanako tera
te ara ki te Java SDK ka whirihorahia i roto i te IDE, ki te kore e mahi te tātari. Ko enei tautuhinga kei roto i te konae whirihoranga jdk.table.xml i roto i te kōpaki whirihoranga o te ao IDEA. Ko te whirihoranga o te ao IDEA ake kei roto i te raarangi kaainga o te kaiwhakamahi ma te taunoa, engari ko tenei waahi ka taea te whakaatu marama i roto i te kōnae idea.properties.
Ko te kaupapa kua wetewetehia he kaupapa IDEA whaimana, me tuku e koe etahi o nga konae kaore e arohia ki te mana putanga, ara:
.idea/inspectionProfiles/Project_Default.xml - nga tautuhinga kaitirotiro, ka tino whakamahia i te wa e tirotirohia ana i roto i te ipu,
.idea/modules.xml - ki te kore ka puta te hapa 'Karekau he waahanga o tenei kaupapa',
.idea/misc.xml - ki te kore ka puta te hapa 'Kaore te JDK i whirihora tika mo tenei kaupapa',
*.iml-файлы — ki te kore ka puta he hapa mo te JDK kaore i whirihorahia i roto i te kōwae.
Ahakoa ko enei konae kei te nuinga o te waa kei roto .gitignore, karekau he korero e pa ana ki te taiao o tetahi kaiwhakawhanake - he rereke, hei tauira, he konae workspace.xml, kei reira nga korero penei, na reira kaore he take ki te tuku.
Ko te otinga e kitea ana ko te kiki i te JDK me te IDEA Community Edition ki roto i tetahi ipu kua rite ki te "whakapae" ki nga kaupapa kua tātarihia. Me whiriwhiri he ipu turanga tika, a koinei to tatou Dockerfile:
Dockerfile
FROM openkbs/ubuntu-bionic-jdk-mvn-py3
ARG INTELLIJ_VERSION="ideaIC-2019.1.1"
ARG INTELLIJ_IDE_TAR=${INTELLIJ_VERSION}.tar.gz
ENV IDEA_PROJECT_DIR="/var/project"
WORKDIR /opt
COPY jdk.table.xml /etc/idea/config/options/
RUN wget https://download-cf.jetbrains.com/idea/${INTELLIJ_IDE_TAR} &&
tar xzf ${INTELLIJ_IDE_TAR} &&
tar tzf ${INTELLIJ_IDE_TAR} | head -1 | sed -e 's//.*//' | xargs -I{} ln -s {} idea &&
rm ${INTELLIJ_IDE_TAR} &&
echo idea.config.path=/etc/idea/config >> idea/bin/idea.properties &&
chmod -R 777 /etc/idea
CMD idea/bin/inspect.sh ${IDEA_PROJECT_DIR} ${IDEA_PROJECT_DIR}/.idea/inspectionProfiles/Project_Default.xml ${IDEA_PROJECT_DIR}/target/idea_inspections -v2
Te whakamahi i te kōwhiringa idea.config.path I peia e matou a IDEA ki te rapu i tana whirihoranga o te ao i roto i te kōpaki /etc/idea, na te mea ko te kōpaki kaainga o te kaiwhakamahi i te wa e mahi ana i roto i te CI he mea kore mohio, he maha tonu te ngaro.
Koinei te ahua o te konae i kape ki te ipu: jdk.table.xml, kei roto nga huarahi ki te OpenJDK kua whakauruhia ki roto i te ipu (he rite te konae mai i to whaiaronga me nga tautuhinga IDEA ka taea te tango hei turanga):
I mua i te neke haere, tirohia kei te rere te kaitirotiro IDEA i roto i te ipu:
docker run --rm -v <путь/к/вашему/проекту>:/var/project inponomarev/intellij-idea-analyzer
Kia pai te whakahaere o te tātari, me te maha o nga konae .xml me nga purongo kaitirotiro ka puta ki te kōpakiroto target/idea_inspections.
Inaianei kua kore e ruarua ka taea e te kaitirotiro IDEA te whakahaere mokemoke i roto i tetahi taiao CI, ka neke atu ki te waahanga tuarua.
Hipanga 2. Whakaatu me te tātari i te ripoata
Ko te tango i te purongo i roto i te ahua o nga konae .xml te haurua o te pakanga, inaianei me hanga e koe kia taea e te tangata te panui. Me whakamahi ano hoki ona hua ki nga kuaha o te kounga - te arorau mo te whakatau mena ka paahi, ka taka ranei te whakarereketanga i runga i nga paearu kounga.
Ka awhina tenei i a maatau Whakatupato Jenkins NG monomai, i tukuna i te Hanuere 2019. Na tona taenga mai, he maha nga mono takitahi mo te mahi me nga hua tātaritanga pateko i Jenkins (CheckStyle, FindBugs, PMD, me etahi atu) kua tohua inaianei he tawhito.
E rua nga waahanga o te mono:
he maha nga kaikohi karere kaitirotiro (rārangi katoa kei roto katoa nga kaitirotiro e mohiotia ana e te pūtaiao mai i AcuCobol ki ZPT Lint),
he kaititiro purongo kotahi mo ratou katoa.
Kei roto i te rarangi o nga mea ka taea e Warnings NG te tātari he whakatupato mai i te kaiwhakaiti Java me nga whakatupato mai i nga raarangi mahi a Maven: ahakoa ka kitea i nga wa katoa, he iti noa te tātari. Kei roto hoki nga purongo IntelliJ IDEA ki te rarangi o nga whakatakotoranga e mohiotia ana.
I te mea he hou te mono, he pai te taunekeneke ki a Jenkins Pipeline. Ko te ahua o te hanga me tana whai waahi ka penei te ahua (ka korero noa matou ki te mono he aha te whakatakotoranga ripoata e mohio ana matou me nga konae hei karapahia):
He watea, he ao tenei atanga mo nga kaitirotiro mohio katoa. Kei roto he hoahoa tauwhitiwhiti o te tohatoha o nga kitenga ma te waahanga me te kauwhata o te hihiri o nga huringa o te maha o nga kitenga. Ka taea e koe te rapu tere i te matiti kei raro o te wharangi. Ko te mea anake kaore i mahi tika mo nga tirohanga IDEA ko te kaha ki te tirotiro tika i nga waehere i Jenkins (ahakoa mo etahi atu ripoata, hei tauira Checkstyle, ka taea e tenei mono te mahi ataahua). Te ahua nei he pepeke tenei kei roto i te korero korero mo te IDEA me whakatika.
I roto i nga ahuatanga o Warnings NG ko te kaha ki te whakahiato i nga kitenga mai i nga puna rereke i roto i te ripoata me te hotaka Quality Gates, tae atu ki te "ratchet" mo te huihuinga tohutoro. Kei te waatea etahi tuhinga hotaka o Quality Gates konei - heoi, kaore i oti, me titiro koe ki te waehere puna. I tetahi atu taha, mo te tino mana whakahaere mo nga mea e tupu ana, ka taea te whakahaere takitahi te "ratchet" (tirohia taku Tuhinga o mua mo tenei kaupapa).
mutunga
I mua i te tiimata ki te whakarite i tenei rauemi, i whakatau ahau ki te rapu: kua tuhia e tetahi mo tenei kaupapa mo Habré? I kitea e ahau anake uiui 2017 с lanite wahi e mea ana ia:
Ki taku mohio, kaore he whakauru ki a Jenkins, he mono maven ranei […] Ko te tikanga, ka taea e tetahi kaingākau te whakahoa ki te IDEA Community Edition me Jenkins, he tokomaha ka whai hua mai i tenei.
Kaati, e rua tau i muri mai ka whai Whakatupato NG Monohiko, ka mutu kua puta tenei whakahoahoa!