GitHub Action
Capistrano deploy
Github deploy action for Capistrano. Use this action to automate your capistrano deployment process.
Ruby should be installed with official ruby action (https://github.com/actions/setup-ruby)
Environment where deploy is to be performed to. E.g. "production", "staging". Default value is empty
Required Symmetric key to decrypt private RSA key. Must be a string.
Path to the encrypted key. Default "config/deploy_id_rsa_enc"
. You have to use either enc_rsa_key_pth
or enc_rsa_key_val
.
Contents of the encrypted key. Best to use as repository secret. You have to use either enc_rsa_key_pth
or enc_rsa_key_val
.
The directory from which to run the deploy commands, including bundle install
.
The version of Bundler to install before running the bundle-command. By default Bundler v1.17.3 is used.
No outputs
- Generate SSH keys on the target machine
$ ssh-keygen
- Export public key to the
authorized_keys
to allow the usage of this keypair to login
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- Add public key from
~/.ssh/id_rsa.pub
to your repository's deployment keys via Settings / Deploy keys / Add - Encrypt your private key with a strong password. Please use these options, otherwise this action may not be able to decrypt your key.
$ openssl enc -aes-256-cbc -md sha512 -salt -in .ssh/id_rsa -out deploy_id_rsa_enc -k PASSWORD -a
- Add
deploy_id_rsa_enc
file to your repository. Suggested path isconfig/deploy_id_rsa_enc
- Save the password used in step 4 as a secret in repository settings via Settings / Secrets / Add
- Create YAML configuration for your workflow (example below)
name: Deploy with Capistrano
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up Ruby
uses: actions/setup-ruby@v1
with:
ruby-version: 2.6
- name: Restore Bundler cache
id: cache
uses: actions/cache@v1
with:
path: vendor/bundle
key: ${{ runner.os }}-bundle-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-bundle-
- uses: miloserdow/[email protected]
with:
target: production
deploy_key: ${{ secrets.DEPLOY_ENC_KEY }}