我一直在阅读API访问密钥的Travis CI documentation about the encryption,他们建议使用他们的ruby gem。有没有其他方法可以做到这一点,所以我不必安装整个ruby环境并使用我的GitHub凭据登录?
如here中所述,可以轻松下载公钥。是否有可能在openssl左右使用它并获得与使用travis encrypt
相同的结果?
为了解决这个问题,我创建了一个小的bash脚本:
#!/bin/bash
usage() { echo -e "Travis Encrypt Script\nUsage:\t$0 \n -r\t<username/repository> \n -e\t<string which should be encrypted>" 1>&2; exit 1; }
while getopts ":r:e:" param; do
case "${param}" in
r)
r=${OPTARG}
;;
e)
e=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((OPTIND -1))
if [ -z "${r}" ] || [[ !(${r} =~ [[:alnum:]]/[[:alnum:]]) ]] || [ -z "${e}" ]; then
usage
fi
key_match="\"key\":\"([^\"]+)\""
key_url="https://api.travis-ci.org/repos/${r}/key"
request_result=$(curl --silent $key_url)
if [[ !($request_result =~ $key_match) ]]; then
echo "Couldn't retrieve key from ${key_url}. "
usage
fi
echo -n "${e}" | openssl rsautl -encrypt -pubin -inkey <(echo -e "${BASH_REMATCH[1]}") | openssl base64 -A
echo
它也可以在这个Github Gist中找到。