写点什么

[整理]CI 持续集成 - 基于 Github Action

作者:小鑫同学
  • 2022-10-13
    北京
  • 本文字数:2207 字

    阅读完需:约 7 分钟

[整理]CI持续集成-基于Github Action

大家好,我是小鑫同学。一位从事过 Android 开发混合开发,现在长期从事前端开发的编程爱好者,我觉得在编程之路上最重要的是知识的分享,所谓三人行必有我师。所以我开始在社区持续输出我所了解到、学习到、工作中遇到的各种编程知识,欢迎有想法、有同感的伙伴加我fe-xiaoxin微信交流~


参考一: 持续集成是什么? 参考二: 部署GitHub Pages 参考三: Github Actions



1. 基本概念说明

2. Workflow

范例一

对 Github 仓库中 XX 项目的 master 分支的代码进行打包并部署到阿里云服务器


# 对Github仓库中master分支的代码进行部署到阿里云服务器
name: Build app and deploy to aliyun
on: push: branches: # 执行工作流的代码分支 - master
jobs: build: # runs-on 指定job任务运⾏所需要的虚拟机环境(必填字段) runs-on: ubuntu-latest steps: # 获取源码 - name: Checkout # 使⽤action库 actions/checkout获取源码 uses: actions/checkout@master # 安装Node12 - name: use Node.js 12.16.3 # 使⽤action库 actions/setup-node安装node uses: actions/setup-node@v1 with: node-version: 12.16.3 # 安装依赖 - name: Yarn install run: npm install yarn && yarn install # 打包 - name: Yarn build run: yarn run build:prod # 通过SSH上传部署文件到阿⾥云 - name: Deploy to Aliyun uses: easingthemes/ssh-deploy@v2.1.1 env: # 私钥 # PRIVATE_KEY 的内容为在服务器生成的SSH的私钥信息 # PRIVATE_KEY 需要配置到项目/Settings/Secrets/New repository secret # 相当于配置环境变量,便于脚本读取 SSH_PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} # 服务器ip REMOTE_HOST: "xxx.xxx.xxx.xxx" # 服务器⽤户名 REMOTE_USER: "root" # scp参数 ARGS: "-avzr --delete" # 源⽬录 SOURCE: "dist" # ⽬标地址,服务器不存在目录会发布失败,需要注意 TARGET: "/root/web-stite/client"
复制代码

范例二:

对 Github 仓库中 XX 项目的 master 分支的代码进行打包并部署到 github-pages


# workflow名称name: Build and Deploy# 触发条件:master分支接收到push指令后开始on:  push:    branches:      - master# 执行任务jobs:  build-and-deploy:    name: Build and Deploy    # runs-on 虚拟机环境    runs-on: ubuntu-latest    # 任务步骤    steps:      # 获取源码      - name: 1. 拉取代码 🚀        # 使⽤action库 actions/checkout获取源码        uses: actions/checkout@master      # 安装Node12.18.3      - name: 2. 安装Node 🚀        # 使⽤action库 actions/setup-node安装node        uses: actions/setup-node@v1        with:          node-version: 12.18.3      # 安装依赖      - name: 3. 安装依赖 🚀        run: npm install yarn && yarn install      # 编译项目      - name: 4. 编译项目 🚀        run: yarn run build:prod      - name: 5. 部署 🚀        # 使用JamesIves库 JamesIves/github-pages-deploy-action@3.7.1        uses: JamesIves/github-pages-deploy-action@3.7.1        with:          # GitHub 密钥          GITHUB_TOKEN: ${{ secrets.GITHUB_ACCESS_TOKEN }}          # 待发布到的分支          BRANCH: gh-pages          # 待部署文件夹          FOLDER: dist          # 自动删除已部署的文件          CLEAN: true
复制代码

3. 简易流程图

扩展内容

扩展一、创建 SSH 公 &私钥

查看文件中的内容可以使用命令: cat xxx


  1. 进入当前用户的.ssh 目录,没有则创建后进入

  2. 进入.ssh 目录cd ~/.ssh/

  3. 创建.ssh 目录mkdir ~/.ssh

  4. 执行生成命令: ssh-keygen -t rsa -C "建议邮箱地址"

  5. 可以通过ls命令查看当前目录找到新生成的公钥:id_rsa.pub私钥:id_rsa

  6. 可以通过cat .\id_rsa.pub命令打印公钥信息或直接打开文件查看

扩展二、配置本地公钥信息到服务器

可实现免密登录服务器

手动操作

  1. 登录阿里云服务器 ssh root@xxx.xxx.xxx.xxx

  2. 进入.ssh 目录 cd .ssh/

  3. 执行命令 vi authorized_keys

  4. 粘贴公钥信息

  5. 按 ECS&输出:wq 保存退出

简化操作

  1. 执行命令: ssh-copy-id root@xxx.xxx.xxx.xxx

扩展三、Github 配置 SSH and GPG keys

可实现通过 ssh 操作 Git


  1. 菜单位置: settings/SSH and GPG keys/New SSH key

  2. 添加命名并粘贴本地生成的公钥信息

  3. 通过ssh -T git@github.com验证得到结果如: Hi OSpoon! You've successfully authenticated, but GitHub does not provide shell access.

扩展四、Github 的项目中配置 Secrets

可充当登录服务器的私钥信息,IP,端口,用户名,密码,Token 等信息的变量配置

配置服务器生成的私钥信息到 Github

  1. 菜单位置: 项目/Settings/Secrets/New repository secret

  2. 建议命名为 PRIVATE_KEY,并粘贴秘钥保存

扩展五、Github 生成个人访问令牌

github-pages-deploy-action 扩展需要配置令牌到项目的 Secrets 被使用


  1. 菜单位置: Setting/Developer settings/Personal access tokens

  2. Generate new token: 添加令牌名称并选择需要的权限

  3. 生成令牌并自行保存,遗忘令牌需要重新生成


发布于: 刚刚阅读数: 4
用户头像

小鑫同学

关注

⚡InfoQ签约作者 2018-12-10 加入

还未添加个人简介

评论

发布
暂无评论
[整理]CI持续集成-基于Github Action_前端_小鑫同学_InfoQ写作社区