WeiG's blog
首页
  • 类目

    • Java
    • Mysql
  • 学习笔记

    • 《SpringBoot-学习笔记》
  • 大杂烩
  • Docker
  • Git
  • 博客搭建
  • 程序人生
  • 所思所想
  • 人生游记
  • 归档
  • 分类
  • 标签
收藏
关于我

Wei-G

即使再小的帆也可以远航!
首页
  • 类目

    • Java
    • Mysql
  • 学习笔记

    • 《SpringBoot-学习笔记》
  • 大杂烩
  • Docker
  • Git
  • 博客搭建
  • 程序人生
  • 所思所想
  • 人生游记
  • 归档
  • 分类
  • 标签
收藏
关于我
  • 大杂烩

  • Docker

  • Git

  • 博客搭建

    • 「概述」全平台文章同步搭配方案
    • 01-配置免费图床Gitee/Github
    • 02-创建:编译:部署Vuepress博客
    • 03-配置vuepress插件
    • 04-配置域名
    • 05-百度收录
    • 06-Github Action
      • 自动部署静态博客
      • 自动进行百度push
    • 07-文章SEO
  • 技术杂谈
  • 博客搭建
gangzi
2021-12-21
时间 5分钟

06-Github Action

GitHub Actions 是一个 CI/CD(持续集成/持续部署)工具,但也可用作代码运行环境 GitHub Actions的定时运行代码功能可以用它来

  • 每天自动部署静态博客
  • 每天自动运行命令生成所有博客链接并进行一次性推送给百度

知识

  • GitHub Actions 的配置文件叫做 workflow 文件
  • 触发 GitHub Actions 需要在项目仓库新建一个.github/workflows子目录,里面是YAML 格式 (opens new window)配置文件,文件名可以随便取,但是后缀名统一为.yml,一个库可以有多个 workflow 文件,比如ci.yml,baiduPush.yml
  • GitHub 只要发现.github/workflows目录里面有.yml文件,就会自动运行Action执行该文件

​

# 自动部署静态博客

  1. 需要获取token。获取方法:Github获取token官方文档 (opens new window)
  2. 将这个token储存到Github仓库的Settings/Secrets里面。变量名可以随便取,但是注意要和后面的ci.yml文件内的变量名一致,这里取的是ACCESS_TOKEN

创建自动部署静态博客的文件 - ci.yml

name: CI

#on: [push]

# 在master分支发生push事件时触发。
on:
  push:
    branches:
      - master

env: # 设置环境变量
  TZ: Asia/Shanghai # 时区

jobs:
  build: # 自定义名称
    runs-on: ubuntu-latest # 运行在虚拟机环境ubuntu-latest

    strategy:
      matrix:
        node-version: [12.x]

    steps:
      - name: Checkout # 步骤1
        uses: actions/checkout@v1 # 使用的动作。格式:userName/repoName。作用:检出仓库,获取源码。 官方actions库:https://github.com/actions
      - name: Use Node.js ${{ matrix.node-version }} # 步骤2
        uses: actions/setup-node@v1 # 作用:安装nodejs
        with:
          node-version: ${{ matrix.node-version }} # 版本
      - name: run deploy.sh # 步骤3 (部署到github)
        env: # 设置环境变量
          GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} # toKen私密变量
        run: npm install && npm run deploy

      # - name: Build and Deploy # 步骤3 (只提交到github可以使用这个步骤)
      #   uses: JamesIves/github-pages-deploy-action@master # 作用:将项目构建和部署到github。 https://github.com/JamesIves/github-pages-deploy-action
      #   env: # 设置环境变量
      #     ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} # toKen私密变量
      #     BASE_BRANCH: master # 要部署的文件夹所在的分支.
      #     BRANCH: gh-pages # 部署到的分支
      #     FOLDER: docs/.vuepress/dist # 要部署的文件夹.
      #     BUILD_SCRIPT: npm install && npm run build && cd docs/.vuepress/dist && echo 'xugaoyi.com' > CNAME && cd - # 部署前要执行的命令(记得cd进入某个目录后,后面要cd -退回开始的目录)
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

