You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sedona.apache.org by ji...@apache.org on 2022/11/16 08:32:03 UTC

[incubator-sedona] branch master updated: [DOCS] Further automate the release process

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

jiayu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-sedona.git


The following commit(s) were added to refs/heads/master by this push:
     new b2c25dcd [DOCS] Further automate the release process
b2c25dcd is described below

commit b2c25dcd9331103193622d04a09a6271e9ce642e
Author: Jia Yu <ji...@apache.org>
AuthorDate: Wed Nov 16 00:31:56 2022 -0800

    [DOCS] Further automate the release process
---
 docs-overrides/main.html          |   2 +-
 docs/community/contact.md         |   6 +-
 docs/community/contributor.md     |  39 +--
 docs/community/publish.md         | 539 +++++++++++++++++---------------------
 docs/community/release-manager.md | 106 ++++++++
 docs/community/snapshot.md        |  44 ++++
 docs/community/vote.md            |   4 +-
 mkdocs.yml                        |  19 +-
 pom.xml                           |   1 +
 9 files changed, 423 insertions(+), 337 deletions(-)

diff --git a/docs-overrides/main.html b/docs-overrides/main.html
index e7ee8b6c..0062a68f 100644
--- a/docs-overrides/main.html
+++ b/docs-overrides/main.html
@@ -28,7 +28,7 @@
             <a href="{{ config.repo_url }}" title="{{ lang.t('source.link.title') }}" class="md-button">
               Go to GitHub
             </a>
-            <p><a href="https://discord.gg/9A3k5dEBsY" target="_blank"><img src="https://dcbadge.vercel.app/api/server/9A3k5dEBsY" alt="Discord Shield"/></a></p>
+            <p><a href="https://discord.gg/9A3k5dEBsY" target="_blank">Join Apache Sedona Community Discord server!</a></p>
           </div>
 
           <br><br><br>
