|  | #!/bin/bash | 
|  | # | 
|  | #    Licensed to the Apache Software Foundation (ASF) under one or more | 
|  | #    contributor license agreements.  See the NOTICE file distributed with | 
|  | #    this work for additional information regarding copyright ownership. | 
|  | #    The ASF licenses this file to You under the Apache License, Version 2.0 | 
|  | #    (the "License"); you may not use this file except in compliance with | 
|  | #    the License.  You may obtain a copy of the License at | 
|  | # | 
|  | #       http://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | #    Unless required by applicable law or agreed to in writing, software | 
|  | #    distributed under the License is distributed on an "AS IS" BASIS, | 
|  | #    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | #    See the License for the specific language governing permissions and | 
|  | #    limitations under the License. | 
|  | # | 
|  |  | 
|  | # This script will install and configure GPG key. | 
|  |  | 
|  | set -e | 
|  |  | 
|  | LOCAL_SVN_DIR=local_svn_dir | 
|  | ROOT_SVN_URL=https://dist.apache.org/repos/dist/ | 
|  | DEV_REPO=dev | 
|  | RELEASE_REPO=release | 
|  | HUDI_REPO=hudi | 
|  |  | 
|  | cd ~ | 
|  |  | 
|  | echo "=================Checking GPG Key====================" | 
|  | echo "You need a GPG key which reflects your Apache account." | 
|  | echo "Do you want to generate a new GPG key associated with your Apache account? [y|N]" | 
|  | read confirmation | 
|  | if [[ $confirmation = "y" ]]; then | 
|  | echo "===============Generating new GPG key================" | 
|  | sudo apt-get install rng-tools | 
|  | sudo rngd -r /dev/urandom | 
|  | gpg --full-generate-key | 
|  | fi | 
|  |  | 
|  | echo "================Listing all GPG keys=================" | 
|  | gpg --list-keys | 
|  | echo "Please copy the public key which is associated with your Apache account:" | 
|  | read pub_key | 
|  |  | 
|  | echo "===========Configuring git signing key===============" | 
|  | git config --global user.signingkey $pub_key | 
|  | git config --list | 
|  |  | 
|  | echo "===========Adding your key into KEYS file============" | 
|  | echo "It's required to append your key into KEYS file in dist.apache.org" | 
|  | echo "Have you put your key in KEYS? [y|N]" | 
|  | read confirmation | 
|  | if [[ $confirmation != "y" ]]; then | 
|  | echo "Only PMC member can write into dist.apache.org. Are you a PMC member? [y|N]" | 
|  | read pmc_permission | 
|  | if [[ $pmc_permission != "y" ]]; then | 
|  | echo "Please ask a PMC member to help you add your key in dev@ list." | 
|  | echo "Skip adding key into dist.apache.org/KEYS file." | 
|  | else | 
|  | echo "Please input your name: " | 
|  | read name | 
|  | echo "Please input you Apache account creds for checking out ${ROOT_SVN_URL} and adding your key to KEYS file" | 
|  | echo "username: " | 
|  | read apache_username | 
|  | echo "password: " | 
|  | read passowrd | 
|  | echo "======Starting updating KEYS file in dev repo====" | 
|  | if [[ -d ${LOCAL_SVN_DIR} ]]; then | 
|  | rm -rf ${LOCAL_SVN_DIR} | 
|  | fi | 
|  | mkdir ${LOCAL_SVN_DIR} | 
|  | cd ${LOCAL_SVN_DIR} | 
|  | svn --username=${apache_username} --password=${passowrd} co ${ROOT_SVN_URL}/${DEV_REPO}/${HUDI_REPO} | 
|  | cd ${HUDI_REPO} | 
|  | (gpg --list-sigs ${name} && gpg --armor --export ${name}) >> KEYS | 
|  | svn status | 
|  | echo "Please review all changes. Do you confirm to commit? [y|N]" | 
|  | read commit_confirmation | 
|  | if [[ $commit_confirmation = "y" ]]; then | 
|  | svn --username=${apache_username} --password=${passowrd} commit --no-auth-cache KEYS | 
|  | else | 
|  | echo "Not commit new changes into ${ROOT_SVN_URL}/${DEV_REPO}/${HUDI_REPO}${DEV_REPO}/KEYS" | 
|  | fi | 
|  | cd ~ | 
|  | if [[ -d ${LOCAL_SVN_DIR} ]]; then | 
|  | rm -rf ${LOCAL_SVN_DIR} | 
|  | fi | 
|  | mkdir ${LOCAL_SVN_DIR} | 
|  | cd ${LOCAL_SVN_DIR} | 
|  | echo "===Starting updating KEYS file in release repo===" | 
|  | svn --username=${apache_username} --password=${passowrd} co ${ROOT_SVN_URL}/${RELEASE_REPO}/${HUDI_REPO} | 
|  | cd ${HUDI_REPO} | 
|  | (gpg --list-sigs ${name} && gpg --armor --export ${name}) >> KEYS | 
|  | svn status | 
|  | echo "Please review all changes. Do you confirm to commit? [y|N]" | 
|  | read commit_confirmation | 
|  | if [[ $commit_confirmation = "y" ]]; then | 
|  | svn --username=${apache_username} --password=${passowrd} commit --no-auth-cache KEYS | 
|  | else | 
|  | echo "Not commit new changes into ${ROOT_SVN_URL}/${DEV_REPO}/${HUDI_REPO}${RELEASE_REPO}/KEYS" | 
|  | fi | 
|  |  | 
|  | cd ~ | 
|  | rm -rf ${LOCAL_SVN_DIR} | 
|  | fi | 
|  | fi | 
|  |  | 
|  | echo "================Setting up gpg agent=================" | 
|  | eval $(gpg-agent --daemon --no-grab --write-env-file $HOME/.gpg-agent-info) | 
|  | export GPG_TTY=$(tty) | 
|  | export GPG_AGENT_INFO |