1 | * ABCL Release Engineering |
---|
2 | |
---|
3 | See also <https://abcl.org/trac/wiki/ReleaseSteps>. |
---|
4 | |
---|
5 | *** Maven |
---|
6 | |
---|
7 | Instructions for releasing ABCL on Sonatype's OSS Maven repository. |
---|
8 | |
---|
9 | You need a Sonatype account, see |
---|
10 | <https://central.sonatype.org/pages/ossrh-guide.html>. This will |
---|
11 | result in providing you with a "JIRA username and a password". |
---|
12 | |
---|
13 | **** settings.xml |
---|
14 | |
---|
15 | Enter your "JIRA username and a password" in a |
---|
16 | <file:.m2/settings.xml>. This will be used for authentication when |
---|
17 | the =mvn= tool uploads artifacts to the Sonatype snapshot and staging |
---|
18 | infrastructure. |
---|
19 | |
---|
20 | #+BEGIN_SRC xml |
---|
21 | <settings> |
---|
22 | <server> |
---|
23 | <id>sonatype-nexus-snapshots</id> |
---|
24 | <username>sonatype-jira-username</username> |
---|
25 | <password>sonatype-jira-password</password> |
---|
26 | </server> |
---|
27 | <server> |
---|
28 | <id>sonatype-nexus-staging</id> |
---|
29 | <username>sonatype-jira-username</username> |
---|
30 | <password>sonatype-jira-password</password> |
---|
31 | </server> |
---|
32 | </settings> |
---|
33 | #+END_SRC |
---|
34 | |
---|
35 | **** Process |
---|
36 | |
---|
37 | Ensure that the artifacts you wish to upload are present by building |
---|
38 | them. |
---|
39 | #+begin_src |
---|
40 | ant abcl.release abcl.source.jar abcl.javadoc.jar abcl.contrib.javadoc.jar abcl.contrib.source.jar |
---|
41 | #+end_src |
---|
42 | |
---|
43 | #+BEGIN_SRC |
---|
44 | ant abcl.jar abcl.source.jar abcl.javadoc.jar abcl.contrib |
---|
45 | #+END_SRC |
---|
46 | |
---|
47 | And maybe test it as well |
---|
48 | |
---|
49 | #+BEGIN_SRC |
---|
50 | ant abcl.test |
---|
51 | #+END_SRC |
---|
52 | |
---|
53 | **** Snapshots |
---|
54 | For snapshots (aka development versions) the version in the POM should |
---|
55 | be of the form ~x.y.z-SNAPSHOT~. |
---|
56 | |
---|
57 | #+BEGIN_SRC bash |
---|
58 | keyname='<your_pgp_key@example.com>' |
---|
59 | mvn gpg:sign-and-deploy-file -Dgpg.keyname=${keyname} -Dfile=dist/abcl.jar -DpomFile=pom.xml -Durl=https://oss.sonatype.org/content/repositories/snapshots/ -DrepositoryId=sonatype-nexus-snapshots |
---|
60 | mvn gpg:sign-and-deploy-file -Dgpg.keyname=${keyname} -Dfile=dist/abcl-sources.jar -DpomFile=pom.xml -Durl=https://oss.sonatype.org/content/repositories/snapshots/ -DrepositoryId=sonatype-nexus-snapshots -Dclassifier=sources |
---|
61 | mvn gpg:sign-and-deploy-file -Dgpg.keyname=${keyname} -Dfile=dist/abcl-javadoc.jar -DpomFile=pom.xml -Durl=https://oss.sonatype.org/content/repositories/snapshots/ -DrepositoryId=sonatype-nexus-snapshots -Dclassifier=javadoc |
---|
62 | mvn gpg:sign-and-deploy-file -Dgpg.keyname=${keyname} -Dfile=dist/abcl-contrib.jar -DpomFile=contrib/pom.xml -Durl=https://oss.sonatype.org/content/repositories/snapshots/ -DrepositoryId=sonatype-nexus-snapshots |
---|
63 | #+END_SRC |
---|
64 | |
---|
65 | **** Release |
---|
66 | For releases the version in the POM should be of the form ~x.y.z~ |
---|
67 | |
---|
68 | #+BEGIN_SRC bash |
---|
69 | keyname='<your_pgg_key@example.com>' |
---|
70 | abcl_version=1.8.0 |
---|
71 | mvn gpg:sign-and-deploy-file -Dgpg.keyname=${keyname} -Dfile=dist/abcl.jar -DpomFile=pom.xml -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging |
---|
72 | mvn gpg:sign-and-deploy-file -Dgpg.keyname=${keyname} -Dfile=dist/abcl-${abcl_version}-sources.jar -DpomFile=pom.xml -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -Dclassifier=sources |
---|
73 | mvn gpg:sign-and-deploy-file -Dgpg.keyname=${keyname} -Dfile=dist/abcl-${abcl_version}-javadoc.jar -DpomFile=pom.xml -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -Dclassifier=javadoc |
---|
74 | #+END_SRC |
---|
75 | |
---|
76 | abcl-contrib release |
---|
77 | |
---|
78 | #+BEGIN_SRC bash |
---|
79 | keyname='<evenson.not.org@gmail.com>' |
---|
80 | abcl_version=1.8.0 |
---|
81 | mvn gpg:sign-and-deploy-file -Dgpg.keyname=${keyname} -Dfile=dist/abcl-contrib.jar -DpomFile=contrib/pom.xml -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging |
---|
82 | mvn gpg:sign-and-deploy-file -Dgpg.keyname=${keyname} -Dfile=dist/abcl-contrib-${abcl_version}-sources.jar -DpomFile=contrib/pom.xml -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -Dclassifier=sources |
---|
83 | mvn gpg:sign-and-deploy-file -Dgpg.keyname=${keyname} -Dfile=dist/abcl-contrib-${abcl_version}-javadoc.jar -DpomFile=contrib/pom.xml -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -Dclassifier=javadoc |
---|
84 | #+END_SRC |
---|
85 | |
---|
86 | **** Releasing through Sonatype interface |
---|
87 | <https://www.sonatype.org/nexus/2015/06/02/how-to-publish-software-artifacts-to-maven-central/> |
---|
88 | <https://central.sonatype.org/pages/releasing-the-deployment.html> |
---|
89 | |
---|
90 | 1. "Close" the repo |
---|
91 | |
---|
92 | 2. wait |
---|
93 | |
---|
94 | 3. "Release" the repo |
---|
95 | |
---|
96 | **** Testing downloads |
---|
97 | |
---|
98 | #+BEGIN_SRC |
---|
99 | mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get -DrepoUrl=https://oss.sonatype.org/content/repositories/snapshots -Dartifact=org.abcl:abcl-contrib:1.5.0-SNAPSHOT:jar |
---|
100 | #+END_SRC |
---|
101 | |
---|
102 | |
---|
103 | |
---|
104 | *** Specifying GPG executable |
---|
105 | |
---|
106 | For specifying the =gpg= executable used via =mvn= use a property |
---|
107 | specified via the =gpg.executable= property (e.g. '-Dgpg.executable=gpg2'.) |
---|
108 | |
---|
109 | **** Signing binary release |
---|
110 | |
---|
111 | gpg --default-key YOUR-KEY --detach-sign --armor FILE |
---|
112 | |
---|
113 | #+begin_src bash |
---|
114 | key="evenson.not.org@gmail.com" |
---|
115 | for file in *; do gpg --default-key ${key} --detach-sign --armor ${file} ; done |
---|
116 | #+end_src |
---|
117 | |
---|
118 | ** Update CLiki page |
---|
119 | <https://www.cliki.net/ABCL> |
---|
120 | Roswell parses it for release information? |
---|
121 | |
---|
122 | * Colophon |
---|
123 | |
---|
124 | #+begin_example |
---|
125 | Created: ?? |
---|
126 | Revised: <2020-10-21 Wed 10:01> |
---|
127 | #+end_example |
---|
128 | |
---|