source: trunk/abcl/doc/releng.org @ 15477

Last change on this file since 15477 was 15477, checked in by Mark Evenson, 2 years ago

doc: update release engineering notes

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