最近由于自己的个人应用增加,每次都需要在服务器手动发布,觉得特别麻烦,所以想通过代码控制自动发布,直接选择了GitHub Action 。
GitHub Action持续集成服务,目前已经免费开放使用,由于大部分人的个人项目都是放在github上,那么使用它来发布、测试、部署,是非常方便的 。
Github Action配置
下面的内容默认你已经会创建Github Action,官方提供了很多Github Action 配置模版,可以根据自己的需求随意选择,不是太了解的可以先参考阮一峰 GitHub Actions入门教程,了解一下Github Action 。
我们来看看Github Action配置文件的基本构成,配置文件格式是.yml,示例如下:
# main.yml# 一个 workflow,名字为Github Action Examplename: Github Action Example# 触发 workflow 的事件on:push:# 分支随意branches:- master# 一个workflow由执行的一项或多项jobjobs:# 一个job任务,任务名为buildbuild:# runs-on 指定job任务运行所需要的虚拟机环境(必填字段)runs-on: ubuntu-latest# steps是每个Job的运行步骤,可以包含一个或多个步骤steps:# action命令,切换分支获取源码- name: Checkout# 使用action库actions/checkout获取源码uses: actions/checkout@master# action命令,安装Node10- name: use Node.js 10# 使用action库actions/setup-node安装nodeuses: actions/setup-node@v1with:node-version: 10# action命令,install && test- name: npm install and test# 运行的命令或者 actionrun: |npm installnpm run test# 环境变量env:CI: true
- Action是工作流中最小的可移植构建块 。你可以创建自己的动作,使用从GitHub社区共享的action库,以及自定义公共action库 。
- Step是Job执行的一组任务 。Job中的每个步骤都在同一运行程序中执行,从而允许该Job中的操作使用文件系统共享信息,Step可以运行命令或action 。
- Job由Step构成 。你可以定义工作流文件中Job的运行方式的依赖关系规则 。Job可以同时并行运行,也可以依赖于先前Job的状态依次运行 。
- Workflow由一个或多个Job组成,可以通过事件进行计划或激活 。你可以在存储库中设置一个可配置的自动化过程,以在GitHub上构建,测试,打包,发布或部署任何项目 。
Github: Github Action插件查询库,可以查询你需要的action库,这些都是共享的,如果满足不了需求也可以自己定义 。
Github Action发布阿里云ECS
下面就是我发布到阿里云ECS的 Github Action配置文件
我的Github Action服务配置
# main.ymlname: deploy to aliyunon:push:branches:- masterjobs:build:runs-on: ubuntu-lateststeps:# 切换分支- name: Checkoutuses: actions/checkout@master# 下载 git submodule- uses: srt32/git-actions@v0.0.3with:args: git submodule update --init --recursive# 使用 node:10- name: use Node.js 10uses: actions/setup-node@v1with:node-version: 10# npm install- name: npm install and buildrun: |npm installnpm run buildenv:CI: true# Deploy- name: Deployuses: easingthemes/ssh-deploy@v2.0.7env:SSH_PRIVATE_KEY: ${{ secrets.ACCESS_TOKEN }}ARGS: "-avz --delete"SOURCE: "[Current File Dir]"REMOTE_HOST: "[Domain]"REMOTE_USER: "[UserName]"TARGET: "[Server Dir]" 以上是我的配置文件,action插件请根据自己的需求合理选择 。我是要博客网站,发布到阿里云服务上,所以采用以上配置,而最后的action Deploy中action插件的选择,也是根据需求,在Github: action插件库中选择的 。
(补充注意??:如果你是要发布到阿里云服务器,同时也使用以上配置action文件,请记住:ACCESS_TOKEN 是服务器ssh密钥对的私钥部分;应将服务器公钥部分添加到接收部署的服务器上的authorized_keys文件中 。正常情况下,ACCESS_TOKEN 是 服务器 ~/.ssh目录下的id_rsa 文件中 的内容 。仔细看一下
https://github.com/marketplac... 文档中的字段配置描述)
最新更新20220424由于githubs action 安全升级的原因,我发现有了这个报错:
Starting the git Actionfatal: unsafe repository ('/github/workspace' is owned by someone else)To add an exception for this directory, call: git config --global --add safe.directory /github/workspace
文章插图
按照提示修改配置,也在网上查找了很多办法,都不太行,最后决定将 srt32/git-actions@v0.0.3 移除了
- - uses: srt32/git-actions@v0.0.3-with:-args: git submodule update --init --recursive 更多使用GitHub Actions发布Hexo网站到GitHub Pages
推荐阅读
- MySQL是如何解决幻读问题的?
- 针对工控网络的被动网络映射工具
- 繁花似锦的意思_繁花似锦的意思是什么?
- 刘诗诗|香港男戏骨因一杯咖啡遭女演员排挤:你高高在上的样子,很丑!
- 职场必知的3个黄金法则,谁不懂谁吃亏!
- 怎样删除icloud里的照片,iCloud批量删除照片简单方法
- u盘的东西删了怎么恢复,u盘误删照片快速恢复技巧
- 网络营销概念是什么,简述网络营销的定义及核心
- 网络营销的优点与缺点有哪些,盘点网络营销对企业经营的影响
- 12306放票是一次性的吗,最新12306放票规律一览
