I am trying to set up CI for my nodejs server. I would like to use github actions to ssh into my ec2 instance, where I can then git clone/pull my updated repo.
I can ssh into my ec2 instance on my local machine w no issues. I just do something like: "ssh -i keypar.pem username@some-ip.region.compute.amazonaws.com" and it connects. However, I can't seem to get a connection working on the worflow/actions script. Here is what I have in my workflow yml file:
name: CI
on: [push]
jobs: build:
runs-on: ubuntu-latest
steps:
- name: Connect
env:
DEPLOY_KEY: ${{ secrets.EC2 }}
run: |
eval `ssh-agent`
ssh-add - <<< "${DEPLOY_KEY}"
ssh ec2-user@ec2-instance-ip-here.us-east-2.compute.amazonaws.com
This script gets me the error "Error loading key "(stdin)": invalid format" . Also when I look at the deploy key section under repo settings, it says the key has never been used.
(Obviously I would need to install, clone, and perform other steps in addition to what is listed above.)
In summary:
1 how to I fix the invalid format error?
2 how do I load and reference the key pair?
There is a better way to perform SSH commands in a EC2:
name: CI
on: [push, pull_request]
jobs:
# test:
# ...
deploy:
name: "Deploy to staging"
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
# needs: test
steps:
- name: Configure SSH
run: |
mkdir -p ~/.ssh/
echo "$SSH_KEY" > ~/.ssh/staging.key
chmod 600 ~/.ssh/staging.key
cat >>~/.ssh/config <<END
Host staging
HostName $SSH_HOST
User $SSH_USER
IdentityFile ~/.ssh/staging.key
StrictHostKeyChecking no
END
env:
SSH_USER: ${{ secrets.STAGING_SSH_USER }}
SSH_KEY: ${{ secrets.STAGING_SSH_KEY }}
SSH_HOST: ${{ secrets.STAGING_SSH_HOST }}
- name: Stop the server
run: ssh staging 'sudo systemctl stop my-application'
- name: Check out the source
run: ssh staging 'cd my-application && git fetch && git reset --hard origin/master'
- name: Start the server
if: ${{ always() }}
run: ssh staging 'sudo systemctl start my-application'
Credit: GitHub Actions: How to run SSH commands (without third-party actions)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.