Kafa GitLab CI don loda aikin java zuwa maven tsakiya
Anyi nufin wannan labarin don masu haɓaka java waɗanda ke buƙatar buga samfuran su da sauri zuwa sonatype da/ko maven tsakiya ta amfani da GitLab. A cikin wannan labarin, zan yi magana game da kafa gitlab-runner, gitlab-ci da maven-plugin don magance wannan matsala.
Abubuwan da ake buƙata:
Amintaccen ajiyar mvn da maɓallan GPG.
Amintaccen aiwatar da ayyukan CI na jama'a.
Ana loda kayan tarihi (saki/hoton hoto) zuwa wuraren ajiyar jama'a.
Bincika ta atomatik na nau'ikan saki don bugawa a maven tsakiya.
Magani na gaba ɗaya don loda kayan tarihi zuwa ma'ajiyar ayyuka don ayyuka da yawa.
Cikakken bayanin hanyar buga kayan tarihi zuwa Maven Central ta hanyar Sonatype OSS Repository Hosting Service an riga an kwatanta shi a cikin wannan labarin mai amfani Gogolplex, don haka zan koma ga wannan labarin a wuraren da suka dace.
Yi rijista a Sonatype JIRA kuma fara tikiti don buɗe ma'ajiyar (don ƙarin cikakkun bayanai, karanta sashin Ƙirƙiri tikitin Sonatype JIRA). Bayan buɗe ma'ajiyar, JIRA login/Password biyu (wanda ake kira asusun Sonatype) za a yi amfani da shi don loda kayan tarihi zuwa Nexus na Sonatype.
Idan kuna amfani da na'ura wasan bidiyo na Linux don samar da maɓallin GPG (gnupg/gnupg2), to kuna buƙatar shigarwa. Rng-kayan aiki don samar da entropy. In ba haka ba, tsarar mahimmanci na iya ɗaukar lokaci mai tsawo.
Da farko, kuna buƙatar ƙirƙira da daidaita aikin da za a adana bututun don jigilar kayan tarihi. Na kira aikina a sauƙaƙe ba tare da rikitarwa ba - aikawa
Bayan ƙirƙirar ma'ajiyar, kuna buƙatar taƙaita damar don canza ma'ajiyar.
Je zuwa aikin -> Saituna -> Ma'ajiyar ajiya -> Rassan Kare. Muna share duk ƙa'idodi kuma muna ƙara ƙa'ida ɗaya tare da Wildcard * tare da haƙƙin turawa da haɗawa kawai don masu amfani tare da rawar Masu Kulawa. Wannan doka za ta yi aiki ga duk masu amfani da wannan aikin da kuma ƙungiyar da wannan aikin yake.
Idan akwai masu kiyayewa da yawa, to, mafita mafi kyau ita ce ƙuntata damar yin amfani da aikin bisa manufa.
Je zuwa aikin -> Saituna -> Gabaɗaya -> Ganuwa, fasalulluka na aikin, izini da saita hangen nesa na aikin zuwa Private.
Ina da aiki a cikin damar jama'a, tunda ina amfani da nawa GitLab Runner kuma ni kaɗai ke da damar gyara ma'ajiyar. To, a zahiri bai dace na nuna bayanan sirri a cikin bututun bututun jama'a ba.
Tsananta ƙa'idodi don canza ma'ajiyar
Je zuwa aikin -> Saituna -> Ma'ajiyar Wuta -> Dokokin Turawa kuma saita ƙayyadaddun ƙayyadaddun tutoci, Duba ko marubucin mai amfani ne na GitLab. Ina kuma ba da shawarar saiti yi sa hannu, da kuma kafa Tutar da ba a sanya hannu ba.
Na gaba, kuna buƙatar saita mai faɗakarwa don gudanar da ayyuka
Je zuwa aikin -> Saituna -> CI / CD -> Abubuwan da ke haifar da bututun bututu kuma ƙirƙirar sabon alamar faɗakarwa
Za'a iya ƙara wannan alamar nan da nan zuwa ga tsarin gaba ɗaya na masu canji don ƙungiyar ayyuka.
Jeka rukunin -> Saituna -> CI / CD -> Masu canji kuma ƙara mai canzawa DEPLOY_TOKEN tare da alamar faɗakarwa a cikin ƙimar.
Wannan sashe yana bayyana ƙayyadaddun tsari don gudanar da ayyuka akan turawa ta amfani da ɗan ƙasa (Takamaiman) da na jama'a (Raba) mai gudu.
Takamaiman Gudu
Ina amfani da masu gudu na, saboda da farko yana da dacewa, sauri, arha.
Don mai gudu Ina ba da shawarar Linux VDS tare da 1 CPU, 2 GB RAM, 20 GB HDD. Farashin fitowa ~ 3000 ₽ kowace shekara.
Mai gudu na
Ga mai gudu na ɗauki VDS 4 CPU, 4 GB RAM, 50 GB SSD. Kudinsa ~11000₽ kuma bai taba nadama ba.
Ina da inji guda 7. 5 a Aruba da 2 a kan ihor.
Don haka, muna da mai gudu. Yanzu za mu saita shi.
Muna zuwa injin ta hanyar SSH kuma mu sanya java, git, maven, gnupg2.
Ƙirƙiri adireshi don maven cache kuma sanya haƙƙoƙin rukuni runner
Kuna iya tsallake wannan matakin idan ba ku shirya gudanar da masu gudu da yawa akan na'ura ɗaya ba.
Runtime platform arch=amd64 os=linux pid=17594 revision=3001a600 version=11.10.0
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://gitlab.com/
Please enter the gitlab-ci token for this runner:
REGISTRATION_TOKEN
Please enter the gitlab-ci description for this runner:
[ih1174328.vds.myihor.ru]: Deploy Runner
Please enter the gitlab-ci tags for this runner (comma separated):
deploy
Registering runner... succeeded runner=ZvKdjJhx
Please enter the executor: docker-ssh, parallels, virtualbox, docker-ssh+machine, kubernetes, docker, ssh, docker+machine, shell:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Duba cewa mai gudu yana da rijista. Je zuwa gitlab.com -> tura-project -> Saituna -> CI / CD -> Masu gudu -> Musamman Masu Gudu -> Masu gudu sun kunna don wannan aikin.
Allon
.Ara raba sabis /etc/systemd/system/gitlab-deployer.service
Muna samar da maɓalli ta hanyar amsa tambayoyi. Na yi amfani da sunana da imel.
Tabbatar da saka kalmar sirri don maɓalli. Za a sanya hannu kan kayan tarihi da wannan maɓalli.
gpg --gen-key
Duba
gpg --list-keys -a
/home/gitlab-deployer/.gnupg/pubring.gpg
----------------------------------------
pub 4096R/00000000 2019-04-19
uid Petruha Petrov <[email protected]>
sub 4096R/11111111 2019-04-19
Ana loda maɓallin jama'a zuwa uwar garken maɓalli
gpg --keyserver keys.gnupg.net --send-key 00000000
gpg: sending key 00000000 to hkp server keys.gnupg.net
Ƙirƙiri jagorar maven tanadi kuma haɗi tare da cache (kada ku yi kuskure)
Ana iya tsallake wannan matakin idan ba ku shirya gudanar da masu gudu da yawa akan na'ura ɗaya ba.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
<!-- Генерация javadoc должна быть после фазы генерации ресурсов -->
<phase>prepare-package</phase>
<configuration>
<!-- Очень помогает в публичных проектах -->
<failOnError>true</failOnError>
<failOnWarnings>true</failOnWarnings>
<!-- Убирает ошибку поиска документации в target директории -->
<detectOfflineLinks>false</detectOfflineLinks>
</configuration>
</execution>
</executions>
</plugin>
Idan kuna da tsarin da bai ƙunshi java ba (misali albarkatu kawai)
Ko kuma ba kwa son samar da javadoc bisa manufa, sannan don taimakawa maven-jar-plugin
Idan kuna da aikin multi-module, kuma ba kwa buƙatar loda takamaiman module zuwa ma'ajiyar, to kuna buƙatar ƙara zuwa pom.xml na wannan rukunin. nexus-staging-maven-plugin da tuta skipNexusStagingDeployMojo
Bayan loda hotunan hoto/saki suna samuwa a ciki wuraren ajiya
<repositories>
<repository>
<id>SonatypeNexus</id>
<url>https://oss.sonatype.org/content/groups/staging/</url>
<!-- Не надо указывать флаги snapshot/release для репозитория -->
</repository>
</repositories>
Ƙarin ƙari
Lissafin wadataccen maƙasudai don aiki tare da ma'ajin nexus (mvn help:describe -Dplugin=org.sonatype.plugins:nexus-staging-maven-plugin).
Duban sakewa ta atomatik don saukewa a maven tsakiya
Lokacin da aka saita alamar, aikin da ya dace a cikin aikin turawa zai fara ta atomatik don loda sigar sakin zuwa nexus (misali).
Mafi kyawun sashi shine sakin kusa yana jawo ta atomatik a cikin nexus.
[INFO] Performing remote staging...
[INFO]
[INFO] * Remote staging into staging profile ID "9043b43f77dcc9"
[INFO] * Created staging repository with ID "orgtouchbit-1037".
[INFO] * Staging repository at https://oss.sonatype.org:443/service/local/staging/deployByRepositoryId/orgtouchbit-1037
[INFO] * Uploading locally staged artifacts to profile org.touchbit
[INFO] * Upload of locally staged artifacts finished.
[INFO] * Closing staging repository with ID "orgtouchbit-1037".
Waiting for operation to complete...
.........
[INFO] Remote staged 1 repositories, finished with success.
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Shields4J 1.0.0 .................................... SUCCESS [ 9.603 s]
[INFO] test-core .......................................... SUCCESS [ 3.419 s]
[INFO] Shields4J client ................................... SUCCESS [ 9.793 s]
[INFO] TestNG listener 1.0.0 .............................. SUCCESS [01:23 min]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:47 min
[INFO] Finished at: 2019-04-21T04:05:46+03:00
[INFO] ------------------------------------------------------------------------
Kuma idan wani abu ya yi kuskure, to aikin zai gaza
[INFO] Performing remote staging...
[INFO]
[INFO] * Remote staging into staging profile ID "9043b43f77dcc9"
[INFO] * Created staging repository with ID "orgtouchbit-1038".
[INFO] * Staging repository at https://oss.sonatype.org:443/service/local/staging/deployByRepositoryId/orgtouchbit-1038
[INFO] * Uploading locally staged artifacts to profile org.touchbit
[INFO] * Upload of locally staged artifacts finished.
[INFO] * Closing staging repository with ID "orgtouchbit-1038".
Waiting for operation to complete...
.......
[ERROR] Rule failure while trying to close staging repository with ID "orgtouchbit-1039".
[ERROR]
[ERROR] Nexus Staging Rules Failure Report
[ERROR] ==================================
[ERROR]
[ERROR] Repository "orgtouchbit-1039" failures
[ERROR] Rule "signature-staging" failures
[ERROR] * No public key: Key with id: (1f42b618d1cbe1b5) was not able to be located on <a href=http://keys.gnupg.net:11371/>http://keys.gnupg.net:11371/</a>. Upload your public key and try the operation again.
...
[ERROR] Cleaning up local stage directory after a Rule failure during close of staging repositories: [orgtouchbit-1039]
[ERROR] * Deleting context 9043b43f77dcc9.properties
[ERROR] Cleaning up remote stage repositories after a Rule failure during close of staging repositories: [orgtouchbit-1039]
[ERROR] * Dropping failed staging repository with ID "orgtouchbit-1039" (Rule failure during close of staging repositories: [orgtouchbit-1039]).
[ERROR] Remote staging finished with a failure: Staging rules failure!
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Shields4J 1.0.0 .................................... SUCCESS [ 4.073 s]
[INFO] test-core .......................................... SUCCESS [ 2.788 s]
[INFO] Shields4J client ................................... SUCCESS [ 3.962 s]
[INFO] TestNG listener 1.0.0 .............................. FAILURE [01:07 min]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
Sakamakon haka, an bar mu da zaɓi ɗaya kawai. Ko share wannan sigar ko buga.
Bayan dasawa, bayan ɗan lokaci, kayan kayan tarihi za su kasance a ciki
offtopic
Wahayi ne a gare ni cewa maven ya nuna sauran ma'ajiyar jama'a.
Dole ne in loda robots.txt saboda ya nuna ma tsohon ma'ajina.
Wani shiri na daban wanda zaku iya aiwatar da ayyukan CI da yawa don loda kayan tarihi zuwa wuraren ajiyar jama'a don harsunan ci gaba daban-daban.
Aikin turawa ya keɓe daga tsangwama daga waje kuma masu amfani ne kawai za su iya gyara su tare da ayyukan Mai da Mai Kulawa.
Wani keɓantaccen Mai gudu na musamman tare da ma'ajin "zafi" don gudanar da ayyuka kawai.
Buga sigar hoto/saki a cikin ma'ajiyar jama'a.
Bincika ta atomatik na sigar saki don shirye-shiryen bugawa a maven tsakiya.
Kariya daga buga atomatik na nau'ikan “raw” a cikin maven tsakiya.
Gina ku buga nau'ikan hoto na hoto "kan danna".
Wurin ajiya guda ɗaya don samun sigar hoto/saki.
Gabaɗaya bututun gini / gwaji / buga aikin java.
Ƙirƙirar GitLab CI ba ta da sarkakiyar batu kamar yadda ake gani a farkon kallo. Ya isa kafa CI akan maɓalli sau biyu, kuma yanzu kun yi nisa da mai son a cikin wannan lamarin. Haka kuma, takardun GitLab suna da yawa. Kada ku ji tsoro don ɗaukar mataki na farko. Hanyar tana bayyana a ƙarƙashin matakan mutumin da ke tafiya (Ban tuna wanda ya faɗi hakan :)
Zan yi farin cikin amsawa.
A cikin labarin na gaba, zan nuna muku yadda ake saita GitLab CI don gudanar da ayyukan gwajin haɗin kai cikin gasa (ayyukan gwaji tare da docker-compose) idan kuna da mai gudu harsashi ɗaya kawai.