Pulogalamu ya ProHoster > Blog > Ulamuliro > Kugwiritsa Ntchito Gradle ndi Github Zochita Kusindikiza Java Project ku Sonatype Maven Central Repository
Kugwiritsa Ntchito Gradle ndi Github Zochita Kusindikiza Java Project ku Sonatype Maven Central Repository
M'nkhaniyi, ndikufuna kuyang'ana mwatsatanetsatane ndondomeko yosindikiza zojambula za Java kuyambira pachiyambi kupyolera mu Github Actions kupita ku Sonatype Maven Central Repository pogwiritsa ntchito Gradle builder.
Ndinaganiza zolemba nkhaniyi chifukwa cha kusowa kwa maphunziro abwino pamalo amodzi. Chidziwitso chonse chinayenera kusonkhanitsidwa pang'onopang'ono kuchokera kuzinthu zosiyanasiyana, kuwonjezera apo, osati zatsopano. Ndani amasamala, kulandiridwa pansi pa mphaka.
Kupanga malo osungiramo zinthu ku Sonatype
Gawo loyamba ndikupanga malo osungiramo zinthu ku Sonatype Maven Central. Kwa ichi tipita apa, lembani ndikupanga ntchito yatsopano, kutipempha kuti tipange malo osungira. Timayendetsa m'mitima yathu GuluId polojekiti, Ulalo wa polojekiti ulalo wa polojekiti ndi SCM ulalo ulalo wa dongosolo lowongolera momwe polojekitiyi ilili. GuluId apa payenera kukhala mawonekedwe com.example, com.example.domain, com.example.testsupport, ndipo atha kukhalanso ngati ulalo ku github yanu: github.com/yourusername -> io.github.yourusername. Mulimonsemo, mufunika kutsimikizira umwini wa domeni kapena mbiriyi. Ngati mwatchula mbiri ya github, mudzafunsidwa kuti mupange malo osungira anthu ambiri ndi dzina lomwe mukufuna.
Patapita kanthawi mutatsimikizira, GroupId yanu idzapangidwa ndipo tikhoza kupita ku sitepe yotsatira, kasinthidwe ka Gradle.
Chimodzi mwazofunikira za Sonatype ndikuti mafayilo onse asainidwe ndi kiyi ya GPG/PGP. Kwa ichi tipita apa ndikutsitsa pulogalamu ya GnuPG pamakina anu ogwiritsira ntchito.
Kudziwa id kiyi yathu ndi lamulo: gpg --list-secret-keys --keyid-format short. Id idzafotokozedwa pambuyo slash, mwachitsanzo: rsa2048/9B695056
Kusindikiza kiyi yapagulu ku seva https://keys.openpgp.org ndi lamulo: gpg --keyserver [https://keys.openpgp.org](https://keys.openpgp.org/) --send-keys 9B695056
Choyamba muyenera kupanga chikwatu muzu wa polojekiti yanu: .github/workflows.
Momwemo, lembani fayiloyo, mwachitsanzo, gradle-ci-build.yml ndi izi:
name: build
on:
push:
branches:
- master
- dev
- testing
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 8
uses: actions/setup-java@v1
with:
java-version: 8
- name: Build with Gradle
uses: eskatos/gradle-command-action@v1
with:
gradle-version: current
arguments: build -PsonatypeUsername=${{secrets.SONATYPE_USERNAME}} -PsonatypePassword=${{secrets.SONATYPE_PASSWORD}}
Ntchitoyi idzagwiritsidwa ntchito pokankhira ku nthambi master, dev ΠΈ testing, komanso popanga zopempha kukoka.
Gawo la ntchito limafotokoza njira zomwe zikuyenera kuchitika pazochitika zomwe zatchulidwa. Pankhaniyi, tidzamanga pa ubuntu waposachedwa, kugwiritsa ntchito Java 8, komanso kugwiritsa ntchito pulogalamu yowonjezera ya Gradle. eskatos/gradle-command-action@v1zomwe, pogwiritsa ntchito mtundu waposachedwa wa omanga, zidzayendetsa malamulo omwe afotokozedwamo arguments. Zosintha secrets.SONATYPE_USERNAME ΠΈ secrets.SONATYPE_PASSWORD izi ndi zinsinsi tidafunsa kale.
Zotsatira zomanga zidzawonetsedwa mu tabu ya Zochita:
Ingotumizani zokha mukatulutsa chatsopano
Tiyeni tipange fayilo yosiyana ya kayendedwe ka ntchito ya autodeploy gradle-ci-publish.yml:
name: publish
on:
push:
tags:
- 'v*'
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 8
uses: actions/setup-java@v1
with:
java-version: 8
- name: Prepare to publish
run: |
echo '${{secrets.GPG_KEY_CONTENTS}}' | base64 -d > publish_key.gpg
gpg --quiet --batch --yes --decrypt --passphrase="${{secrets.SECRET_PASSPHRASE}}"
--output secret.gpg publish_key.gpg
echo "::set-env name=RELEASE_VERSION::${GITHUB_REF:11}"
- name: Publish with Gradle
uses: eskatos/gradle-command-action@v1
with:
gradle-version: current
arguments: test publish -Psigning.secretKeyRingFile=secret.gpg -Psigning.keyId=${{secrets.SIGNING_KEYID}} -Psigning.password=${{secrets.SIGNING_PASSWORD}} -PsonatypeUsername=${{secrets.SONATYPE_USERNAME}} -PsonatypePassword=${{secrets.SONATYPE_PASSWORD}}
Fayiloyo ili pafupifupi yofanana ndi yapitayi, kupatulapo chochitika chomwe chidzayambitsidwe. Pachifukwa ichi, ichi ndi chochitika chopanga tag yokhala ndi dzina loyambira ndi v.
Tisanayambe kutumizidwa, tifunika kuchotsa kiyi ya PGP kuchokera ku zinsinsi ndikuyiyika muzu wa polojekitiyo, ndikuyichotsa. Kenaka, tiyenera kukhazikitsa kusintha kwapadera kwa chilengedwe RELEASE_VERSION zomwe tikunena gradle.build wapamwamba. Zonsezi zachitika mu gawo Prepare to publish. Timapeza makiyi athu kuchokera kumitundu ya GPG_KEY_CONTENTS, kumasulira kukhala fayilo ya gpg, kenako ndikuyilemba poyiyika mufayiloyo. secret.gpg.
Kenaka, timatembenukira ku kusintha kwapadera GITHUB_REF, komwe titha kupeza mtundu womwe timayika popanga tag. Kusintha uku ndikoyenera pankhaniyi. refs/tags/v0.0.2 pomwe tidadula zilembo 11 zoyambirira kuti tipeze mtundu wina wake. Kenaka, timagwiritsa ntchito malamulo a Gradle kuti tisindikize: test publish
Kuwona zotsatira zotumizidwa ku Sonatype repository
dzina la tag liyenera kuyamba ndi v. Ngati, mutadina Publish kumasulidwa, mayendedwe akamaliza bwino, titha kupita Sonatype Nexus kuonetsetsa:
Chojambulacho chinawonekera mu Staging repository. Nthawi yomweyo imawonekera mu Open status, ndiye iyenera kusamutsidwa pamanja ku Close status podina batani loyenera. Pambuyo powona kuti zofunikira zonse zakwaniritsidwa, chojambulacho chimapita ku Close status ndipo sichikupezekanso kuti chisinthidwe. Mwanjira iyi, idzatha ku MavenCentral. Ngati zonse zili bwino, mutha kukanikiza batani kumasulidwa, ndipo chopangidwacho chidzathera m'nkhokwe ya Sonatype.
Kuti chojambulacho chilowe mu MavenCentral, muyenera kufunsa mu ntchito yomwe tidapanga koyambirira. Muyenera kuchita izi kamodzi kokha, kotero timasindikiza koyamba. Munthawi zotsatila, izi sizofunikira, zonse zimalumikizidwa zokha. Adandiyatsira ine mwachangu, koma zidatenga pafupifupi masiku 5 kuti chojambulacho chipezeke ku MavenCentral.
Ndizo zonse, tasindikiza chojambula chathu ku MavenCentral.