Question

Github action deploy dotnet app to a single droplet

How would I go about creating a github action to deploy a dotnet app to an existing droplet - without docker?

If that’s not possible, can I SSH into the droplet using a pwd and running a command inside of it?

Basically I want to either get the DLLs from github onto the droplet, or alternatively SSH into the droplet and run a script that pulls the source from git, and builds the app on the droplet itself


Submit an answer

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

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.

Want to learn more? Join the DigitalOcean Community!

Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in Q&A, subscribe to topics of interest, and get courses and tools that will help you grow as a developer and scale your project or business.

There are a number of 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.