最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • GitHub Actions 部署页面至阿里云ECS

    正文概述 掘金(叶袖清风)   2021-02-21   923

    GitHub Action是GitHub推出的一个 CI\CD持续集成服务。

    它可以创建和共享操作脚本以执行所需的任何任务(包括CI / CD),并在完全定制的工作流程中进行组合操作。

    如果你需要某个 action,不必自己写复杂的脚本,直接引用他人写好的 action 即可,整个持续集成过程,就变成了一个 actions 的组合。

    之前很长一段时间我都是将GitHub当作代码仓库或者文件存储库,项目的发布都是直接上传服务器,有了 GitHub Action 以后,它可以自动的帮我部署到自己的服务器上去,只需提交代码即可。

    基本概念

    GitHub Actions 相关术语:

    1. runner:github 分配的用来执行 CI/CD 的构建服务器 (也可以自建 runner)
    2. workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。
    3. job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。
    4. step(步骤):每个 job 由多个 step 构成,一步步完成。
    5. action (动作):每个 step 可以依次执行一个或多个命令(action)。

    静态页面发布至阿里云ECS

    在 github 上进入个人仓库,找到 仓库Actions标签 GitHub Actions 部署页面至阿里云ECS

    GitHub Actions 部署页面至阿里云ECS

    你可以直接新建一个,也可以使用现成的,GitHub 做了一个官方市场,可以搜索到他人提交的 actions。

    链接地址:github.com/marketplace…

    此时会生成了一个文件 .github/workflows/main.yaml,将其内容修改如下:

    name: Build And Deploy To Aliyun ECS
    
    on:                               # 该 CI/CD 触发时的事件
      push:                           # 只要push代码 就触发流程,更多触发事件请参考官方文档
        branches: [ main ]
      pull_request:
        branches: [ main ]     
    
    jobs:                             # 需要执行的任务,可以有多个任务,所有的 job 都是并行的,但往往会有依赖关系
      build:
        runs-on: ubuntu-latest        # github分配的运行平台,2-core CPU/7 GB of RAM memory/14 GB of SSD disk space
        steps:                        # 某个任务的一系列步骤,如前端需要安装依赖,编译打包代码等等
        - uses: actions/checkout@v2          #选择一个 现有的action,执行你的操作
          with:
            persist-credentials: false
            ref: main
            submodules: true
        - name: Deploy to aliyun server        # 为 step 指定一个名称,将会在 github action 的控制台中显示
          uses: easingthemes/ssh-deploy@v2.1.5      #可以访问的仓库,实现的上传服务器步骤被封装在此action
          env:
            SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}  #这个是阿里云的私钥
            ARGS: "-avzr --delete"
            SOURCE: "./"
            REMOTE_HOST: ${{ secrets.REMOTE_HOST }}    #阿里云的 ip
            REMOTE_USER: ${{ secrets.REMOTE_USER }}    #阿里云用户
            TARGET: "/opt/webwiki/docs"       #被部署的服务器路径 
    
    

    这里的 secret 就是一种 context,描述 CI/CD 一个 workflow 中的上下文信息,使用 ${{ expression }} 语法表示。除了 secret,还有

    • github: workflow 的信息,如 github.sha 可以获取当前的 commit SHA,我们可以利用它为 sentry 或者 docker image 打入版本号
    • env: 环境变量
    • job: 当前执行 job 的信息,如 job.status 表示当前 job 的执行状态
    • matrix: 描述一些构建信息,如 node 以及 os 版本号

    更多 context 信息可参考官方文档

    设置secret内容

    GitHub Actions 部署页面至阿里云ECS

    在项目Settings设置中新增服务器配置,名称可以自定义,和main.yaml内的保持一致即可。

    运行发布

    运行之后右侧显示运行结果:

    GitHub Actions 部署页面至阿里云ECS

    以后每一次的提交都会执行,可在Actions主页查看所有执行的workflow:

    GitHub Actions 部署页面至阿里云ECS

    阿里云ECS的SERVER_SSH_KEY生成

    通过Xshell登录进服务器,执行ssh-keygen命令:

    GitHub Actions 部署页面至阿里云ECS

    之后查看密钥文件:

    GitHub Actions 部署页面至阿里云ECS

    为了安全方便,可将该文件保存,复制里面内容粘贴至github内。


    起源地下载网 » GitHub Actions 部署页面至阿里云ECS

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元