Action的创建
方式1:在项目根部,创建以下文件夹和文件
# 这里以我的 hexo 博客自动部署举例
.github
└── workflows
└── hexo-deploy.yml
方式2:在网页端的action上按照提示进行
Action的编排
编排文件的结构
Action 主要由三部分构成:name、on 和 jobs
name: 叫什么(如果忽略会默认为yml的文件名)
on: 作用在什么地方(触发点)
jobs: 触发后干什么
yml 文件实例
# 部分1
name: 显示在action的名字
# 部分2
on: # 绑定的地方
push: # 绑定推送
branches: # 绑定推送的分支
- master
# 部分3
jobs:
# 干活标识 自定义
build-and-deploy:
# 干活内容
# 运行服务器镜像(总共有几种选择,官网上可查)
runs-on: ubuntu-latest
# 运行条件判断
if: github.event.repository.owner.id == github.event.sender.id
# 运行步骤
steps:
- name: Checkout # 步骤标识,自定义
# 这里是引用的意思
# actions是官方定义的类似一个账号
# checkout是仓库名
# @后面是分支,也可以是 @v1 代表git标签
uses: actions/checkout@master
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: '12'
- name: Setup Hexo
# 环境变量 通常用来获取仓库设置的secrets(里面可能是账号的密码或者公/私钥之类的)
env:
ACTION_DEPLOY_KEY: ${{ secrets.DEPLOY }}
# 运行命令
run: |
mkdir -p ~/.ssh
echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.email "armin"
git config --global user.name "2730083511@qq.com"
npm install hexo-cli -g
npm install
- name: Deploy
run: |
hexo clean
hexo deploy -g
可以看到 jobs
下面是一个标识
,再下面是 steps
,再再下面才是执行命令
。总共有 3 层。
Action 在不同仓库之间访问和推送
我们可以本地生成一对公/私钥,保存下来。
ssh-keygen -t rsa -C "comment" -f "aaa"
在私有仓库设置 Secrets,将私钥复制进去,然后在 action 里面,通过标识进行引用。命令里面将私钥复制到本地.ssh
目录下。
在公有仓库设置 Deploy keys,将公钥复制进去,然后私有仓库的action就可以部署到这个公有仓库了。
简单理解,私钥是用来干活加密用的,公钥则是拿来当令牌或者房卡用的,就好SSH令牌和Deploy keys令牌。
action 代表了一个独立的服务器环境,你可以在这里进行一系列的流程作业。