āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻāĻŽāĻŋ āĻā§āĻ°ā§āĻĄāĻ˛ āĻŦāĻŋāĻ˛ā§āĻĄāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸ā§āĻ¨āĻžāĻāĻžāĻāĻĒ āĻŽāĻžāĻā§āĻ¨ āĻ¸ā§āĻ¨ā§āĻā§āĻ°āĻžāĻ˛ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋāĻ¤ā§ āĻāĻŋāĻĨā§āĻŦ āĻ ā§āĻ¯āĻžāĻāĻļāĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸ā§āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻĨā§āĻā§ āĻāĻžāĻāĻž āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻāĻ¨āĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻĻā§āĻāĻ¤ā§ āĻāĻžāĻāĨ¤
āĻāĻ āĻāĻžāĻ¯āĻŧāĻāĻžāĻ¯āĻŧ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻāĻŋāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ¨āĻž āĻĨāĻžāĻāĻžāĻ° āĻāĻžāĻ°āĻŖā§ āĻāĻŽāĻŋ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¤ā§āĻ¸ āĻĨā§āĻā§ āĻā§āĻāĻ°ā§ āĻā§āĻāĻ°ā§ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¤āĻžāĻāĻž āĻ¨āĻ¯āĻŧāĨ¤ āĻā§ āĻ¯āĻ¤ā§āĻ¨ āĻāĻ°ā§, āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛ā§āĻ° āĻ¨ā§āĻā§ āĻ¸ā§āĻŦāĻžāĻāĻ¤āĻŽāĨ¤
āĻ¸ā§āĻ¨āĻžāĻāĻžāĻāĻĒā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻĒā§āĻ°āĻĨāĻŽ āĻ§āĻžāĻĒ āĻšāĻ˛ āĻ¸ā§āĻ¨āĻžāĻāĻžāĻāĻĒ āĻŽāĻžāĻā§āĻ¨ āĻ¸ā§āĻ¨ā§āĻā§āĻ°āĻžāĻ˛ā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĨ¤ āĻāĻ āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻ¯āĻžāĻ
āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤āĻāĻ°āĻŖā§āĻ° āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°ā§, āĻāĻĒāĻ¨āĻžāĻ° GroupId āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ§āĻžāĻĒā§, Gradle āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
Gradle āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŽāĻŋ āĻā§āĻ°ā§āĻĄāĻ˛ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨āĻā§āĻ˛āĻŋ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¨āĻŋ āĻ¯āĻž āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻ¤ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻĒā§āĻ°āĻāĻžāĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻ¨āĻžāĻāĻžāĻāĻĒā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĻā§āĻ˛āĻŋ āĻŦā§āĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻĨāĻŽ āĻāĻŋāĻ¨āĻŋāĻ¸āĻāĻŋāĨ¤ āĻ¤āĻžāĻ°āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤:
- āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄ āĻāĻŦāĻ JavaDoc āĻāĻ° āĻĒā§āĻ°āĻžāĻĒā§āĻ¯āĻ¤āĻž, āĻ¯ā§āĻŽāĻ¨āĨ¤ āĻ
āĻŦāĻļā§āĻ¯āĻ āĻāĻ¸āĻŦā§
-sources.jar
и-javadoc.jar
āĻ¨āĻĨāĻŋ āĻĒāĻ¤ā§āĻ°. āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ā§ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻĻāĻŋ āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄ āĻŦāĻž āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻĄāĻžāĻŽāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨-sources.jar
āĻŦāĻž-javadoc.jar
āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻĒāĻžāĻ¸ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋāĻ¤āĻ°ā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ README āĻ¸āĻšāĨ¤ - āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢāĻžāĻāĻ˛ āĻ¸āĻžāĻāĻ¨ āĻāĻ¨ āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻ
GPG/PGP
āĻāĻŦāĻ.asc
āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ° āĻ§āĻžāĻ°āĻŖāĻāĻžāĻ°ā§ āĻĢāĻžāĻāĻ˛ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻ. - āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ
pom
āĻĢāĻžāĻāĻ˛ - āĻ¸āĻ āĻŋāĻ āĻŽāĻžāĻ¨
groupId
,artifactId
иversion
. āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻāĻžāĻ°ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻāĻ° āĻ¸āĻžāĻĨā§ āĻļā§āĻˇ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¨āĻž-SNAPSHOT
- āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻāĻŦāĻļā§āĻ¯āĻ
name
,description
иurl
- āĻ˛āĻžāĻāĻ¸ā§āĻ¨ā§āĻ¸, āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻāĻŦāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ā§āĻ° āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ
āĻāĻā§āĻ˛āĻŋ āĻšāĻ˛ āĻŽā§āĻ˛āĻŋāĻ āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻ¯āĻž āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ
āĻŦāĻļā§āĻ¯āĻ āĻŽā§āĻ¨ā§ āĻāĻ˛āĻ¤ā§ āĻšāĻŦā§ā§ˇ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¤āĻĨā§āĻ¯ āĻāĻĒāĻ˛āĻŦā§āĻ§
āĻāĻŽāĻ°āĻž āĻāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĻā§āĻ˛āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻŋ build.gradle
āĻĢāĻžāĻāĻ˛ āĻĒā§āĻ°āĻĨāĻŽā§ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°, āĻ˛āĻžāĻāĻ¸ā§āĻ¨ā§āĻ¸, āĻāĻžāĻ°ā§āĻ¸āĻ¨ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¤āĻĨā§āĻ¯ āĻ¯ā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ āĻāĻŦāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° url, āĻ¨āĻžāĻŽ āĻāĻŦāĻ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ¸ā§āĻ āĻāĻ°āĻŋāĨ¤ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻšāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ˛āĻŋāĻā§āĻ¨:
def customizePom(pom) {
pom.withXml {
def root = asNode()
root.dependencies.removeAll { dep ->
dep.scope == "test"
}
root.children().last() + {
resolveStrategy = DELEGATE_FIRST
description 'Some description of artifact'
name 'Artifct name'
url 'https://github.com/login/projectname'
organization {
name 'com.github.login'
url 'https://github.com/login'
}
issueManagement {
system 'GitHub'
url 'https://github.com/login/projectname/issues'
}
licenses {
license {
name 'The Apache License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
scm {
url 'https://github.com/login/projectname'
connection 'scm:https://github.com/login/projectname.git'
developerConnection 'scm:git://github.com/login/projectname.git'
}
developers {
developer {
id 'dev'
name 'DevName'
email '[email protected]'
}
}
}
}
}
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§, āĻāĻĒāĻ¨āĻŋ āĻāĻ¤ā§āĻĒāĻ¨ā§āĻ¨ āĻ¸āĻŽāĻžāĻŦā§āĻļ āĻ¸āĻŽāĻ¯āĻŧ āĻ¯ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ -sources.jar
и-javadoc.jar
āĻ¨āĻĨāĻŋ āĻĒāĻ¤ā§āĻ°. āĻāĻ āĻŦāĻŋāĻāĻžāĻā§āĻ° āĻāĻ¨ā§āĻ¯ java
āĻāĻĒāĻ¨āĻžāĻā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
java {
withJavadocJar()
withSourcesJar()
}
āĻāĻ˛ā§āĻ¨ āĻļā§āĻˇ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§ āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ, āĻāĻāĻāĻŋ GPG/PGP āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ° āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻ¤ā§, āĻĒā§āĻ˛āĻžāĻāĻāĻ¨āĻāĻŋ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨ signing
:
plugins {
id 'signing'
}
āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻžāĻ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨:
signing {
sign publishing.publications
}
āĻ
āĻŦāĻļā§āĻˇā§, āĻāĻ° āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻžāĻ āĻ¯ā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ publishing
:
publishing {
publications {
mavenJava(MavenPublication) {
customizePom(pom)
groupId group
artifactId archivesBaseName
version version
from components.java
}
}
repositories {
maven {
url "https://oss.sonatype.org/service/local/staging/deploy/maven2"
credentials {
username sonatypeUsername
password sonatypePassword
}
}
}
}
āĻāĻāĻž āĻšāĻ˛ sonatype āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ¨āĻžāĻŽ и sonatypeāĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ˛āĻāĻāĻ¨ āĻāĻŦāĻ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ§āĻžāĻ°āĻŖāĻāĻžāĻ°ā§ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ
āĻ¨ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¤ā§āĻ°āĻŋ
āĻāĻāĻžāĻŦā§āĻ āĻĢāĻžāĻāĻ¨āĻžāĻ˛ build.gradle
āĻāĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻšāĻŦā§:
āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻŦāĻŋāĻ˛ā§āĻĄ.āĻā§āĻ°ā§āĻĄāĻ˛ āĻā§āĻĄ
plugins {
id 'java'
id 'maven-publish'
id 'signing'
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
withJavadocJar()
withSourcesJar()
}
group 'io.github.githublogin'
archivesBaseName = 'projectname'
version = System.getenv('RELEASE_VERSION') ?: "0.0.1"
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.2'
}
test {
useJUnitPlatform()
}
jar {
from sourceSets.main.output
from sourceSets.main.allJava
}
signing {
sign publishing.publications
}
publishing {
publications {
mavenJava(MavenPublication) {
customizePom(pom)
groupId group
artifactId archivesBaseName
version version
from components.java
}
}
repositories {
maven {
url "https://oss.sonatype.org/service/local/staging/deploy/maven2"
credentials {
username sonatypeUsername
password sonatypePassword
}
}
}
}
def customizePom(pom) {
pom.withXml {
def root = asNode()
root.dependencies.removeAll { dep ->
dep.scope == "test"
}
root.children().last() + {
resolveStrategy = DELEGATE_FIRST
description 'Some description of artifact'
name 'Artifct name'
url 'https://github.com/login/projectname'
organization {
name 'com.github.login'
url 'https://github.com/githublogin'
}
issueManagement {
system 'GitHub'
url 'https://github.com/githublogin/projectname/issues'
}
licenses {
license {
name 'The Apache License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
scm {
url 'https://github.com/githublogin/projectname'
connection 'scm:https://github.com/githublogin/projectname.git'
developerConnection 'scm:git://github.com/githublogin/projectname.git'
}
developers {
developer {
id 'dev'
name 'DevName'
email '[email protected]'
}
}
}
}
}
āĻāĻŽāĻŋ āĻ¨ā§āĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻĨā§āĻā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻĒāĻžāĻ: System.getenv('RELEASE_VERSION')
. āĻāĻŽāĻ°āĻž āĻ¸āĻŽāĻžāĻŦā§āĻļā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻŦ āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻ āĻ¨āĻžāĻŽ āĻĨā§āĻā§ āĻāĻāĻŋ āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻŦāĨ¤
PGP āĻā§ āĻĒā§āĻ°āĻāĻ¨ā§āĻŽ
Sonatype-āĻāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻšāĻ˛ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢāĻžāĻāĻ˛ āĻāĻāĻāĻŋ GPG/PGP āĻā§ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ° āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻāĻ āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻ¯āĻžāĻ
- āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŽā§āĻ˛ āĻā§āĻĄāĻŧāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ:
gpg --gen-key
, āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ¨āĻžāĻŽ, āĻ-āĻŽā§āĻāĻ˛ āĻ˛āĻŋāĻā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ¸ā§āĻ āĻāĻ°ā§āĻ¨āĨ¤ - āĻāĻŽāĻ°āĻž āĻā§āĻā§ āĻŦā§āĻ° āĻāĻ°āĻŦ
id
āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ¸āĻš āĻāĻŽāĻžāĻĻā§āĻ° āĻā§:gpg --list-secret-keys --keyid-format short
. āĻ¸ā§āĻ˛ā§āĻ¯āĻžāĻļā§āĻ° āĻĒāĻ°ā§ āĻāĻāĻĄāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻž āĻšāĻŦā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ: rsa2048/9B695056 - āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻ¸āĻ°ā§āĻŦāĻāĻ¨ā§āĻ¨ āĻā§ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻž āĻšāĻā§āĻā§
https://keys.openpgp.org āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ¸āĻš:gpg --keyserver [https://keys.openpgp.org](https://keys.openpgp.org/) --send-keys 9B695056
- āĻāĻŽāĻ°āĻž āĻā§āĻĒāĻ¨ āĻā§āĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻāĻžāĻ°ā§ āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋ āĻāĻ°āĻŋ, āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§:
gpg --export-secret-key 9B695056 > D:\gpg\9B695056.gpg
Github āĻ ā§āĻ¯āĻžāĻāĻļāĻ¨ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻāĻ¸ā§āĻ¨ āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻ˛ā§ āĻ¯āĻžāĻ, āĻŦāĻŋāĻ˛ā§āĻĄ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻŋ āĻāĻŦāĻ Github āĻ
ā§āĻ¯āĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ-āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻŋāĨ¤
Github āĻ
ā§āĻ¯āĻžāĻāĻļāĻ¨ āĻšāĻ˛ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ CI/CD āĻāĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§ āĻāĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻš āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻŦāĻŋāĻ˛ā§āĻĄ, āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻŦāĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻā§āĻ¨ā§āĻ āĻĻā§āĻŦāĻžāĻ°āĻž āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§: āĻā§āĻĄ āĻĒā§āĻļ, āĻ°āĻŋāĻ˛āĻŋāĻ āĻ¤ā§āĻ°āĻŋ āĻŦāĻž āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĨ¤ āĻāĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž āĻ¸āĻ°ā§āĻŦāĻāĻ¨ā§āĻ¨ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻā§āĻŦāĻžāĻ°ā§ āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§āĨ¤
āĻāĻ āĻŦāĻŋāĻāĻžāĻā§, āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻĻā§āĻāĻžāĻŦ āĻāĻŋāĻāĻžāĻŦā§ āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻŦāĻ āĻĒā§āĻļ āĻā§āĻĄ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ°āĻŋāĻ˛āĻŋāĻā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§āĻ¨āĻžāĻāĻžāĻāĻĒ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋāĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻ¸āĻŋāĻā§āĻ°ā§āĻ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧāĨ¤
āĻāĻŽāĻ°āĻž āĻā§āĻĒāĻ¨ āĻ¸ā§āĻ
āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸āĻŽāĻžāĻŦā§āĻļ āĻāĻŦāĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻžāĻĻā§āĻ° āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻā§āĻĒāĻ¨ āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻ¯ā§āĻŽāĻ¨ āĻā§ āĻāĻāĻĄāĻŋ, āĻā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄāĻāĻŋ āĻĻāĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ, PGP āĻā§ āĻ¨āĻŋāĻā§āĻ, āĻāĻŦāĻ āĻ¸ā§āĻ¨āĻžāĻāĻžāĻāĻĒ āĻ˛āĻāĻāĻ¨/āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¸ā§āĻāĻŋāĻāĻ¸ā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻŦāĻŋāĻāĻžāĻā§ āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¸ā§āĻ āĻāĻ°āĻŋ:
- SONATYPE_USERNAME / SONATYPE_PASSWORD - āĻ˛āĻāĻāĻ¨ / āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻ¸ā§āĻ¨āĻžāĻāĻžāĻāĻĒā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ
- SIGNING_KEYID/SIGNING_PASSWORD â PGP āĻā§ āĻāĻāĻĄāĻŋ āĻāĻŦāĻ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĒā§āĻ°āĻāĻ¨ā§āĻŽā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻŽāĻŋ āĻāĻ°āĻ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻāĻžāĻŦā§ GPG_KEY_CONTENTS āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§ āĻĨāĻžāĻāĻ¤ā§ āĻāĻžāĻāĨ¤ āĻāĻ¸āĻ˛ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻāĻŋ āĻšāĻ˛ āĻĒā§āĻ°āĻāĻžāĻļāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ PGP āĻā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§ˇ āĻāĻāĻŋ āĻā§āĻĒāĻ¨ā§ āĻĒā§āĻ¸ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻāĻŋ
- āĻāĻ¸ā§āĻ¨ gpg āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻŋ:
gpg --symmetric --cipher-algo AES256 9B695056.gpg
āĻāĻāĻāĻŋ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤: SECRET_PASSPHRASEā§ˇ - āĻāĻ¸ā§āĻ¨ āĻŦā§āĻ¸64 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻā§āĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻĒāĻžāĻ ā§āĻ¯ āĻāĻāĻžāĻ°ā§ āĻ
āĻ¨ā§āĻŦāĻžāĻĻ āĻāĻ°āĻŋ:
base64 9B695056.gpg.gpg > 9B695056.txt
. āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻŦā§: GPG_KEY_CONTENTSāĨ¤
āĻā§āĻĄ āĻĒā§āĻļ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŦāĻ āĻĒāĻŋāĻāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§āĻāĻāĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨
āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ°ā§āĻā§ āĻāĻāĻāĻŋ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§: .github/workflows
.
āĻāĻāĻŋāĻ¤ā§, āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°ā§āĻ¨, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, gradle-ci-build.yml
āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ¸āĻš:
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}}
āĻļāĻžāĻāĻžāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ ā§āĻ˛ā§ āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ āĻāĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻšāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻŦā§ master
, dev
и testing
, āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻĒā§āĻ˛ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĨ¤
āĻāĻžāĻā§āĻ° āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻĒāĻĻāĻā§āĻˇā§āĻĒāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§āĨ¤ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻŦā§āĻ¨ā§āĻā§āĻ° āĻ¸āĻ°ā§āĻŦāĻļā§āĻˇ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦ, āĻāĻžāĻāĻž 8 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ āĻāĻŦāĻ āĻā§āĻ°ā§āĻĄāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦāĨ¤ eskatos/gradle-command-action@v1
āĻ¯āĻž, āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻžāĻ° āĻ¸āĻ°ā§āĻŦāĻļā§āĻˇ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻ¤ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻāĻžāĻ˛āĻžāĻŦā§ arguments
. āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ secrets.SONATYPE_USERNAME
и secrets.SONATYPE_PASSWORD
āĻāĻ āĻā§āĻĒāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻā§ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž.
āĻŦāĻŋāĻ˛ā§āĻĄ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ ā§āĻ¯āĻžāĻāĻļāĻ¨ āĻā§āĻ¯āĻžāĻŦā§ āĻĒā§āĻ°āĻ¤āĻŋāĻĢāĻ˛āĻŋāĻ¤ āĻšāĻŦā§:
āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ°āĻŋāĻ˛āĻŋāĻ āĻĒā§āĻ°āĻāĻžāĻļāĻŋāĻ¤ āĻšāĻ˛ā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĻ¨
āĻ
āĻā§āĻĄāĻŋāĻĒā§āĻ˛āĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻĢā§āĻ˛ā§ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻžāĻ 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}}
āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻāĻā§āĻ°āĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ āĻāĻŋāĻ¨ā§āĻ¨, āĻ¯ā§ āĻāĻā§āĻ¨ā§āĻā§ āĻāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§ āĻŦāĻžāĻĻā§ā§ˇ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻāĻŋ v āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻāĻŋ āĻ¨āĻžāĻŽ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻāĻāĻŋ āĻā§āĻ¯āĻžāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻāĻ¨āĻžāĨ¤
āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻāĻā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻĒāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻĨā§āĻā§ PGP āĻā§ āĻŦā§āĻ° āĻāĻ°ā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻŽā§āĻ˛ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻāĻāĻŋāĻā§ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ RELEASE_VERSION
āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻŋ gradle.build
āĻĢāĻžāĻāĻ˛ āĻāĻ āĻ¸āĻŦ āĻŦāĻŋāĻāĻžāĻā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧ Prepare to publish
. āĻāĻŽāĻ°āĻž GPG_KEY_CONTENTS āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻĨā§āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§ āĻĒāĻžāĻ, āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ gpg āĻĢāĻžāĻāĻ˛ā§ āĻ
āĻ¨ā§āĻŦāĻžāĻĻ āĻāĻ°āĻŋ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ¤ā§ āĻ°ā§āĻā§ āĻāĻāĻŋāĻā§ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻŋ secret.gpg
.
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻāĻžāĻ˛ā§ GITHUB_REF
, āĻ¯āĻž āĻĨā§āĻā§ āĻāĻŽāĻ°āĻž āĻā§āĻ¯āĻžāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¯ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻ¸ā§āĻ āĻāĻ°āĻŋ āĻ¤āĻž āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻĒā§āĻ°āĻžāĻ¸āĻā§āĻāĻŋāĻ. refs/tags/v0.0.2
āĻ¯āĻž āĻĨā§āĻā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĒā§āĻ¤ā§ āĻĒā§āĻ°āĻĨāĻŽ 11āĻāĻŋ āĻ
āĻā§āĻˇāĻ° āĻā§āĻā§ āĻĢā§āĻ˛ā§āĻāĻŋāĨ¤ āĻāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻāĻžāĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻā§āĻ°ā§āĻĄāĻ˛ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ: test publish
āĻ¸ā§āĻ¨āĻžāĻāĻžāĻāĻĒ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻ°āĻŋāĻ˛āĻŋāĻ āĻ¤ā§āĻ°āĻŋ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§, āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻŦāĻŋāĻāĻžāĻā§ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻĢā§āĻ˛ā§ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻāĻāĻŋ āĻ°āĻŋāĻ˛āĻŋāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨:
āĻā§āĻ¯āĻžāĻā§āĻ° āĻ¨āĻžāĻŽ āĻ
āĻŦāĻļā§āĻ¯āĻ v āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻšāĻŦā§āĨ¤ āĻ¯āĻĻāĻŋ, āĻĒā§āĻ°āĻāĻžāĻļ āĻĒā§āĻ°āĻāĻžāĻļ āĻā§āĻ˛āĻŋāĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻš āĻ¸āĻĢāĻ˛āĻāĻžāĻŦā§ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧ, āĻāĻŽāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ
āĻļāĻŋāĻ˛ā§āĻĒāĻāĻ°ā§āĻŽāĻāĻŋ āĻ¸ā§āĻā§āĻāĻŋāĻ āĻāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻāĻŋ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻžāĻ¸ā§ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻŦā§āĻ¤āĻžāĻŽ āĻāĻŋāĻĒā§ āĻāĻāĻŋāĻā§ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻā§āĻ˛ā§āĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻžāĻ¸ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻĒā§āĻ°āĻŖ āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻāĻāĻŋ āĻā§āĻ˛ā§āĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻžāĻ¸ā§ āĻāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ° āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻ¨ā§āĻāĨ¤ āĻāĻ āĻĢāĻ°ā§āĻŽā§, āĻāĻāĻŋ MavenCentral āĻ āĻļā§āĻˇ āĻšāĻŦā§āĨ¤ āĻ¸āĻŦ āĻ āĻŋāĻ āĻĨāĻžāĻāĻ˛ā§, āĻāĻĒāĻ¨āĻŋ āĻŦā§āĻ¤āĻžāĻŽ āĻāĻŋāĻĒā§āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻŽā§āĻā§āĻ¤āĻŋ, āĻāĻŦāĻ āĻļāĻŋāĻ˛ā§āĻĒāĻāĻ°ā§āĻŽāĻāĻŋ āĻ¸ā§āĻ¨āĻžāĻāĻžāĻāĻĒ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§ āĻļā§āĻˇ āĻšāĻŦā§āĨ¤
āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻāĻāĻŋ āĻŽā§āĻ¯āĻžāĻā§āĻ¨āĻ¸ā§āĻ¨ā§āĻā§āĻ°āĻžāĻ˛ā§ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻāĻā§āĻŦāĻžāĻ°ā§ āĻļā§āĻ°ā§āĻ¤ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻĒāĻ¨āĻžāĻā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻŦāĻžāĻ° āĻāĻāĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽāĻŦāĻžāĻ° āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻāĻŋāĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻŽāĻ¯āĻŧā§, āĻāĻāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ, āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻ āĻšāĻŦā§āĨ¤ āĻ¤āĻžāĻ°āĻž āĻāĻŽāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĻā§āĻ°ā§āĻ¤ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻā§āĻļāĻ¨ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻāĻāĻŋ MavenCentral-āĻ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻšāĻ¤ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 5 āĻĻāĻŋāĻ¨ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛ā§āĻā§āĻā§āĨ¤
āĻāĻ āĻ¸āĻŦ, āĻāĻŽāĻ°āĻž MavenCentral āĻāĻŽāĻžāĻĻā§āĻ° āĻļāĻŋāĻ˛ā§āĻĒāĻāĻ°ā§āĻŽ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°ā§āĻāĻŋ.
āĻĻāĻ°āĻāĻžāĻ°ā§ āĻ˛āĻŋāĻā§āĻ
- āĻ
āĻ¨ā§āĻ°ā§āĻĒ
āĻāĻāĻāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ , āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° maven āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒā§āĻ°āĻāĻžāĻļ - āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻāĻžāĻ°ā§
āĻāĻžāĻ¨ā§āĻĄāĻžāĻ° āĻ¸ā§āĻ¨āĻžāĻāĻžāĻāĻĒ āĻāĻŋāĻ° āĻ¸ā§āĻ¨āĻžāĻāĻžāĻāĻĒ āĻ¯āĻžāĻ¤ā§ āĻāĻžāĻ¸ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻāĻŋ āĻ¸āĻŦ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻāĻā§
āĻāĻ¤ā§āĻ¸: www.habr.com