Github Actions

264 阅读2分钟

ssh-keygen

使用 ssh-keygen 生成私钥和公钥。

// ssh-keygen -t ed25519 -C "youremail@example.com"

ssh-keygen -t rsa -C "youremail@example.com"

~/.ssh 目录下可以看到 id_rsaid_rsa.pub 等文件,其中私钥就是 id_rsa ,公钥就是 id_rsa.pub ,这就是密钥对,一个可用于加密,另一个可用于解密。

当有多个 ssh-key 配置时,在使用 ssh-keygen 创建时重新命名(如:~/.ssh/id_rsa_gitee ),避免覆盖。

vi ~/.ssh/config

#  github 配置
Host github
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_github

#  gitee 配置
Host gitee
  HostName gitee.com
  User git
  IdentityFile ~/.ssh/id_rsa_gitee

# ubuntu
Host ubuntu
  HostName 192.168.0.1
  User root
  IdentityFile ~/.ssh/id_rsa_ubuntu

使用 ssh-add 将密钥添加到 ssh-agent

ssh-add ~/.ssh/id_rsa_github

远程免密码登录服务器时,可使用 scp 命令将公钥传至服务器 ~/.ssh/authorized_keys

scp

scp 用于本地和远程文件传输。

本地拷贝到远程:

scp -r local_folder remote_username@remote_ip:remote_folder

远程拷贝到本地:

scp -r remote_ip:remote_folder local_folder 

github actions

创建配置文件

在仓库根目录下,创建 .github/workflows/main.yml 文件,该 yml 文件就是你需要执行操作的一些配置。

详细配置

例如,将代码同步至 gitee ,并部署到 gitee pages 和自己的服务器。

name: CI
on:
  push:
    branches:
      - develop
    paths-ignore:
      - LICENSE
      - README.md
      - 'doc/**'
      - 'configs/**'
      - 'scripts/**'
jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v3
      - name: 同步到 gitee
        uses: wearerequired/git-mirror-action@master
        env:
          SSH_PRIVATE_KEY: ${{ secrets.GITEE_SERVER_KEY }}
        with:
          source-repo: git@github.com:ahyiru/ihuxy.git
          destination-repo: git@gitee.com:yiru/ihuxy.git
      - name: 打包
        run: npm i && npm run build
      - name: 部署到 Gitee Pages
        uses: yanglbme/gitee-pages-action@main
        with:
          gitee-username: yiru
          gitee-password: ${{ secrets.GITEE_SERVER_PASSWORD }}
          gitee-repo: yiru/ihuxy
          branch: develop
      - name: 部署到服务器
        uses: easingthemes/ssh-deploy@main
        env:
          SSH_PRIVATE_KEY: ${{ secrets.IHUXY_SERVER_KEY }}
          ARGS: "-rltgoDzvO --delete"
          SOURCE: "app/build/"
          REMOTE_HOST: ${{ secrets.IHUXY_SERVER_HOST }}
          REMOTE_PORT: ${{ secrets.IHUXY_SERVER_PORT }}
          REMOTE_USER: ${{ secrets.IHUXY_SERVER_USERNAME }}
          TARGET: ${{ secrets.IHUXY_SERVER_DIR }}
      - name: 重启服务
        uses: appleboy/ssh-action@master
        with: 
          host: ${{ secrets.IHUXY_SERVER_HOST }}
          username: ${{ secrets.IHUXY_SERVER_USERNAME }}
          key: ${{ secrets.IHUXY_SERVER_KEY }}
          script: reboot

详细配置可查看 官方文档

配置GitHub仓库

  • 配置 SSH keys ,将 id_rsa_github.pub 里的内容拷贝到 key 框,title 自己随便取。

  • 打开你的网站代码仓库,点击 Settings 标签,找到 Secrets ,点击下面的 Actions 添加参数。

actions.png

rsa 密钥配置

github actions

GitHub 仓库添加 Actions

name 填写自定义的变量名,如 GITEE_SERVER_KEY

id_rsa_gitee 里的内容拷贝到 value 框,包含 BEGINEND 内容。

gitee

登录 gitee ,选择设置 -> ssh 公钥,将 id_rsa_gitee.pub 的内容复制到公钥的输入框里,公钥的标题可以自己填写。

服务器

将公钥内容拷贝到服务器 ~/.ssh/authorized_keys 文件里面。

jobs.png