这个配置文件ci.yml会在我push提交代码到主分支时触发工作,运行环境是ubuntu-latest,工作步骤:

  1. 获取仓库源码
  2. 安装nodejs,打包项目有用到nodejs
  3. 把token设置到环境变量,安装项目依赖,并运行deploy.sh文件,

ACCESS_TOKE 是保存在github仓库的Settings/Secrets位置的私密变量,仓库代码中可以通过<secrets.变量名>来获取,保证了token的私密性。

修改deploy.sh部署代码

#!/usr/bin/env sh

# 确保脚本抛出遇到的错误
set -e

# 生成静态文件
npm run build

# 进入生成的文件夹
cd docs/.vuepress/dist

# deploy to github
echo 'wggz.top' > CNAME
if [ -z "$GITHUB_TOKEN" ]; then
  msg='deploy'
  githubUrl=git@github.com:isgangzi/weig-Blog.git
else
  msg='来自github actions的自动部署'
  githubUrl=https://isgangzi:${GITHUB_TOKEN}@github.com/isgangzi/weig-Blog.git
  git config --global user.name "isgangzi"
  git config --global user.email "956910931@qq.com"
fi
git init
git add -A
git commit -m "${msg}"
git push -f $githubUrl master:gh-pages # 推送到github

cd - # 退回开始所在目录
rm -rf docs/.vuepress/dist

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

至此,只需要把源码push到github仓库,后面的博客打包、部署到github工作都由GitHub Actions来自动完成。 如下你想查看部署日志,你可以到github仓库的Actions这一项查看。

# 自动进行百度push

之前写过手动npm run baiduPush推送到百度站长 看 ☞ 这里 (opens new window)

这里自动化的操作,就是转换为定时的去执行npm run baiduPush这个命令而已 创建自动进行百度推送的文件 - baiduPush.yml

## 利用GitHub Actions每天定时给百度推送链接,提高收录率 ##

name: baiduPush

# 两种触发方式:一、push代码,二、每天国际标准时间23点(北京时间+8即早上7点)运行
on:
  push:
  schedule:
    - cron: '0 23 * * *' # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows#scheduled-events-schedule

# on:
#   push:
#   schedule:
#     - cron: '*/5 * * * *' # 每5分钟一次,测试用

jobs:
  bot:
    runs-on: ubuntu-latest # 运行环境为最新版的Ubuntu
    steps:
      - name: 'Checkout codes' # 步骤一,获取仓库代码
        uses: actions/checkout@v1
      - name: 'Run baiduPush' # 步骤二,执行sh命令文件
        run: npm install && npm run baiduPush # 运行目录是仓库根目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

上面代码中

  • name字段是配置文件的描述。
  • on字段是触发条件。我们指定两种情况下触发
    • 第一种是代码 Push 进仓库;
    • 第二种是定时任务 (opens new window),每天在国际标准时间23点(北京时间+8,即早上7点)运行。定时设置看这里 (opens new window)
  • jobs字段是执行的任务。
    • 指定运行环境是最新的ubuntu;
    • 流程的第一步是从代码仓库获取代码,第二步运行两个命令,先安装项目依赖,再运行写在package.json的baiduPush命令。**

Over~ 在push时,或者在每天的早上7点钟,会自动运行命令生成一个包含博客所有页面链接的urls.txt文件,并把所有链接一次性推送到百度。

#博客#Github Action
上次更新: 2022/04/02, 11:19:25
05-百度收录
07-文章SEO

← 05-百度收录 07-文章SEO→

本站总访问量 次 | 本站访客数 人
Copyright © 2021-2022 Gang zi | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 生命绿
  • 收获黄
  • 天空蓝
  • 激情红
  • 高贵紫