如何使用bash cli(没有ruby)加密Travis CI配置的API密钥?

问题描述 投票:3回答:1

我一直在阅读API访问密钥的Travis CI documentation about the encryption,他们建议使用他们的ruby gem。有没有其他方法可以做到这一点,所以我不必安装整个ruby环境并使用我的GitHub凭据登录?

here中所述,可以轻松下载公钥。是否有可能在openssl左右使用它并获得与使用travis encrypt相同的结果?

ruby bash encryption travis-ci
1个回答
3
投票

为了解决这个问题,我创建了一个小的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中找到。

© www.soinside.com 2019 - 2024. All rights reserved.