diff --git a/docs/community/contact.md b/docs/community/contact.md
index f05ce6fb..7cde82b4 100644
--- a/docs/community/contact.md
+++ b/docs/community/contact.md
@@ -20,7 +20,7 @@ Feedback to improve Apache Sedona: [Google Form](https://docs.google.com/forms/d
 
 ## Discord Server
 
-[![](https://dcbadge.vercel.app/api/server/9A3k5dEBsY)](https://discord.gg/9A3k5dEBsY)
+Join [Apache Sedona community server](https://discord.gg/9A3k5dEBsY)!
 
 ## Mailing list
 
@@ -40,10 +40,10 @@ Before submitting an issue, please:
 
 * Verify that the bug does in fact exist.
 * Search the issue tracker to verify there is no existing issue reporting the bug you’ve found.
-* Consider tracking down the bug yourself in the Wink’s source and submitting a patch along with your bug report. This is a great time saver for the Wink developers and helps ensure the bug will be fixed quickly.
+* Consider tracking down the bug yourself in the Sedona’s source and submitting a patch along with your bug report. This is a great time saver for the Sedona developers and helps ensure the bug will be fixed quickly.
 
 ### Feature Requests
 
-Enhancement requests for new features are also welcome. The more concrete and rationale the request is, the greater the chance it will incorporated into future releases.
+Enhancement requests for new features are also welcome. The more concrete and rationale the request is, the greater the chance it will be incorporated into future releases.
 
 Enter an issue in the [Sedona JIRA](https://issues.apache.org/jira/projects/SEDONA) or send an email to [dev@sedona.apache.org](https://lists.apache.org/list.html?dev@sedona.apache.org)
\ No newline at end of file
diff --git a/docs/community/contributor.md b/docs/community/contributor.md
index e8f7d53a..54f52762 100644
--- a/docs/community/contributor.md
+++ b/docs/community/contributor.md
@@ -11,19 +11,19 @@ A committer will be promoted to a PMC member when the community thinks he/she is
 Current Sedona PMC members are as follows:
 
 
-|        Name       |  GitHub ID |        Apache ID       |
-|:-----------------:|:----------:|:----------------------:|
-|    Adam Binford   | Kimahriman |  kimahriman@apache.org |
-| Kanchan Chowdhury | kanchanchy | kanchanchy@apache.org  |
-| Paweł Kociński    |  Imbruced  |   imbruced@apache.org  |
-|      Yitao Li     |            |   yitaoli@apache.org   |
-|   Netanel Malka   | netanel246 |    malka@apache.org    |
-|   Mohamed Sarwat  |            |   mosarwat@apache.org  |
-| Kengo Seki        | sekikn     | sekikn@apache.org      |
-|    Sachio Wakai   |  SW186000  |    swakai@apache.org   |
-|     Jinxuan Wu    |            |   jinxuanw@apache.org  |
-|       Jia Yu      |  jiayuasu  |    jiayu@apache.org    |
-|    Zongsi Zhang   |            | zongsizhang@apache.org |
+|        Name       |  GitHub ID  |        Apache ID       |
+|:-----------------:|:-----------:|:----------------------:|
+|    Adam Binford   | Kimahriman  |  kimahriman@apache.org |
+| Kanchan Chowdhury | kanchanchy  | kanchanchy@apache.org  |
+| Paweł Kociński    |  Imbruced   |   imbruced@apache.org  |
+|      Yitao Li     |  yitao-li   |   yitaoli@apache.org   |
+|   Netanel Malka   | netanel246  |    malka@apache.org    |
+|   Mohamed Sarwat  |   Sarwat    |   mosarwat@apache.org  |
+| Kengo Seki        |   sekikn    | sekikn@apache.org      |
+|    Sachio Wakai   |  SW186000   |    swakai@apache.org   |
+|     Jinxuan Wu    | jinxuan     |   jinxuanw@apache.org  |
+|       Jia Yu      |  jiayuasu   |    jiayu@apache.org    |
+|    Zongsi Zhang   | zongsizhang | zongsizhang@apache.org |
 
 
 ## Mentors
@@ -31,12 +31,13 @@ Current Sedona PMC members are as follows:
 Mentors from Apache Incubator help the project to turn into a good shape following the "Apache" way. Thank you, mentors!
 
 
-|       Name       | Apache id |
-|:---------------:|:------------------------:|
-| Felix Cheung |	felixcheung@apache.org |
-| Von Gosling| vongosling@apache.org |
-|Jean-Baptiste Onofré| jbonofre@apache.org |
-|  George Percivall | percivall@apache.org |
+|         Name         | Apache id |
+|:--------------------:|:------------------------:|
+|     Felix Cheung     |	felixcheung@apache.org |
+|     Von Gosling      | vongosling@apache.org |
+| Jean-Baptiste Onofré | jbonofre@apache.org |
+|   George Percivall   | percivall@apache.org |
+|     Sunil Govindan   |sunilg@apache.org|
 
 ## Become a committer
 
diff --git a/docs/community/publish.md b/docs/community/publish.md
index adfeaa47..2d68ee78 100644
--- a/docs/community/publish.md
+++ b/docs/community/publish.md
@@ -1,235 +1,164 @@
-# Publish Sedona
+# Make a Sedona release
 
 This page is for Sedona PPMC to publish Sedona releases.
 
-## Obtain Write Access to Sedona GitHub repo
-
-1. Verify you have a Github ID enabled with 2FA https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/
-2. Enter your Github ID into your Apache ID profile https://id.apache.org/
-3. Merge your Apache and GitHub accounts using GitBox (Apache Account Linking utility): https://gitbox.apache.org/setup/
-	* You should see 3 green checks in GitBox
-	* Wait at least 30  minutes for an email inviting you to Apache GitHub Organization and accept invitation
-4. After accepting the Github Invitation, verify that you are a member of the team https://github.com/orgs/apache/teams/sedona-committers
-5. Additionally, if you have been elected to the Sedona PPMC, verify you are part of the LDAP Sedona PPMC https://whimsy.apache.org/roster/ppmc/sedona
-
-## Prepare Secret GPG key
-
-1. Install GNUGPG if it was not installed before. On Mac: `brew install gnupg gnupg2`
-2. Generate a secret key. It must be RSA4096 (4096 bits long). 
-	* Run `gpg --full-generate-key`. If not work, run `gpg --default-new-key-algo rsa4096 --gen-key`
-	* At the prompt, specify the kind of key you want: Select `RSA`, then press `enter`
-    * At the prompt, specify the key size you want: Enter `4096`
-    * At the prompt, enter the length of time the key should be valid: Press `enter` to make the key never expire.
-    * Verify that your selections are correct.
-    * Enter your user ID information: use your real name and Apache email address.
-    * Type a secure passphrase.
-    * Use the `gpg --list-secret-keys --keyid-format=long` command to list the long form of the GPG keys.
-    * From the list of GPG keys, copy the long form of the GPG key ID you'd like to use (e.g., `3AA5C34371567BD2`)
-    * Run `gpg --export --armor 3AA5C34371567BD2`, substituting in the GPG key ID you'd like to use.
-    * Copy your GPG key, beginning with `-----BEGIN PGP PUBLIC KEY BLOCK-----` and ending with `-----END PGP PUBLIC KEY BLOCK-----`.
-3. Publish your armored key in major key servers: https://keyserver.pgp.com/
-4. Append your armored PGP public key to the `KEYS` file: https://dist.apache.org/repos/dist/dev/incubator/sedona/KEYS
-
-## Set up ASF username for Maven
-
-In your `~/.m2/settings.xml` file, add the following content. Please create one if it does not exist. Please replace ASF\_ID and ASF\_PASSWORD with your own ASF ID and password.
+You can read ASF guidelines: 1. ASF Incubator Distribution Guidelines: https://incubator.apache.org/guides/distribution.html 2. ASF Release Guidelines: https://infra.apache.org/release-publishing.html 3. ASF Incubator Release Votes Guidelines: https://issues.apache.org/jira/browse/LEGAL-469
 
-```
-<settings>
-  <servers>
-    <server>
-      <id>apache.snapshots.https</id>
-      <username>YOUR_ASF_ID</username>
-      <password>YOUR_ASF_PASSWORD</password>
-    </server>
-    <server>
-      <id>apache.releases.https</id>
-      <username>YOUR_ASF_ID</username>
-      <password>YOUR_ASF_PASSWORD</password>
-    </server>
-  </servers>
-</settings>
-```
-
-## Publish SNAPSHOTs
-
-### Publish Maven SNAPSHOTs
-
-This step is to publish the SNAPSHOTs to https://repository.apache.org
-
-The detailed requirement is on [ASF Infra website](https://infra.apache.org/publishing-maven-artifacts.html)
-
-#### Prepare for Spark 3.0 and Scala 2.12
-
-1. Prepare the SNAPSHOTs
-```
-mvn clean -Darguments="-DskipTests" release:prepare -DdryRun=true -DautoVersionSubmodules=true -Dresume=false
-```
-2. Deploy the SNAPSHOTs
-```
-mvn deploy -DskipTests
-```
+!!!warning
+    All scripts on this page should be run in your local Sedona Git repo under master branch via a single script file.
 
-If you are using Mac and see `sign artifacts failed`, please enter the following command in your terminal and re-compile again.
+## 0. Prepare an empty script file
 
+1. In your local Sedona Git repo under master branch, run
 ```bash
-GPG_TTY=$(tty)
-export GPG_TTY
+echo "#!/bin/bash" > create-release.sh
+chmod 777 create-release.sh
 ```
+2. Use your favourite GUI text editor to open `create-release.sh`.
+3. Then keep copying the scripts on this web page to replace all content in this text file.
+4. Do NOT directly copy/paste the scripts to your terminal because a bug in `clipboard.js` will create link breaks in such case. 
 
-#### Prepare for Spark 3.0 and Scala 2.13
+## 1. Check ASF copyright in all file headers
 
-1. Prepare the SNAPSHOTs
-```
-mvn clean -Darguments="-DskipTests -Dscala=2.13" release:prepare -DdryRun=true -DautoVersionSubmodules=true -Dresume=false
-```
-2. Deploy the SNAPSHOTs
-```
-mvn deploy -DskipTests -Dscala=2.13
-```
-
-## Check ASF copyright in all file headers
-
-1. Download [Apache Rat binary (.jar file)](https://creadur.apache.org/rat/download_rat.cgi).
-2. Run the following terminal script:
+1. Run the following script:
 ```bash
 #!/bin/bash
+wget -q https://dlcdn.apache.org//creadur/apache-rat-$RAT_VERSION/apache-rat-0.15-bin.tar.gz
+tar -xvf  apache-rat-0.15-bin.tar.gz
 git clone --shared --branch master https://github.com/apache/incubator-sedona.git sedona-src
-java -jar apache-rat-0.14.jar -d sedona-src > report.txt
-```
-3. Read the generated report.txt file and make sure all source code files have ASF header.
-4. Delete the generated report and cloned files
+java -jar apache-rat-0.15.jar -d sedona-src > report.txt
 ```
+2. Read the generated report.txt file and make sure all source code files have ASF header.
+3. Delete the generated report and cloned files
+```bash
+#!/bin/bash
 rm -rf sedona-src
 rm report.txt
 ```
 
-!!!note
-	Please read the following guidelines first: 1. ASF Incubator Distribution Guidelines: https://incubator.apache.org/guides/distribution.html 2. ASF Release Guidelines: https://infra.apache.org/release-publishing.html 3. ASF Incubator Release Votes Guidelines: https://issues.apache.org/jira/browse/LEGAL-469
-	
-## Publish releases
-
-### Update mkdocs.yml
-
-Please change the `sedona.current_version`, `sedona.current_rc`, `sedona.current_git_tag` and `sedona.current_snapshot` in `mkdocs.yml` to the version you want to publish. Do NOT change `sedona.next_version` at this moment. Then compile the website by `mkdocs serve`. This will generate the scripts listed on this page in your local browser.
+## 2. Update Sedona Python, R and Zeppelin versions
 
-### Update Sedona Python, R and Zeppelin versions
-
-Make sure the Sedona version in the following files are {{ sedona.current_version }}. Note that: Python and R versions cannot have "incubating" postfix.
+Make sure the Sedona version in the following files are {{ sedona_create_release.current_version }}. Note that: Python and R versions cannot have "incubating" postfix.
 
 1. https://github.com/apache/incubator-sedona/blob/master/python/sedona/version.py
 2. https://github.com/apache/incubator-sedona/blob/master/R/DESCRIPTION
 3. https://github.com/apache/incubator-sedona/blob/master/zeppelin/package.json
 
-### Stage the Release Candidate
 
-This step is to stage the release to https://repository.apache.org
+## 3. Update mkdocs.yml
 
-#### For Spark 3.0 and Scala 2.12
+* Please change the following variables in `mkdocs.yml` to the version you want to publish.
+    * `sedona_create_release.current_version`
+    * `sedona_create_release.current_rc`
+    * `sedona_create_release.current_git_tag`
+    * `sedona_create_release.current_snapshot`
+* Then compile the website by `mkdocs serve`. This will generate the scripts listed on this page in your local browser.
+* You can also publish this website if needed. See the instruction at bottom.
+
+## 4. Stage and upload release candidates
 
-1. Prepare a release. Manually enter the following variables in the terminal: release id: `{{ sedona.current_version }}`, scm tag id: `{{ sedona.current_git_tag }}`. You also need to provide GitHub username and password three times.
-```bash
-mvn clean release:prepare -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests"
-```
-2. Stage a release
 ```bash
-mvn clean release:perform -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests" 
-```
-3. Now the releases are staged. A tag and two commits will be created on Sedona GitHub repo.
+#!/bin/bash
 
-Now let's repeat the process to other Sedona modules. Make sure you use the correct SCM Git tag id `{{ sedona.current_git_tag }}` (see below).
+git checkout master
+git pull
 
-#### For Spark 3.0 and Scala 2.13
+echo "Step 1. Stage the Release Candidate to GitHub."
 
-```
-mvn org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag={{ sedona.current_git_tag }} -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests -Dscala=2.13"
-```
+mvn -q -B clean release:prepare -Dtag={{ sedona_create_release.current_git_tag }} -DreleaseVersion={{ sedona_create_release.current_version }} \
+-DdevelopmentVersion={{ sedona_create_release.current_snapshot }} -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests"
 
+echo "Now the releases are staged. A tag and two commits have been created on Sedona GitHub repo"
 
-### Upload Release Candidate
+echo "Step 2: Upload the Release Candidate to https://repository.apache.org."
 
-All release candidates must be first placed in ASF Dist Dev SVN before vote: https://dist.apache.org/repos/dist/dev/incubator/sedona
+# For Spark 3.0 and Scala 2.12
+mvn -q clean release:perform -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests" 
+
+# For Spark 3.0 and Scala 2.13
+mvn -q org.apache.maven.plugins:maven-release-plugin:2.3.2:perform \
+-DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag={{ sedona_create_release.current_git_tag }} \
+-DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests -Dscala=2.13"
+
+echo "Step 3: Upload Release Candidate on ASF SVN: https://dist.apache.org/repos/dist/dev/incubator/sedona"
+
+echo "Creating a folder on SVN..."
+
+svn mkdir -m "Adding folder" https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}
+
+echo "Creating release files locally..."
+
+git clone --shared --branch {{ sedona_create_release.current_git_tag}} https://github.com/apache/incubator-sedona.git apache-sedona-{{ sedona_create_release.current_version }}-src
+rm -rf apache-sedona-{{ sedona_create_release.current_version }}-src/.git
+tar czf apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz apache-sedona-{{ sedona_create_release.current_version }}-src
+mkdir apache-sedona-{{ sedona_create_release.current_version }}-bin
+cd apache-sedona-{{ sedona_create_release.current_version }}-src && mvn clean install -DskipTests -Dscala=2.12 && cd ..
+cp apache-sedona-{{ sedona_create_release.current_version }}-src/core/target/sedona-*{{ sedona_create_release.current_version}}.jar apache-sedona-{{ sedona_create_release.current_version }}-bin/
+cp apache-sedona-{{ sedona_create_release.current_version }}-src/sql/target/sedona-*{{ sedona_create_release.current_version}}.jar apache-sedona-{{ sedona_create_release.current_version }}-bin/
+cp apache-sedona-{{ sedona_create_release.current_version }}-src/viz/target/sedona-*{{ sedona_create_release.current_version}}.jar apache-sedona-{{ sedona_create_release.current_version }}-bin/
+cp apache-sedona-{{ sedona_create_release.current_version }}-src/python-adapter/target/sedona-*{{ sedona_create_release.current_version}}.jar apache-sedona-{{ sedona_create_release.current_version }}-bin/
+cp apache-sedona-{{ sedona_create_release.current_version }}-src/flink/target/sedona-*{{ sedona_create_release.current_version}}.jar apache-sedona-{{ sedona_create_release.current_version }}-bin/
+cd apache-sedona-{{ sedona_create_release.current_version }}-src && mvn clean install -DskipTests -Dscala=2.13 && cd ..
+cp apache-sedona-{{ sedona_create_release.current_version }}-src/core/target/sedona-*{{ sedona_create_release.current_version}}.jar apache-sedona-{{ sedona_create_release.current_version }}-bin/
+cp apache-sedona-{{ sedona_create_release.current_version }}-src/sql/target/sedona-*{{ sedona_create_release.current_version}}.jar apache-sedona-{{ sedona_create_release.current_version }}-bin/
+cp apache-sedona-{{ sedona_create_release.current_version }}-src/viz/target/sedona-*{{ sedona_create_release.current_version}}.jar apache-sedona-{{ sedona_create_release.current_version }}-bin/
+cp apache-sedona-{{ sedona_create_release.current_version }}-src/python-adapter/target/sedona-*{{ sedona_create_release.current_version}}.jar apache-sedona-{{ sedona_create_release.current_version }}-bin/
+cp apache-sedona-{{ sedona_create_release.current_version }}-src/flink/target/sedona-*{{ sedona_create_release.current_version}}.jar apache-sedona-{{ sedona_create_release.current_version }}-bin/
+tar czf apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz apache-sedona-{{ sedona_create_release.current_version }}-bin
+shasum -a 512 apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz > apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.sha512
+shasum -a 512 apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz > apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.sha512
+gpg -ab apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz
+gpg -ab apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz
+
+echo "Uploading local release files..."
+
+svn import -m "Adding file" apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz
+svn import -m "Adding file" apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.asc https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.asc
+svn import -m "Adding file" apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.sha512 https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.sha512
+svn import -m "Adding file" apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz
+svn import -m "Adding file" apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.asc https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.asc
+svn import -m "Adding file" apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.sha512 https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.sha512
+
+echo "Removing local release files..."
+
+rm apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz
+rm apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.asc
+rm apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.sha512
+rm apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz
+rm apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.asc
+rm apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.sha512
+rm -rf apache-sedona-{{ sedona_create_release.current_version }}-src
+rm -rf apache-sedona-{{ sedona_create_release.current_version }}-bin
 
-1. Make sure your armored PGP public key (must be encrypted by RSA-4096) is included in the `KEYS` file: https://dist.apache.org/repos/dist/dev/incubator/sedona/KEYS, and publish in major key servers: https://keyserver.pgp.com/
-2. Create a folder on SVN, such as `{{ sedona.current_git_tag }}`
-```bash
-#!/bin/bash
-svn mkdir -m "Adding folder" https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}
-```
-3. In a folder other than the Sedona git repo, run the following script to create six files and two folders.
-```bash
-#!/bin/bash
-git clone --shared --branch {{ sedona.current_git_tag}} https://github.com/apache/incubator-sedona.git apache-sedona-{{ sedona.current_version }}-src
-rm -rf apache-sedona-{{ sedona.current_version }}-src/.git
-tar czf apache-sedona-{{ sedona.current_version }}-src.tar.gz apache-sedona-{{ sedona.current_version }}-src
-mkdir apache-sedona-{{ sedona.current_version }}-bin
-cd apache-sedona-{{ sedona.current_version }}-src && mvn clean install -DskipTests -Dscala=2.12 && cd ..
-cp apache-sedona-{{ sedona.current_version }}-src/core/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
-cp apache-sedona-{{ sedona.current_version }}-src/sql/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
-cp apache-sedona-{{ sedona.current_version }}-src/viz/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
-cp apache-sedona-{{ sedona.current_version }}-src/python-adapter/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
-cp apache-sedona-{{ sedona.current_version }}-src/flink/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
-cd apache-sedona-{{ sedona.current_version }}-src && mvn clean install -DskipTests -Dscala=2.13 && cd ..
-cp apache-sedona-{{ sedona.current_version }}-src/core/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
-cp apache-sedona-{{ sedona.current_version }}-src/sql/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
-cp apache-sedona-{{ sedona.current_version }}-src/viz/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
-cp apache-sedona-{{ sedona.current_version }}-src/python-adapter/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
-cp apache-sedona-{{ sedona.current_version }}-src/flink/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
-tar czf apache-sedona-{{ sedona.current_version }}-bin.tar.gz apache-sedona-{{ sedona.current_version }}-bin
-shasum -a 512 apache-sedona-{{ sedona.current_version }}-src.tar.gz > apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512
-shasum -a 512 apache-sedona-{{ sedona.current_version }}-bin.tar.gz > apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512
-gpg -ab apache-sedona-{{ sedona.current_version }}-src.tar.gz
-gpg -ab apache-sedona-{{ sedona.current_version }}-bin.tar.gz
-```
-4. Upload six files to SVN and delete all created files using the following script
-```bash
-#!/bin/bash
-svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-src.tar.gz https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz
-svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc
-svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512 https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512
-svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-bin.tar.gz https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz
-svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc
-svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512 https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512
-rm apache-sedona-{{ sedona.current_version }}-src.tar.gz
-rm apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc
-rm apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512
-rm apache-sedona-{{ sedona.current_version }}-bin.tar.gz
-rm apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc
-rm apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512
-rm -rf apache-sedona-{{ sedona.current_version }}-src
-rm -rf apache-sedona-{{ sedona.current_version }}-bin
 ```
 
-### Vote in dev sedona.apache.org
+## 5. Vote in dev sedona.apache.org
 
-1. Check the status of the staging repo: [Locate and Examine Your Staging Repository
-](https://central.sonatype.org/pages/releasing-the-deployment.html#locate-and-examine-your-staging-repository). You should see 12 Sedona modules in total.
-2. Call for a vote in Sedona community and Apache incubator. Then close the staging repo.
-3. The vote will be open for at least 72 hours or until at least 3 "+1" PMC votes are cast
+### Vote email
 
-Here is a generated vote email. Please add changes at the end if needed:
+Please add changes at the end if needed:
 
 ```
-Subject: [VOTE] Release Apache Sedona {{ sedona.current_rc }}
+Subject: [VOTE] Release Apache Sedona {{ sedona_create_release.current_rc }}
 
 Hi all,
 
-This is a call for vote on Apache Sedona {{ sedona.current_rc }}. Please refer to the changes listed at the bottom of this email.
+This is a call for vote on Apache Sedona {{ sedona_create_release.current_rc }}. Please refer to the changes listed at the bottom of this email.
 
 Release notes:
-https://github.com/apache/incubator-sedona/blob/{{ sedona.current_git_tag }}/docs/setup/release-notes.md
+https://github.com/apache/incubator-sedona/blob/{{ sedona_create_release.current_git_tag }}/docs/setup/release-notes.md
 
 Build instructions:
-https://github.com/apache/incubator-sedona/blob/{{ sedona.current_git_tag }}/docs/setup/compile.md
+https://github.com/apache/incubator-sedona/blob/{{ sedona_create_release.current_git_tag }}/docs/setup/compile.md
 
 GitHub tag:
-https://github.com/apache/incubator-sedona/releases/tag/{{ sedona.current_git_tag }}
+https://github.com/apache/incubator-sedona/releases/tag/{{ sedona_create_release.current_git_tag }}
 
 GPG public key to verify the Release:
 https://downloads.apache.org/incubator/sedona/KEYS
 
 Source code and binaries:
-https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/
+https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/
 
 The vote will be open for at least 72 hours or until at least 3 "+1" PMC votes are cast
 
@@ -267,10 +196,12 @@ Original comment (Permalink from https://lists.apache.org/list.html):
 
 ```
 
-Here is a generated "pass" email:
+### Pass email
+
+Please count the votes and add the Permalink of the vote thread at the end.
 
 ```
-Subject: [RESULT][VOTE] Release Apache Sedona {{ sedona.current_rc }}
+Subject: [RESULT][VOTE] Release Apache Sedona {{ sedona_create_release.current_rc }}
 
 Dear all,
 
@@ -287,37 +218,39 @@ approval by the IPMC. If this vote passes too, the release is accepted and will
 
 ```
 
-### Vote in general incubator.apache.org
+## 6. Vote in general incubator.apache.org
 
-Here is a generated vote email. Please add changes at the end if needed.
+### Vote email
 
-The vote will be open for at least 72 hours or until at least 3 "+1" PMC votes are cast.
+1. Please add the permalink of Sedona Community vote thread
+2. Please add the permalink of Sedona Community vote result thread
+3. Please add changes at the end if needed.
 
 ```
-Subject: [VOTE] Release Apache Sedona {{ sedona.current_rc }}
+Subject: [VOTE] Release Apache Sedona {{ sedona_create_release.current_rc }}
 
 Hi all,
 
-This is a call for vote on Apache Sedona {{ sedona.current_rc }}. Please refer to the changes listed at the bottom of this email.
+This is a call for vote on Apache Sedona {{ sedona_create_release.current_rc }}. Please refer to the changes listed at the bottom of this email.
 
 Sedona Community vote thread (Permalink from https://lists.apache.org/list.html):
 
 Sedona community vote result thread (Permalink from https://lists.apache.org/list.html):
 
 Release notes:
-https://github.com/apache/incubator-sedona/blob/{{ sedona.current_git_tag }}/docs/setup/release-notes.md
+https://github.com/apache/incubator-sedona/blob/{{ sedona_create_release.current_git_tag }}/docs/setup/release-notes.md
 
 Build instructions:
-https://github.com/apache/incubator-sedona/blob/{{ sedona.current_git_tag }}/docs/setup/compile.md
+https://github.com/apache/incubator-sedona/blob/{{ sedona_create_release.current_git_tag }}/docs/setup/compile.md
 
 GitHub tag:
-https://github.com/apache/incubator-sedona/releases/tag/{{ sedona.current_git_tag }}
+https://github.com/apache/incubator-sedona/releases/tag/{{ sedona_create_release.current_git_tag }}
 
 GPG public key to verify the Release:
 https://downloads.apache.org/incubator/sedona/KEYS
 
 Source code and binaries:
-https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/
+https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/
 
 The vote will be open for at least 72 hours or until at least 3 "+1" PMC votes are cast
 
@@ -350,10 +283,12 @@ Original comment (Permalink from https://lists.apache.org/list.html):
 
 ```
 
-Here is a generated "pass" email:
+### Pass email
+
+Please count the votes and add the permalink of the vote thread.
 
 ```
-Subject: [RESULT][VOTE] Release Apache Sedona {{ sedona.current_rc }}
+Subject: [RESULT][VOTE] Release Apache Sedona {{ sedona_create_release.current_rc }}
 
 Dear all,
 
@@ -369,14 +304,18 @@ I will publish the release and make an annoucement once it is done.
 
 ```
 
-Here is a generated "announce" email. This email should be CCed to dev@sedona.apache.org:
+### Announce email
+
+1. This email should be CCed to dev@sedona.apache.org
+2. Please add the permalink of the incubator vote thread
+3. Please add the permalink of the incubator vote result thread
 
 ```
-Subject: [ANNOUNCE] Apache Sedona {{ sedona.current_version }} released
+Subject: [ANNOUNCE] Apache Sedona {{ sedona_create_release.current_version }} released
 
 Dear all,
 
-We are happy to report that we have released Apache Sedona (incubating) {{ sedona.current_version }}. Thank you again for your help.
+We are happy to report that we have released Apache Sedona (incubating) {{ sedona_create_release.current_version }}. Thank you again for your help.
 
 Apache Sedona (incubating) is a cluster computing system for processing large-scale spatial data. 
 
@@ -391,10 +330,10 @@ Website:
 http://sedona.apache.org/
 
 Release notes:
-https://github.com/apache/incubator-sedona/blob/sedona-{{ sedona.current_version }}/docs/setup/release-notes.md
+https://github.com/apache/incubator-sedona/blob/sedona-{{ sedona_create_release.current_version }}/docs/setup/release-notes.md
 
 Download links:
-https://github.com/apache/incubator-sedona/releases/tag/sedona-{{ sedona.current_version }}
+https://github.com/apache/incubator-sedona/releases/tag/sedona-{{ sedona_create_release.current_version }}
 
 Additional resources:
 Get started: http://sedona.apache.org/setup/overview/
@@ -407,148 +346,140 @@ Regards,
 Apache Sedona (incubating) Team
 ```
 
-### Failed vote
+## 7. Failed vote
+
+If a vote failed, do the following:
 
-If a vote failed, please first drop the staging repo on `repository.apache.org`. Then redo all the steps above. Make sure you use a new scm tag for the new release candidate when use maven-release-plugin (i.e., `{{ sedona.current_version}}-rc2`). You can change the `sedona.current_rc` and `sedona.current_git_tag` in `mkdocs.yml` to generate the script listed on this webpage.
+1. Drop the staging repo on `repository.apache.org`.
+2. Restart from Step 3 `Update mkdocs.yml`. Please use `{{ sedona_create_release.current_version}}-rc2` to update `sedona_create_release.current_rc` and `sedona_create_release.current_git_tag` in `mkdocs.yml` to generate the script listed on this webpage.
  
-### Release the package
+## 8. Release source code and Maven package
+
+### Upload releases
 
-1. Move all files in https://dist.apache.org/repos/dist/dev/incubator/sedona to https://dist.apache.org/repos/dist/release/incubator/sedona, using svn
-```bash
-#!/bin/bash
-svn mkdir -m "Adding folder" https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}
-wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz
-wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc
-wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512
-wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz
-wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc
-wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512
-svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-src.tar.gz https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz
-svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc
-svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512 https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512
-svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-bin.tar.gz https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz
-svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc
-svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512 https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512
-rm apache-sedona-{{ sedona.current_version }}-src.tar.gz
-rm apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc
-rm apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512
-rm apache-sedona-{{ sedona.current_version }}-bin.tar.gz
-rm apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc
-rm apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512
-```
-2. Add the download link to [Download page](/download#versions) and create a GitHub release.
-3. (1) Publish Python project to PyPi using twine. You must have the maintainer priviledge of https://pypi.org/project/apache-sedona/. (2) Publish Zeppelin plugin to NPM
-```bash
-#!/bin/bash
-git clone --shared --branch {{ sedona.current_git_tag}} https://github.com/apache/incubator-sedona.git apache-sedona-{{ sedona.current_version }}-src
-cd apache-sedona-{{ sedona.current_version }}-src/python && python3 setup.py sdist bdist_wheel && twine upload dist/* && cd ..
-cd zeppelin && npm publish && cd ..
-rm -rf apache-sedona-{{ sedona.current_version }}-src
-```
-4. Publish Sedona R to CRAN. More details to be added.
 ```bash
 #!/bin/bash
-R CMD build .
-R CMD check --as-cran apache.sedona_*.tar.gz
-```
-5. Instructions on how to submit a R package to CRAN are at the bottom of the [CRAN front page](https://cran.r-project.org/), “Submitting to CRAN.” Submission is now via [a web form](https://xmpalantir.wu.ac.at/cransubmit/).
-6. Close the staging repo on https://repository.apache.org. If the staging repo has been automatically closed by the system, please read below.
 
-#### Use Maven Release Plugin directly from an existing tag
+echo "Move all files in https://dist.apache.org/repos/dist/dev/incubator/sedona to https://dist.apache.org/repos/dist/release/incubator/sedona, using svn"
+svn mkdir -m "Adding folder" https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona_create_release.current_version }}
+wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz
+wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.asc
+wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.sha512
+wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz
+wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.asc
+wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona_create_release.current_rc }}/apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.sha512
+svn import -m "Adding file" apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona_create_release.current_version }}/apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz
+svn import -m "Adding file" apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.asc https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona_create_release.current_version }}/apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.asc
+svn import -m "Adding file" apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.sha512 https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona_create_release.current_version }}/apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.sha512
+svn import -m "Adding file" apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona_create_release.current_version }}/apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz
+svn import -m "Adding file" apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.asc https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona_create_release.current_version }}/apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.asc
+svn import -m "Adding file" apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.sha512 https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona_create_release.current_version }}/apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.sha512
+rm apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz
+rm apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.asc
+rm apache-sedona-{{ sedona_create_release.current_version }}-src.tar.gz.sha512
+rm apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz
+rm apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.asc
+rm apache-sedona-{{ sedona_create_release.current_version }}-bin.tar.gz.sha512
+
+echo "Re-staging releases to https://repository.apache.org"
+# For Spark 3.0 and Scala 2.12
+mvn -q org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag={{ sedona_create_release.current_git_tag }} -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests"
+# For Spark 3.0 and Scala 2.13
+mvn -q org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag={{ sedona_create_release.current_git_tag }} -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests -Dscala=2.13"
+```
+
+### Fix signature issues
+
+Please find the Sedona staging id on https://repository.apache.org under `staging repository`.
+
+Then run the following script. Replace `admin`, `admind123` with your Apache ID username and Apache ID password. Replace `stagingid` with the correct id.
 
-The staging repo on repository.apache.org is usually automatically closed before the voting is closed. If so, you need to do `mvn release:perform` from an existing tag. Note that: you have to use `org.apache.maven.plugins:maven-release-plugin:2.3.2:perform` due to a bug in maven release plugin from v2.4 (https://issues.apache.org/jira/browse/SCM-729). Make sure you use the correct scm tag (i.e.,  `{{ sedona.current_git_tag }}`).
+```bash
+#!/bin/bash
+username=admin
+password=admin123
+stagingid=1016
 
-##### For Spark 3.0 and Scala 2.12
 
-```
-mvn org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag={{ sedona.current_git_tag }} -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests"
-```
+echo "Re-uploading signatures to fix *failureMessage	Invalid Signature*"
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-common/{{ sedona_create_release.current_version }}/sedona-common-{{ sedona_create_release.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-core-3.0_2.12/{{ sedona_create_release.current_version }}/sedona-core-3.0_2.12-{{ sedona_create_release.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-core-3.0_2.13/{{ sedona_create_release.current_version }}/sedona-core-3.0_2.13-{{ sedona_create_release.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-sql-3.0_2.12/{{ sedona_create_release.current_version }}/sedona-sql-3.0_2.12-{{ sedona_create_release.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-sql-3.0_2.13/{{ sedona_create_release.current_version }}/sedona-sql-3.0_2.13-{{ sedona_create_release.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-3.0_2.12/{{ sedona_create_release.current_version }}/sedona-viz-3.0_2.12-{{ sedona_create_release.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-3.0_2.13/{{ sedona_create_release.current_version }}/sedona-viz-3.0_2.13-{{ sedona_create_release.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-3.0_2.12/{{ sedona_create_release.current_version }}/sedona-python-adapter-3.0_2.12-{{ sedona_create_release.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-3.0_2.13/{{ sedona_create_release.current_version }}/sedona-python-adapter-3.0_2.13-{{ sedona_create_release.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-flink_2.12/{{ sedona_create_release.current_version }}/sedona-flink_2.12-{{ sedona_create_release.current_version }}.pom
 
-##### For Spark 3.0 and Scala 2.13
+gpg -ab sedona-common-{{ sedona_create_release.current_version }}.pom
+gpg -ab sedona-core-3.0_2.12-{{ sedona_create_release.current_version }}.pom
+gpg -ab sedona-sql-3.0_2.12-{{ sedona_create_release.current_version }}.pom
+gpg -ab sedona-viz-3.0_2.12-{{ sedona_create_release.current_version }}.pom
+gpg -ab sedona-python-adapter-3.0_2.12-{{ sedona_create_release.current_version }}.pom
+gpg -ab sedona-flink_2.12-{{ sedona_create_release.current_version }}.pom
+gpg -ab sedona-core-3.0_2.13-{{ sedona_create_release.current_version }}.pom
+gpg -ab sedona-sql-3.0_2.13-{{ sedona_create_release.current_version }}.pom
+gpg -ab sedona-viz-3.0_2.13-{{ sedona_create_release.current_version }}.pom
+gpg -ab sedona-python-adapter-3.0_2.13-{{ sedona_create_release.current_version }}.pom
 
-```
-mvn org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag={{ sedona.current_git_tag }} -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests -Dscala=2.13"
-```
 
-#### Fix the error when close the staged repo
+curl -v -u $username:$password --upload-file sedona-common-{{ sedona_create_release.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-common/{{ sedona_create_release.current_version }}/sedona-common-{{ sedona_create_release.current_version }}.pom.asc
 
-In the last step, you may see many errors similar to the following:
-```
-typeId	signature-staging
-failureMessage	Invalid Signature: '/org/apache/sedona/sedona-python-adapter-3.0_2.12/{{ sedona.current_version }}/sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom.asc' is not a valid signature for 'sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom'.
-failureMessage	Invalid Signature: '/org/apache/sedona/sedona-viz-3.0_2.12/{{ sedona.current_version }}/sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom.asc' is not a valid signature for 'sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom'.
-```
+curl -v -u $username:$password --upload-file sedona-python-adapter-3.0_2.12-{{ sedona_create_release.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-3.0_2.12/{{ sedona_create_release.current_version }}/sedona-python-adapter-3.0_2.12-{{ sedona_create_release.current_version }}.pom.asc
 
-This is caused by a bug in the resolved-pom-maven-plugin in POM.xml. You will have to upload the signatures of the POM files mannualy.
+curl -v -u $username:$password --upload-file sedona-viz-3.0_2.12-{{ sedona_create_release.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-3.0_2.12/{{ sedona_create_release.current_version }}/sedona-viz-3.0_2.12-{{ sedona_create_release.current_version }}.pom.asc
 
-Please run the following script to reupload ASC files to the staging repo. Please make sure you use the correct Sedona staging repo ID, ASF username and password.
+curl -v -u $username:$password --upload-file sedona-core-3.0_2.12-{{ sedona_create_release.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-core-3.0_2.12/{{ sedona_create_release.current_version }}/sedona-core-3.0_2.12-{{ sedona_create_release.current_version }}.pom.asc
 
-```bash
-#!/bin/bash
-username=admin
-password=admin123
-stagingid=1016
+curl -v -u $username:$password --upload-file sedona-sql-3.0_2.12-{{ sedona_create_release.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-sql-3.0_2.12/{{ sedona_create_release.current_version }}/sedona-sql-3.0_2.12-{{ sedona_create_release.current_version }}.pom.asc
 
-wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-common/{{ sedona.current_version }}/sedona-common-{{ sedona.current_version }}.pom
-wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-core-3.0_2.12/{{ sedona.current_version }}/sedona-core-3.0_2.12-{{ sedona.current_version }}.pom
-wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-core-3.0_2.13/{{ sedona.current_version }}/sedona-core-3.0_2.13-{{ sedona.current_version }}.pom
-wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-sql-3.0_2.12/{{ sedona.current_version }}/sedona-sql-3.0_2.12-{{ sedona.current_version }}.pom
-wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-sql-3.0_2.13/{{ sedona.current_version }}/sedona-sql-3.0_2.13-{{ sedona.current_version }}.pom
-wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-3.0_2.12/{{ sedona.current_version }}/sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom
-wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-3.0_2.13/{{ sedona.current_version }}/sedona-viz-3.0_2.13-{{ sedona.current_version }}.pom
-wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-3.0_2.12/{{ sedona.current_version }}/sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom
-wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-3.0_2.13/{{ sedona.current_version }}/sedona-python-adapter-3.0_2.13-{{ sedona.current_version }}.pom
-wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-flink_2.12/{{ sedona.current_version }}/sedona-flink_2.12-{{ sedona.current_version }}.pom
+curl -v -u $username:$password --upload-file sedona-flink_2.12-{{ sedona_create_release.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-flink_2.12/{{ sedona_create_release.current_version }}/sedona-flink_2.12-{{ sedona_create_release.current_version }}.pom.asc
 
-gpg -ab sedona-common-{{ sedona.current_version }}.pom
-gpg -ab sedona-core-3.0_2.12-{{ sedona.current_version }}.pom
-gpg -ab sedona-sql-3.0_2.12-{{ sedona.current_version }}.pom
-gpg -ab sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom
-gpg -ab sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom
-gpg -ab sedona-flink_2.12-{{ sedona.current_version }}.pom
-gpg -ab sedona-core-3.0_2.13-{{ sedona.current_version }}.pom
-gpg -ab sedona-sql-3.0_2.13-{{ sedona.current_version }}.pom
-gpg -ab sedona-viz-3.0_2.13-{{ sedona.current_version }}.pom
-gpg -ab sedona-python-adapter-3.0_2.13-{{ sedona.current_version }}.pom
+curl -v -u $username:$password --upload-file sedona-python-adapter-3.0_2.13-{{ sedona_create_release.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-3.0_2.13/{{ sedona_create_release.current_version }}/sedona-python-adapter-3.0_2.12-{{ sedona_create_release.current_version }}.pom.asc
 
+curl -v -u $username:$password --upload-file sedona-viz-3.0_2.13-{{ sedona_create_release.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-3.0_2.13/{{ sedona_create_release.current_version }}/sedona-viz-3.0_2.13-{{ sedona_create_release.current_version }}.pom.asc
 
-curl -v -u $username:$password --upload-file sedona-common-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-common/{{ sedona.current_version }}/sedona-common-{{ sedona.current_version }}.pom.asc
+curl -v -u $username:$password --upload-file sedona-core-3.0_2.13-{{ sedona_create_release.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-core-3.0_2.13/{{ sedona_create_release.current_version }}/sedona-core-3.0_2.13-{{ sedona_create_release.current_version }}.pom.asc
 
-curl -v -u $username:$password --upload-file sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-3.0_2.12/{{ sedona.current_version }}/sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom.asc
+curl -v -u $username:$password --upload-file sedona-sql-3.0_2.13-{{ sedona_create_release.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-sql-3.0_2.13/{{ sedona_create_release.current_version }}/sedona-sql-3.0_2.13-{{ sedona_create_release.current_version }}.pom.asc
 
-curl -v -u $username:$password --upload-file sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-3.0_2.12/{{ sedona.current_version }}/sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom.asc
+rm *.pom
+rm *.asc
+```
 
-curl -v -u $username:$password --upload-file sedona-core-3.0_2.12-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-core-3.0_2.12/{{ sedona.current_version }}/sedona-core-3.0_2.12-{{ sedona.current_version }}.pom.asc
+### Manually close and release the package
 
-curl -v -u $username:$password --upload-file sedona-sql-3.0_2.12-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-sql-3.0_2.12/{{ sedona.current_version }}/sedona-sql-3.0_2.12-{{ sedona.current_version }}.pom.asc
+1. Click `Close` on the Sedona staging repo on https://repository.apache.org under `staging repository`
+2. Once the staging repo is closed, click `Release` on this repo.
 
-curl -v -u $username:$password --upload-file sedona-flink_2.12-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-flink_2.12/{{ sedona.current_version }}/sedona-flink_2.12-{{ sedona.current_version }}.pom.asc
 
-curl -v -u $username:$password --upload-file sedona-python-adapter-3.0_2.13-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-3.0_2.13/{{ sedona.current_version }}/sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom.asc
+## 9. Release Sedona Python and Zeppelin
 
-curl -v -u $username:$password --upload-file sedona-viz-3.0_2.13-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-3.0_2.13/{{ sedona.current_version }}/sedona-viz-3.0_2.13-{{ sedona.current_version }}.pom.asc
+You must have the maintainer priviledge of `https://pypi.org/project/apache-sedona/` and `https://www.npmjs.com/package/apache-sedona`
 
-curl -v -u $username:$password --upload-file sedona-core-3.0_2.13-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-core-3.0_2.13/{{ sedona.current_version }}/sedona-core-3.0_2.13-{{ sedona.current_version }}.pom.asc
+```bash
+#!/bin/bash
+git clone --shared --branch {{ sedona_create_release.current_git_tag}} https://github.com/apache/incubator-sedona.git apache-sedona-{{ sedona_create_release.current_version }}-src
+cd apache-sedona-{{ sedona_create_release.current_version }}-src/python && python3 setup.py sdist bdist_wheel && twine upload dist/* && cd ..
+cd zeppelin && npm publish && cd ..
+rm -rf apache-sedona-{{ sedona_create_release.current_version }}-src
+```
 
-curl -v -u $username:$password --upload-file sedona-sql-3.0_2.13-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-sql-3.0_2.13/{{ sedona.current_version }}/sedona-sql-3.0_2.13-{{ sedona.current_version }}.pom.asc
+## 10. Release Sedona R to CRAN.
 
-rm sedona-common-{{ sedona.current_version }}.pom.asc
-rm sedona-core-3.0_2.12-{{ sedona.current_version }}.pom.asc
-rm sedona-sql-3.0_2.12-{{ sedona.current_version }}.pom.asc
-rm sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom.asc
-rm sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom.asc
-rm sedona-flink_2.12-{{ sedona.current_version }}.pom.asc
-rm sedona-core-3.0_2.13-{{ sedona.current_version }}.pom.asc
-rm sedona-sql-3.0_2.13-{{ sedona.current_version }}.pom.asc
-rm sedona-viz-3.0_2.13-{{ sedona.current_version }}.pom.asc
-rm sedona-python-adapter-3.0_2.13-{{ sedona.current_version }}.pom.asc
+```bash
+#!/bin/bash
+R CMD build .
+R CMD check --as-cran apache.sedona_*.tar.gz
 ```
-admin is your Apache ID username and admin123 is your Apache ID password. You can find the correct upload path from the web interface.
 
-Once the staging repo is closed, click "Release" on the web interface.
+Then submit to CRAN using this [web form](https://xmpalantir.wu.ac.at/cransubmit/).
+
+## 11. Publish the doc website
 
-## Publish the doc website
-1. Update `sedona.next_version` in `mkdocs.yml` to the next version. Note that: the next version means the version after the version you want to release.
+1. Add the download link to [Download page](/download#versions) and create a GitHub release.
 2. Run `mkdocs build` in Sedona root directory. Copy all content in the `site` folder.
 3. Check out GitHub incubator-sedona-website [asf-site branch](https://github.com/apache/incubator-sedona-website/tree/asf-site)
 4. Use the copied content to replace all content in `asf-site` branch and upload to GitHub. Then `sedona.apache.org` will be automatically updated.
diff --git a/docs/community/release-manager.md b/docs/community/release-manager.md
new file mode 100644
index 00000000..2f778da0
--- /dev/null
+++ b/docs/community/release-manager.md
@@ -0,0 +1,106 @@
+# Become a release manager
+
+You only need to perform these steps if this is your first time being a release manager.
+
+### 0. Software requirement
+
+* JDK 8 or 11. Other versions might cause problems.
+* Maven 3.X. Your Maven must point to the correct JDK version (8 or 11). Check it by `mvn --version`
+* Git and SVN
+
+### 1. Obtain Write Access to Sedona GitHub repo
+
+1. Verify you have a Github ID enabled with 2FA https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/
+2. Enter your Github ID into your Apache ID profile https://id.apache.org/
+3. Merge your Apache and GitHub accounts using GitBox (Apache Account Linking utility): https://gitbox.apache.org/setup/
+	* You should see 5 green checks in GitBox
+	* Wait at least 30  minutes for an email inviting you to Apache GitHub Organization and accept invitation
+4. After accepting the Github Invitation, verify that you are a member of the team https://github.com/orgs/apache/teams/sedona-committers
+5. Additionally, if you have been elected to the Sedona PPMC, verify you are part of the LDAP Sedona PPMC https://whimsy.apache.org/roster/ppmc/sedona
+
+### 2. Prepare Secret GPG key
+
+1. Install GNUGPG if it was not installed before. On Mac: `brew install gnupg gnupg2`
+2. Generate a secret key. It must be RSA4096 (4096 bits long). 
+	* Run `gpg --full-generate-key`. If not work, run `gpg --default-new-key-algo rsa4096 --gen-key`
+	* At the prompt, specify the kind of key you want: Select `RSA`, then press `enter`
+    * At the prompt, specify the key size you want: Enter `4096`
+    * At the prompt, enter the length of time the key should be valid: Press `enter` to make the key never expire.
+    * Verify that your selections are correct.
+    * Enter your user ID information: use your real name and Apache email address.
+    * Type a secure passphrase. Make sure you remember this!
+    * Use the `gpg --list-secret-keys --keyid-format=long` command to list the long form of the GPG keys.
+    * From the list of GPG keys, copy the long form of the GPG key ID you'd like to use (e.g., `3AA5C34371567BD2`)
+    * Run `gpg --export --armor 3AA5C34371567BD2`, substituting in the GPG key ID you'd like to use.
+    * Copy your GPG key, beginning with `-----BEGIN PGP PUBLIC KEY BLOCK-----` and ending with `-----END PGP PUBLIC KEY BLOCK-----`.
+    * There must be an empty line between `-----BEGIN PGP PUBLIC KEY BLOCK-----` and the actual key.
+3. Publish your armored key in major key servers: https://keyserver.pgp.com/
+4. Use SVN to append your armored PGP public key to the `KEYS` files. You can ask Jia to help you with this step.
+     * https://dist.apache.org/repos/dist/dev/incubator/sedona/KEYS
+     * https://dist.apache.org/repos/dist/release/incubator/sedona/KEYS
+
+### 3. Add GPG_TTY environment variable
+
+In your `~/.bashrc` file, add the following content. Then restart your terminal.
+
+```bash
+GPG_TTY=$(tty)
+export GPG_TTY
+```
+
+### 4. Get GitHub personal access token (classic)
+
+You need to create a GitHub personal access token (classic). You can follow the instruction on [GitHub](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-personal-access-token-classic).
+
+In short:
+
+1. On your GitHub interface -> Settings
+2. In the left sidebar, click Developer settings.
+3. In the left sidebar, under  Personal access tokens, click Tokens (classic).
+4. Select Generate new token, then click Generate new token (classic).
+5. Give your token a descriptive name.
+6. To give your token an expiration, select the Expiration drop-down menu. Make sure you set the `Expiration` to `No expiration`.
+7. Select the scopes you'd like to grant this token. To use your token to access repositories from the command line, select `repo` and `admin:org`.
+8. Click Generate token.
+9. Please save your token somewhere because we will use it in the next step.
+
+
+### 5. Set up credentials for Maven
+
+In your `~/.m2/settings.xml` file, add the following content. Please create this file or `.m2` folder if it does not exist.
+
+Please replace all capitalized text with your own ID and password.
+
+```
+<settings>
+  <servers>
+    <server>
+      <id>github</id>
+      <username>YOUR_GITHUB_USERNAME</username>
+      <password>YOUR_GITHUB_TOKEN</password>
+    </server>
+    <server>
+      <id>apache.snapshots.https</id>
+      <username>YOUR_ASF_ID</username>
+      <password>YOUR_ASF_PASSWORD</password>
+    </server>
+    <server>
+      <id>apache.releases.https</id>
+      <username>YOUR_ASF_ID</username>
+      <password>YOUR_ASF_PASSWORD</password>
+    </server>
+  </servers>
+  <profiles>
+    <profile>
+      <id>gpg</id>
+      <properties>
+        <gpg.executable>gpg2</gpg.executable>
+        <gpg.passphrase>YOUR_GPG_PASSPHRASE</gpg.passphrase>
+      </properties>
+    </profile>
+  </profiles>
+  <activeProfiles>
+    <activeProfile>gpg</activeProfile>
+  </activeProfiles>
+</settings>
+```
\ No newline at end of file
diff --git a/docs/community/snapshot.md b/docs/community/snapshot.md
new file mode 100644
index 00000000..a32b2165
--- /dev/null
+++ b/docs/community/snapshot.md
@@ -0,0 +1,44 @@
+# Publish a SNAPSHOT version
+
+This step is to publish Maven SNAPSHOTs to https://repository.apache.org
+
+This is a good practice for a release manager to try out his/her credential setup.
+
+The detailed requirement is on [ASF Infra website](https://infra.apache.org/publishing-maven-artifacts.html)
+
+!!!warning
+All scripts on this page should be run in your local Sedona Git repo under master branch via a single script file.
+
+## 0. Prepare an empty script file
+
+1. In your local Sedona Git repo under master branch, run
+```bash
+echo "#!/bin/bash" > create-release.sh
+chmod 777 create-release.sh
+```
+2. Use your favourite GUI text editor to open `create-release.sh`.
+3. Then keep copying the scripts on this web page to replace all content in this text file.
+4. Do NOT directly copy/paste the scripts to your terminal because a bug in `clipboard.js` will create link breaks in such case.
+
+## 1. Upload snapshot versions
+
+In your Sedona GitHub repo, run this script:
+
+```bash
+#!/bin/bash
+
+git checkout master
+git pull
+
+# Spark 3.0 and Scala 2.12
+# Prepare the SNAPSHOTs
+mvn -q clean -Darguments="-DskipTests" release:prepare -DdryRun=true -DautoVersionSubmodules=true -Dresume=false
+# Deploy the SNAPSHOTs
+mvn -q deploy -DskipTests
+
+# Prepare for Spark 3.0 and Scala 2.13
+# Prepare the SNAPSHOTs
+mvn -q clean -Darguments="-DskipTests -Dscala=2.13" release:prepare -DdryRun=true -DautoVersionSubmodules=true -Dresume=false
+# Deploy the SNAPSHOTs
+mvn -q deploy -DskipTests -Dscala=2.13
+```
\ No newline at end of file
diff --git a/docs/community/vote.md b/docs/community/vote.md
index 32561550..46dde348 100644
--- a/docs/community/vote.md
+++ b/docs/community/vote.md
@@ -43,8 +43,8 @@ The content of the `verify.sh` script is as follows. ==If you copy the following
 ```bash
 #!/bin/bash
 
-SEDONA_CURRENT_RC={{ sedona.current_rc }}
-SEDONA_CURRENT_VERSION={{ sedona.next_version }}
+SEDONA_CURRENT_RC={{ sedona_create_release.current_rc }}
+SEDONA_CURRENT_VERSION={{ sedona_create_release.current_version }}
 
 ## Download a Sedona release
 wget -q https://downloads.apache.org/incubator/sedona/KEYS
diff --git a/mkdocs.yml b/mkdocs.yml
index 36b710ee..f2407022 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -84,9 +84,11 @@ nav:
         - Rules: community/rule.md
         - Develop: community/develop.md
       - Committer Guide:
-        - PMC List: community/contributor.md
-        - Publish the code: community/publish.md
-        - Vote the release: community/vote.md
+        - Project Management Committee: community/contributor.md
+        - Become a release manager: community/release-manager.md
+        - Publish a snapshot version: community/snapshot.md
+        - Make a release: community/publish.md
+        - Vote a release: community/vote.md
       - Publications: community/publication.md
     - GeoSpark Legacy Docs:
       - Download:
@@ -161,12 +163,13 @@ extra:
     - icon: fontawesome/brands/twitter
       link: 'https://twitter.com/ApacheSedona'
   sedona:
-    current_version: 1.3.0-incubating
-    current_git_tag: sedona-1.3.0-incubating-rc1
-    current_rc: 1.3.0-incubating-rc1
-    current_snapshot: 1.3.0-incubating-SNAPSHOT
-    next_version: 1.3.1-incubating
+    current_version: 1.2.1-incubating
     current_geotools: 1.3.0-27.2
+  sedona_create_release:
+    current_version: 1.3.0-incubating
+    current_git_tag: sedona-1.3.0-incubating-rc2
+    current_rc: 1.3.0-incubating-rc2
+    current_snapshot: 1.3.1-incubating-SNAPSHOT
 copyright: Copyright © 2022 The Apache Software Foundation
 markdown_extensions:
   - admonition
diff --git a/pom.xml b/pom.xml
index 877f0eab..5d272bb2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,6 +58,7 @@
     </scm>
 
     <properties>
+        <project.scm.id>github</project.scm.id>
         <geotools.version>24.0</geotools.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <dependency.scope>provided</dependency.scope>