Question

How to deploy using Github action?

Posted December 4, 2019 14.2k views
Deployment

I did saw the example repository of kubernetes, but it is not really helpful.

My workflow it pretty simple, just pull the changes from the specific branch and execute the script command to run the server.

I tried understanding a bunch of commands from doctl but it didn’t really helped.

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
2 answers

doctl is designed to help manage DigitalOcean resources. You can use it to create Droplets, databases, Kubernetes cluster, etc. If you’re looking to copy files and execute a script on an already existing Droplet, you might want to look at some of the GitHub Actions that exist for working with SHH and SCP. Here’s an example using appleboy/ssh-action and appleboy/scp-action
:

name: Deploy

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1

    - name: Copy file via scp
      uses: appleboy/scp-action@master
      env:
        HOST: ${{ secrets.HOST }}
        USERNAME: ${{ secrets.USERNAME }}
        PORT: ${{ secrets.PORT }}
        KEY: ${{ secrets.SSHKEY }}
      with:
        source: "."
        target: "/opt/app"

    - name: Executing remote  command
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.HOST }}
        USERNAME: ${{ secrets.USERNAME }}
        PORT: ${{ secrets.PORT }}
        KEY: ${{ secrets.SSHKEY }}
        script: cat /opt/app/README.md

This copies the git repo to /opt/app on the remote machine. Then, just as an example, it runs a remote command cat /opt/app/README.md

A couple things to note:

  • It expects the SSH private key, the Droplet’s IP address, the port being used for SSH (e.g. 22), and the username (e.g. root) to be configured as GitHub secrets.
  • I would strongly recommend creating an SSH key specifically for this action/repo rather than re-using an existing one.

Check out the README files for the specific actions for more info.

Hello asb,

I’m not able to have this script working.
I generated a SSH key on my droplet server following this link.

Is this SSH key that I need to use in the secrets?

Thank you!
Oscar

Submit an Answer