前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[整理]CI持续集成-基于Github Action

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

作者头像
前端小鑫同学
发布2022-12-24 11:36:35
5630
发布2022-12-24 11:36:35
举报
最新热点消息引导打开公众号首图.jpg
最新热点消息引导打开公众号首图.jpg

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


1. 基本概念说明

2. Workflow

范例一

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

代码语言:javascript
复制
# 对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

代码语言:javascript
复制
# 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. 简易流程图

image.png
image.png

扩展内容

扩展一、创建SSH公&私钥

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

  1. 进入当前用户的.ssh目录,没有则创建后进入
    1. 进入.ssh目录cd ~/.ssh/
    2. 创建.ssh目录mkdir ~/.ssh
  2. 执行生成命令: ssh-keygen -t rsa -C "建议邮箱地址"
  3. 可以通过ls命令查看当前目录找到新生成的公钥:id_rsa.pub私钥:id_rsa
  4. 可以通过cat .\id_rsa.pub命令打印公钥信息或直接打开文件查看扩展二、配置本地公钥信息到服务器 可实现免密登录服务器
手动操作
  1. 登录阿里云服务器 ssh root@xxx.xxx.xxx.xxx
  2. 进入.ssh目录 cd .ssh/
  3. 执行命令 vi authorized_keys
  4. 粘贴公钥信息
  5. 按ECS&输出:wq保存退出 简化操作
  6. 执行命令: ssh-copy-id root@xxx.xxx.xxx.xxx 扩展三、Github配置SSH and GPG keys 可实现通过ssh操作Git
  7. 菜单位置: settings/SSH and GPG keys/New SSH key
  8. 添加命名并粘贴本地生成的公钥信息
  9. 通过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被使用
  3. 菜单位置: Setting/Developer settings/Personal access tokens
  4. Generate new token: 添加令牌名称并选择需要的权限
  5. 生成令牌并自行保存,遗忘令牌需要重新生成
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 基本概念说明
  • 2. Workflow
    • 范例一
      • 范例二:
      • 3. 简易流程图
      • 扩展内容
        • 扩展一、创建SSH公&私钥
          • 手动操作
          • 配置服务器生成的私钥信息到Github
      相关产品与服务
      云服务器
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档