Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Github actions 自动化部署到腾讯云轻量服务器 #4

Closed
bigTig opened this issue May 10, 2023 · 3 comments
Closed

Github actions 自动化部署到腾讯云轻量服务器 #4

bigTig opened this issue May 10, 2023 · 3 comments

Comments

@bigTig
Copy link
Owner

bigTig commented May 10, 2023

自动部署到 腾讯云轻量服务器

# 一个 workflow,名为 Deploy

name: Deploy

on: # 此 CI/CD 触发时的事件
push: # 在代码提交时自动触发
branches: - develop # 触发的分支

# 一个 CI/CD 的工作流有许多 jobs 组成,比如最典型的 job 是 lint,test,build。

jobs:
build-and-deploy: # 构建 job
runs-on: ubuntu-latest # 跑 workflow 的服务器系统

    steps: # job的一系列动作
      # 切换分支获取源码
      - name: Checkout # step的名称,将会在 github action 的控制台中显示
        uses: actions/checkout@v3 # 选择一个action,可以理解为若干 steps.run,有利于代码复用

      # 安装使用 node:14.18.0
      - name: Node
        uses: actions/setup-node@v3
        with:
          node-version: 14.18.0 # node版本

      # 运行命令,npm install
      - name: Install
        run: node -v && yarn

      # 运行命令,npm run build
      - name: Build
        run: yarn build

      # 部署到腾讯云服务器
      - name: Upload files to server
        uses: appleboy/scp-action@master
        with:
          host: ${{ secrets.SERVER_SSH_HOST }} # 服务器域名
          username: ${{ secrets.SERVER_SSH_USER }} # 腾讯云默认用户名为root
          key: ${{ secrets.SERVER_SSH_KEY }} # 本地.ssh文件下的私钥id_rsa,存在secrets中
          source: './dist' # 源目录,相对于$GITHUB_WORKSPACE根目录的路径
          target: ${{ secrets.SERVER_SSH_TARGET }} # 目标目录

@bigTig
Copy link
Owner Author

bigTig commented May 10, 2023

linux之ssh-keygen命令

为ssh生成、管理和转换认证密钥,ssh-keygen命令 用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。
SSH 密钥默认保留在 ~/.ssh 目录中。 如果没有 ~/.ssh 目录,ssh-keygen命令会使用正确的权限创建一个。

命令语法

ssh-keygen [选项]

命令选项

-b:指定密钥长度;
-e:读取openssh的私钥或者公钥文件;
-C:添加注释;
-f:指定用来保存密钥的文件名;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-N:提供一个新密语;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型。

基本示例

以下 ssh-keygen 命令默认在 ~/.ssh 目录中生成 4096 位 SSH RSA 公钥和私钥文件。 如果当前位置存在 SSH 密钥对,这些文件将被覆盖。

ssh-keygen -m PEM -t rsa -b 4096

使用ssh-kengen会在~/.ssh/目录下生成两个文件,不指定文件名和密钥类型的时候,默认生成的两个文件是

  • id_rsa 第一个是私钥文件
  • id_rsa.pub 第二个是公钥文件

指定秘钥文件路径

ssh-keygen -t rsa -C '[email protected]' -f ~/.ssh/github_id_rsa

或者,在指定存放文件时输入一个新的文件名

Enter file in which to save the key(/Users/rumenz/.ssh/id_rsa):id_rsa_gitlab

多个SSH key的管理的情况就需要指定秘钥文件名。

@bigTig bigTig pinned this issue May 10, 2023
@bigTig
Copy link
Owner Author

bigTig commented May 13, 2023

要在 GitHub 仓库中创建 GitHub Actions,您可以按照以下步骤操作:

  1. 在您的 GitHub 仓库中,单击 "Actions" 选项卡,然后单击 "New workflow" 按钮。

  2. 在 "Choose a workflow" 面板中,您可以从多个示例工作流中选择一个,也可以创建自己的工作流。

  3. 在工作流文件中,您可以指定工作流的名称、触发条件和具体操作。

@bigTig
Copy link
Owner Author

bigTig commented May 13, 2023

您可以将服务器的 SSH 私钥存储到 GitHub Actions 的 secrets 中,以便在工作流程中使用它来访问您的服务器。

要将SSH 私钥存储到 GitHub Actions 的 secrets 中,请按照以下步骤操作:

  1. 生成 SSH 公钥和私钥。

在本地计算机上打开终端,并运行以下命令:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

按照提示输入文件名和密码等信息。默认情况下,SSH 私钥将存储在 ~/.ssh/id_rsa 文件中,而公钥将存储在 ~/.ssh/id_rsa.pub 文件中。

  1. 添加 SSH 公钥到您的服务器。

将您的 SSH 公钥添加到您的服务器上,以便您可以使用 SSH 私钥在 GitHub Actions 工作流程中访问该服务器。将公钥内容复制到您的服务器上的 ~/.ssh/authorized_keys 文件中。如果该文件不存在,请创建它并将公钥内容粘贴到该文件中。

  1. 将 SSH 私钥存储到 GitHub Actions 的 secrets 中。

打开您的 GitHub 仓库,并导航到 Settings -> Secrets。单击 New repository secret,然后输入名称和值。名称应为 SSH_PRIVATE_KEY,值应为您的 SSH 私钥的内容。请确保在添加 secrets 时勾选了 Allow write access 选项。

  1. 在 GitHub Actions 工作流程中使用 SSH 私钥。

在您的 GitHub Actions 工作流程中,您可以使用 secrets.SSH_PRIVATE_KEY 访问您的 SSH 私钥。

@bigTig bigTig closed this as completed May 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant