之前github pages 一直都是用 travis-ci 部署的,除了慢一点没什么毛病,所以一直没有转向Github Actions的念头。
但是最近又重新买了个服务器,正好趁这个时间学一下 Actions,Actions对比travis有个很大的亮点就是他的生态很好,你要用什么插件搜一下直接就可以用了,减少很多工作。
access token
因为我们构建完需要Push到仓库,所以得有个 Github access token,可以直接点进链接申请,勾选repo的选项 ,然后点击生成Token,这时候先别关闭页面,后面要用到这个token。
secrets
进入要部署的项目的setting,左边有个导航进 secrets,在这里生成Actions需要用到的所有秘钥,只要你觉得有隐私的或者需要保密的全都在这里定义字段,然后配置文件直接使用就好。
我的Secrets总共有四个,如果只是部署到 github pages的话,你只需要token一个就够了
- token: 存放上一步生成的 access token
- SSH_PRIVATE: 存放SSH到服务器的私钥
- USERNAME: 要登录服务器的用户
- HOST: 要登录的服务器host
Action workflow
点击项目顶部导航进入 Actions,随便点一个模板进去,或者直接 set up workflow yourself
新建一个新的
我的workflow基本就是搬 travis 的,按照github actions的格式改了下而已。
大概流程是: 拉取代码,初始化环境,生成静态资源,推送到目标仓库 或 部署到目标服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| name: Blog deployer
on: push: branches: - master
jobs: build: name: Build and publish runs-on: ubuntu-latest
steps: - uses: actions/checkout@master
- name: Use Node.js 10.x uses: actions/setup-node@v1 with: node-version: 10.x
- name: Setup Hexo env run: | npm install hexo-cli -g npm install - name: Generate public files run: | hexo clean hexo g
- name: Deploy To Github Pages env: GH_REF: github.com/jsonz1993/jsonz1993.github.io run: | # 配置本地git git config --global user.name "Jsonz1993" git config --global user.email "jsonz@qq.com" # 生成 commit message 默认抓取最后一次提交信息 git log --pretty=format:"CI: %s" --date=short -n 1 > commit-message.log git clone https://${GH_REF} .deploy_git cd .deploy_git git checkout master cd ../ mv .deploy_git/.git/ ./public/ cd ./public/ git add . git commit -F ../commit-message.log git push --force --quiet "https://${{ secrets.token }}/@${GH_REF}" master:master - name: Deploy to Private Server uses: appleboy/ssh-action@master with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} key: ${{ secrets.SSH_PRIVATE }} script: | cd ${{ secrets.SERVER_PATH }} && git pull
|
使用 GitHub 操作自动化工作流程
阮一峰 Github Actions