1 | * ABCL Release Engineering |
---|
2 | |
---|
3 | See 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 | |
---|
19 | Instructions for releasing ABCL on Sonatype's OSS Maven repository. |
---|
20 | |
---|
21 | You need a Sonatype account, see |
---|
22 | <https://central.sonatype.org/pages/ossrh-guide.html>. This will |
---|
23 | result in providing you with a "JIRA username and a password". |
---|
24 | |
---|
25 | **** settings.xml |
---|
26 | |
---|
27 | Enter your "JIRA username and a password" in a |
---|
28 | <file:.m2/settings.xml>. This will be used for authentication when |
---|
29 | the =mvn= tool uploads artifacts to the Sonatype snapshot and staging |
---|
30 | infrastructure. |
---|
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 | |
---|
51 | Ensure that the artifacts you wish to upload are present by building |
---|
52 | them. |
---|
53 | #+begin_src |
---|
54 | ant abcl.release abcl.source.jar abcl.javadoc.jar abcl.contrib.javadoc.jar abcl.contrib.source.jar |
---|
55 | #+end_src |
---|
56 | |
---|
57 | #+BEGIN_SRC |
---|
58 | ant abcl.jar abcl.source.jar abcl.javadoc.jar abcl.contrib |
---|
59 | #+END_SRC |
---|
60 | |
---|
61 | And maybe test it as well |
---|
62 | |
---|
63 | #+BEGIN_SRC |
---|
64 | ant abcl.test |
---|
65 | #+END_SRC |
---|
66 | |
---|
67 | **** Snapshots |
---|
68 | For snapshots (aka development versions) the version in the POM should |
---|
69 | be of the form ~x.y.z-SNAPSHOT~. |
---|
70 | |
---|
71 | #+BEGIN_SRC bash |
---|
72 | keyname='<your_pgp_key@example.com>' |
---|
73 | 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 |
---|
74 | 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 |
---|
75 | 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 |
---|
76 | 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 |
---|
77 | #+END_SRC |
---|
78 | |
---|
79 | **** Release |
---|
80 | For 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.9.0 |
---|
85 | 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 |
---|
86 | 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 |
---|
87 | 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 |
---|
88 | #+END_SRC |
---|
89 | |
---|
90 | abcl-contrib release |
---|
91 | |
---|
92 | #+BEGIN_SRC bash |
---|
93 | keyname='<evenson.not.org@gmail.com>' |
---|
94 | abcl_version=1.9.0 |
---|
95 | 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 |
---|
96 | 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 |
---|
97 | 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 |
---|
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 | |
---|
104 | 1. "Close" the repo |
---|
105 | |
---|
106 | 2. wait |
---|
107 | |
---|
108 | 3. "Release" the repo |
---|
109 | |
---|
110 | **** Testing downloads |
---|
111 | |
---|
112 | #+BEGIN_SRC |
---|
113 | 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 |
---|
114 | #+END_SRC |
---|
115 | |
---|
116 | |
---|
117 | **** Specifying GPG executable |
---|
118 | |
---|
119 | For specifying the =gpg= executable used via =mvn= use a property |
---|
120 | specified via the =gpg.executable= property (e.g. '-Dgpg.executable=gpg2'.) |
---|
121 | |
---|
122 | ** Update CLiki page |
---|
123 | <https://www.cliki.net/ABCL> |
---|
124 | Roswell parses it for release information? |
---|
125 | |
---|
126 | ** Update MacPorts lang/abcl |
---|
127 | |
---|
128 | * Notes |
---|
129 | |
---|
130 | #+caption: Push locally built 1.9.0 artifacts to abcl.org |
---|
131 | #+begin_src bash |
---|
132 | rsync -avzP ~/work/abcl/dist/ mevenson@abcl.org:/project/armedbear/public_html/releases/1.9.0/ |
---|
133 | #+end_src |
---|
134 | |
---|
135 | #+caption: Remote hg+git URIs |
---|
136 | #+begin_example |
---|
137 | alanruttenberg = git+https://github.com/alanruttenberg/abcl |
---|
138 | default = git@github.com:easye/abcl |
---|
139 | upstream = git+https://github.com/armedbear/abcl |
---|
140 | #+end_example |
---|
141 | |
---|
142 | |
---|
143 | * Colophon |
---|
144 | |
---|
145 | #+begin_example |
---|
146 | Created: 2019-10-31 |
---|
147 | Revised: <2022-04-30 Sat 09:10Z> |
---|
148 | #+end_example |
---|
149 | |
---|