This is an automated email from the ASF dual-hosted git repository.

aloalt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-wayang-website.git


The following commit(s) were added to refs/heads/main by this push:
     new ecf7f0b8 Documenting how to make a release (#77)
ecf7f0b8 is described below

commit ecf7f0b8afb2d0f833678ca79782d4ad8b50a052
Author: Zoi Kaoudi <[email protected]>
AuthorDate: Tue Mar 11 07:49:34 2025 +0100

    Documenting how to make a release (#77)
    
    * tensorflow blogpost
    
    * Update add-an-operator.md
    
    added the process of expanding the api when adding a new operator
    
    * Update add-an-operator.md
    
    * Update installation.md
    
    Added the mvn install command line
    
    * adding javadocs
    
    * adding javadocs
    
    * release documentation
    
    * Update how-to-make-a-release.md
    
    ---------
    
    Co-authored-by: Calvin Kirs <[email protected]>
---
 docs/community/how-to-make-a-release.md | 158 ++++++++++++++++++++++++++++++++
 1 file changed, 158 insertions(+)

diff --git a/docs/community/how-to-make-a-release.md 
b/docs/community/how-to-make-a-release.md
new file mode 100644
index 00000000..5f79e9b1
--- /dev/null
+++ b/docs/community/how-to-make-a-release.md
@@ -0,0 +1,158 @@
+---
+title: How to make a release
+sidebar_position: 6
+id: release
+---
+
+This guide documents the steps to be followed when making a release. 
+
+**Disclaimer**: Steps were taken mostly from 
[here](https://plc4x.apache.org/plc4x/latest/developers/release/release.html) 
and thus sentences may have been copied.
+
+**Convention**: The repository should be in a snapshot version of the next 
release. For instance, 1.0.1-SNAPSHOT means that the next release number should 
be 1.0.1.
+
+The process in general is as follows. The release manager creates the right 
artifacts (source files) using maven commands. This forms  a release candidate. 
Then the release candidate, which should be uploaded in the "development 
directory" of the apache svn server, goes for voting first in the PPMC and then 
in the general incubator list. Once accepted by the latter, the release can 
actually happen, where the artifacts are uploaded to the "release directory" of 
the apache svn server and p [...]
+
+1. Clone the repo or pull latest changes:
+``git pull`` 
+
+2. Create release branch:
+``mvn release:branch -DbranchName=rel/1.0.0-rc5``
+
+3. Switch to branch:
+``git checkout rel/1.0.0-rc5``
+
+4. Set upstream of branch:
+``git push -u <remote_name> <branch_name>``
+
+5. Update RELEASE_NOTES and check NOTICE to have the correct year
+
+6. Check if everything is working: 
+    ``mvn clean install``
+
+
+7. Check if there are no SNAPSHOT references: ``find . -type f -name 'pom.xml' 
-exec grep -l "SNAPSHOT" {} \;``
+
+8. Run ``mvn release:clean``
+
+9. Modify the tag in the root pom.xml file to contain the right version with 
the rc number:
+`` <tag>v1.0.0-rc5</tag>`` (2 places in the file)
+
+Now depending if it's the first time you do a release continue with the 
following steps, otherwise jump to step **16**.
+The following steps ensure you can sign the release with your Apache 
credentials.
+
+### First time release
+=============================================
+
+10. Add your Apache credentials in ~.m2/settings.xml
+
+If you don’t have this directory or file, you should create a .m2 directory in 
your user home and inside that create a settings.xml file with at least this 
content:
+
+```javascript
+<?xml version="1.0" encoding="UTF-8"?>
+<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 
http://maven.apache.org/xsd/settings-1.1.0.xsd"; 
xmlns="http://maven.apache.org/SETTINGS/1.1.0";
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
+  <servers>
+    <!-- Apache Repo Settings -->
+    <server>
+        <id>apache.snapshots.https</id>
+        <username>{user-id}</username>
+        <password>{user-pass}</password>
+    </server>
+    <server>
+        <id>apache.releases.https</id>
+        <username>{user-id}</username>
+        <password>{user-pass}</password>
+    </server>
+  </servers>
+</settings>
+```
+
+The following is about key management. Details are described 
[here](https://pulsar.apache.org/contribute/create-gpg-keys/)
+
+11. You need to generate a key with GnuPG
+- Install GnuPG (e.g., ``brew install gnupg``)
+- Run: ``gpg --full-generate-key``
+- Export the public key: gpg --export --armor mygpgpublickey 
+
+12. Install pinentry (e.g., brew install pinentry-mac) so that you can be 
promted to enter your credentials via command line
+
+13. Configuration
+
+    A. Make Apache the default key:
+    ``APACHEID=your_asf_id``
+
+    ``KEY_ID=$(gpg --list-keys --with-colons [email protected] | egrep 
"^pub" | awk -F: '{print $5}')``
+
+    ``echo "default-key $KEY_ID" >> ~/.gnupg/gpg.conf``
+
+    B. ``export GPG_TTY=$(tty)``
+
+        ``echo $GPG_TTY``
+
+    C. Configure gnupg to use standard DNS resolution
+
+    ```
+    # resolves common "gpg: keyserver receive failed: Network is unreachable" 
and
+    # "gpg: keyserver receive failed: No keyserver available" errors
+    echo "standard-resolver" >  ~/.gnupg/dirmngr.conf
+    sudo pkill dirmngr
+    ```
+
+    D. Set configuration to use SHA512 keys by default:
+    ```
+    cat <<EOL >> ~/.gnupg/gpg.conf
+    personal-digest-preferences SHA512
+    cert-digest-algo SHA512
+    default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES 
CAST5 ZLIB BZIP2 ZIP Uncompressed
+    EOL
+    ```
+
+14. Upload the key to one of the key servers
+
+    ``gpg --keyserver keyserver.ubuntu.com --send-key $KEY_ID``
+
+    ``gpg --keyserver keys.openpgp.org --send-key $KEY_ID``
+
+    ``gpg --keyserver pgp.mit.edu --send-key $KEY_ID``
+
+15. Make sure your public key is appended in the KEYS file found in the 
release server 
[here](https://dist.apache.org/repos/dist/release/incubator/wayang/)
+
+=============================================
+
+16. Run ``mvn release:prepare`` (you can skip tests with 
-Darguments='-DskipTests=True, if you have done this before)
+
+17. Run ``mvn clean release:perform`` (This step will ask for your apache 
credentials, if everything related to the keys is configured properly.)
+
+18. Go to: https://repository.apache.org, login, go to Staging Repositories 
and find the `orgapachewayang-{somenumber}` and close it with description 
"Apache Wayang (incubating) 1.0.0-rc5"
+
+19. Make a directory structure as described below and copy the corresponding 
source files from the directory target/checkout/target. The structure should be:
+```
+./KEYS
+./1.0.0/
+./1.0.0/rc5
+./1.0.0/rc5/README
+./1.0.0/rc5/RELEASE_NOTES
+./1.0.0/rc5/apache-wayang-incubating-1.0.0-source-release.zip
+./1.0.0/rc5/apache-wayang-incubating-1.0.0-source-release.zip.asc
+./1.0.0/rc5/apache-wayang-incubating-1.0.0-source-release.zip.sha12
+```
+
+Make sure the KEYS file contains your public key. The KEYS file can be found 
in 
[https://dist.apache.org/repos/dist/release/incubator/wayang/](https://dist.apache.org/repos/dist/release/incubator/wayang/)
+
+20. ``cd 1.0.0``
+
+    ``svn import rc5 
https://dist.apache.org/repos/dist/dev/incubator/wayang/1.0.0/rc5 -m "Staging 
of rc5 of Wayang 1.0.0"``
+
+21. Send the voting email to the dev list.
+
+22. If the voting passes, send the voting email to the general list.
+
+23. Once the voting in the general list passes, the staged artifacts can be 
released. This is done by moving them inside the Apache SVN:
+
+    ``svn move -m "Release of Apache Wayang (incubating) 1.0.0" 
https://dist.apache.org/repos/dist/dev/incubator/wayang/1.0.0/rc5 
https://dist.apache.org/repos/dist/release/incubator/wayang/1.0.0``
+
+24. Then release the maven artifacts: In order to do this, the release manager 
logs into Nexus at https://repository.apache.org/, selects the staging 
repository and clicks on the Release button.
+
+25. Bring all changes of the release branch to the main.
+
+26. You can also remove 1.0.0 from the dev directory of the svn now that the 
release is out.

Reply via email to