Skip to content
Snippets Groups Projects
generate_travis_deploy_key 1.67 KiB
Newer Older
  • Learn to ignore specific revisions
  • Nicolas Pernoud's avatar
    Nicolas Pernoud committed
    #!/bin/bash
    
    set -e
    
    if [ -z "$GITHUB_TOKEN" ]; then
      echo ""
      echo "GITHUB_TOKEN environment variable is missing"
      echo ""
      echo "TRAVIS DEPLOY KEY GENERATOR"
      echo ""
      echo "What it does : generate a new private and public key, add the public key as a deploy key
      with write access to the origin remote github repository, encrypt the private key as
      github_deploy_key.enc and add the configuration necessary to use it in .travis.yml file"
      echo ""
      echo "Use it like this:"
      echo ""
      echo "  GITHUB_TOKEN=\`cat ~/secret/GITHUB_TOKEN\` ./generate_travis_deploy_key"
      echo ""
      echo "where ~/secret/GITHUB_TOKEN is a file containing a github token with write access to the current repository : (origin)"
      echo ""
      echo "You must have the travis executable installed on your system and available in the PATH"
      echo ""
      exit
    fi
    
    url="$(git config --get remote.origin.url)"
    reponame="$(echo $url | cut -d/ -f2 | cut -d. -f1)"
    
    # generate a new private and public key
    ssh-keygen -t rsa -b 4096 -f github_deploy_key -N '' -C $url -q 1>/dev/null
    
    pubkey="$(cat github_deploy_key.pub)"
    
    # add the PUBLIC key to the github repository as a deploy key with write access
    curl https://api.github.com/repos/konnectors/$reponame/keys -H "Authorization: token $GITHUB_TOKEN" --data @- << EOF
    {
      "title": "travis deploy key",
      "key": "$pubkey",
      "read_only": false
    }
    EOF
    
    # Synchronize Travis to get latest repo
    travis sync --pro
    # use travis to encrypt the private key as github_deploy_key.enc and remove the private key
    travis encrypt-file github_deploy_key --pro --add --no-interactive -w /tmp/github_deploy_key -f
    git add github_deploy_key.enc
    
    # cleaning
    rm github_deploy_key
    rm github_deploy_key.pub