使用 GitHub Actions 部署 .Net 5 程序

最近尝试了一下 GitHub 提供的自动化工具 Actions,简单实现了一下 CI/CD。

配置文件需要放在项目对应的目录下:.github/workflows/deploy.yml
deploy.yml 具体内容如下:


name: Deploy

on: 
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Setup .NET
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: 5.0.x
    - name: Dotnet Publish
      run: dotnet publish CdSite -c Release -o deploy
    - name: Copy via ssh
      uses: garygrossgarten/github-action-scp@release
      with:
        local: /home/runner/work/CdSite.NetCore/CdSite.NetCore/deploy/
        remote: ${{ secrets.REMOTE_TARGET }}
        host: ${{ secrets.REMOTE_HOST }}
        username: ${{ secrets.REMOTE_USER }}
        privateKey: ${{ secrets.REMOTE_SSH_KEY }}
    - name: Run SSH command
      uses: garygrossgarten/github-action-ssh@release
      with:
        command: sudo service NAME_OF_YOUR_APP start
        host: ${{ secrets.REMOTE_HOST }}
        username: ${{ secrets.REMOTE_USER }}
        privateKey: ${{ secrets.REMOTE_SSH_KEY }}

其中的 REMOTE_TARGET、REMOTE_HOST、REMOTE_USER、REMOTE_SSH_KEY 需要在 GitHub 当前项目的 Settings -> Secrets 中配置,用来保存一些在自动部署中使用但又不方便公开的服务器信息。

REMOTE_HOST: 服务器地址,可以是 IP 或者域名
REMOTE_TARGET: 服务器部署的文件路径
REMOTE_USER: ssh 登录的用户名
REMOTE_SSH_KEY: ssh 私钥

这里有一个坑,在配置私钥的时候,习惯性把私钥文件“id_rsa”掐头去尾,只留中间的有效部分,也就是把下面私钥中的第一行和最后一行去掉。

-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAyH0ha9VDm2a9TZfdb8TSlWwwvJdNkNgRnNerL27zUlcv/wH7
6gdL12u0Mt3Vx6d4EJjWrHDrUVmmGAQTNt+XtE+tmEjrH3LVojNFkSzmvGBwXXcU
...
lYbYtA0CgYEAgCHSSDmEPHHgSaycqQQYRAz4EL4rgiDkzGZhRg0RrzRfQE//lWqJ
BKq+LYp3+1dpCoChGGrCoz6W0+eIALb5QkuT+uXrOPb/0ipm79VGCTZJ+CWmT7q8
mUzhJQg3LTm7fusSKvRRwUhG+vTkLyWNSU2dfFzEHPvZ5CCKEI7f22o=
-----END RSA PRIVATE KEY-----

但在执行的过程中会出现
Error: config.privateKey does not exist at given fs path
的错误。在相关 Issue 中也有许多人遇到这个问题,其实配置完整的私钥就可以了。

原文地址:https://www.cnblogs.com/cdyang/p/github-actions-config.html