א דיטיילד באַשרייַבונג פון די מעקאַניזאַם פֿאַר ארויסגעבן אַרטאַפאַקץ צו Maven Central דורך די Sonatype OSS ריפּאַזאַטאָרי האָסטינג סערוויס איז שוין דיסקרייבד אין די ארטיקל באַניצער גאָאָגאָלפּלעקס, אַזוי איך וועל אָפּשיקן צו דעם אַרטיקל אין די רעכט ערטער.
פאַר-רעגיסטרירן בייַ סאָנאַטיפּע JIRA און אָנהייב אַ בילעט צו עפֿענען די ריפּאַזאַטאָרי (פֿאַר מער דעטאַילס, לייענען דעם אָפּטיילונג שאַפֿן אַ Sonatype JIRA בילעט). נאָך עפן די ריפּאַזאַטאָרי, די JIRA לאָגין / פּאַראָל פּאָר (דערנאָך ריפערד צו ווי די סאָנאַטיפּע חשבון) וועט זיין געוויינט צו צופֿעליקער אַרטאַפאַקץ צו די סאָנאַטיפּע נעקסוס.
דער פּראָצעס פון דזשענערייטינג אַ GPG שליסל איז זייער דריילי דיסקרייבד. זען די אָפּטיילונג פֿאַר מער דעטאַילס. קאַנפיגיער GnuPG צו צייכן אַרטאַפאַקץ
אויב איר נוצן די לינוקס קאַנסאָול צו דזשענערייט אַ GPG שליסל (gnupg/gnupg2), איר דאַרפֿן צו ינסטאַלירן רנג-מכשירים צו פּראָדוצירן ענטראָפּי. אַנדערש, שליסל דור קענען נעמען אַ זייער לאַנג צייט.
ערשטער פון אַלע, איר דאַרפֿן צו שאַפֿן און קאַנפיגיער אַ פּרויעקט אין וואָס די רערנ - ליניע וועט זיין סטאָרד פֿאַר די דיפּלוימאַנט פון אַרטאַפאַקץ. איך גערופן מיין פּרויעקט פשוט און אַנקאַמפּלאַקייטיד - צעוויקלען
נאָך קריייטינג די ריפּאַזאַטאָרי, איר דאַרפֿן צו באַגרענעצן אַקסעס צו טוישן די ריפּאַזאַטאָרי.
גיין צו די פּרויעקט -> סעטטינגס -> ריפּאַזאַטאָרי -> פּראָטעקטעד בראַנטשעס. מיר ויסמעקן אַלע כּללים און לייגן אַ איין הערשן מיט ווילדקאַרד * מיט די רעכט צו שטופּן און צונויפגיסן בלויז פֿאַר ניצערס מיט די מאַינטאַינער ראָלע. דער הערשן וועט אַרבעטן פֿאַר אַלע יוזערז פון ביידע דעם פּרויעקט און די גרופּע צו וואָס די פּרויעקט געהערט.
אויב עס זענען עטלעכע מאַינטערייטערז, דער בעסטער לייזונג איז צו באַגרענעצן אַקסעס צו די פּרויעקט אין פּרינציפּ.
גיין צו די פּרויעקט -> סעטטינגס -> אַלגעמיינע -> וויזאַביליטי, פּרויעקט פֿעיִקייטן, פּערמישאַנז און שטעלן פּראָיעקט וויזאַביליטי צו פּריוואַט.
איך האָבן אַ פּרויעקט אין ציבור אַקסעס, ווייַל איך נוצן מיין אייגענע GitLab Runner און בלויז איך האָבן אַקסעס צו מאָדיפיצירן די ריפּאַזאַטאָרי. נו, עס איז נישט אין מיין אינטערעסן צו ווייַזן פּריוואַט אינפֿאָרמאַציע אין ציבור רערנ - ליניע לאָגס.
טייטנינג די כּללים פֿאַר טשאַנגינג די ריפּאַזאַטאָרי
גיין צו די פּרויעקט -> סעטטינגס -> ריפּאַזאַטאָרי -> פּוש כּללים און שטעלן די פלאַגס קאַמיטער ריסטריקשאַן, קוק צי דער מחבר איז אַ גיטלאַב באַניצער. איך אויך רעקאָמענדירן באַשטעטיקן טוען סיינינג, און שטעלן די אָפּוואַרפן אַנסיינד קאַמיץ פאָן.
ווייַטער, איר דאַרפֿן צו קאַנפיגיער אַ צינגל צו לויפן טאַסקס
גיין צו פּרויעקט -> סעטטינגס -> סי / סי -> רערנ - ליניע טריגערז און שאַפֿן אַ נייַ צינגל-סימען
דעם סימען קענען זיין גלייך מוסיף צו די אַלגעמיינע קאַנפיגיעריישאַן פון וועריאַבאַלז פֿאַר אַ גרופּע פון פּראַדזשעקס.
גיין צו די גרופּע -> סעטטינגס -> סי / סי -> וועריאַבאַלז און לייגן אַ בייַטעוודיק DEPLOY_TOKEN מיט צינגל-סימען אין די ווערט.
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!
אין דזשאַוואַ פּראַדזשעקס וואָס זענען געמיינט צו זיין ופּלאָאַדעד צו ציבור ריפּאַזאַטאָריז, איר דאַרפֿן צו לייגן 2 סטעפּס צו אָפּלאָדירן די מעלדונג און סנאַפּשאָט ווערסיעס.
.גיטלאב-סי.ימל
stages:
- build
- test
- verify
- deploy
<...>
Release:
extends: .trigger_deploy
# Запускать задачу только пo тегу.
only:
- tags
Snapshot:
extends: .trigger_deploy
# Запускаем задачу на публикацию SNAPSHOT версии вручную
when: manual
# Не запускать задачу, если проставлен тег.
except:
- tags
.trigger_deploy:
stage: deploy
variables:
# Отключаем клонирование текущего проекта
GIT_STRATEGY: none
# Ссылка на триггер deploy-задачи
URL: "https://gitlab.com/api/v4/projects/<deploy project ID>/trigger/pipeline"
# Переменные deploy-задачи
POST_DATA: "
token=${DEPLOY_TOKEN}&
ref=master&
variables[DEPLOY]=${DEPLOY}&
variables[DEPLOY_CI_REPOSITORY_URL]=${CI_REPOSITORY_URL}&
variables[DEPLOY_CI_PROJECT_NAME]=${CI_PROJECT_NAME}&
variables[DEPLOY_CI_COMMIT_SHA]=${CI_COMMIT_SHA}&
variables[DEPLOY_CI_COMMIT_TAG]=${CI_COMMIT_TAG}
"
script:
# Не использую cURL, так как с флагами --fail --show-error
# он не выводит тело ответа, если HTTP код 400 и более
- wget --content-on-error -qO- ${URL} --post-data ${POST_DATA}
אין דעם לייזונג, איך געגאנגען אַ ביסל ווייַטער און באַשלאָסן צו נוצן איין סי מוסטער פֿאַר ז'אבא פראיעקטן.
מער פרטים
איך באשאפן אַ באַזונדער פּרויעקט גיטלאַב-סי אין וואָס ער געשטעלט די CI מוסטער פֿאַר ז'אבא פראיעקטן common.yml.
אויב איר האָבן אַ מאַלטי-מאָדולע פּרויעקט, און איר טאָן ניט דאַרפֿן צו צופֿעליקער אַ ספּעציפיש מאָדולע צו די ריפּאַזאַטאָרי, איר דאַרפֿן צו לייגן צו די pom.xml פון דעם מאָדולע. nexus-staging-maven-plugin מיט פאָן skipNexusStagingDeployMojo
<repositories>
<repository>
<id>SonatypeNexus</id>
<url>https://oss.sonatype.org/content/groups/staging/</url>
<!-- Не надо указывать флаги snapshot/release для репозитория -->
</repository>
</repositories>
מער פּלוסעס
א זייער רייַך רשימה פון טאַרגאַץ פֿאַר ארבעטן מיט די נעקסוס ריפּאַזאַטאָרי (mvn help:describe -Dplugin=org.sonatype.plugins:nexus-staging-maven-plugin).
אָטאַמאַטיק מעלדונג טשעק פֿאַר דאָוונלאָאַדאַביליטי אין מאַווען סענטראַל
ווען די קוויטל איז באַשטימט, די קאָראַספּאַנדינג אַרבעט אין די צעוויקלען פּרויעקט איז אויטאָמאַטיש טריגערד צו צופֿעליקער די מעלדונג ווערסיע צו נעקסוס (בייַשפּיל).
[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] ------------------------------------------------------------------------
און אויב עפּעס איז פאַלש, די אַרבעט וועט פאַרלאָזן
[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] ------------------------------------------------------------------------