GitHub Actions自动化部署+定时百度链接推送

2023-11-19

前言

最近用VuePress搭建了一个静态网站,由于是纯静态的东西,每次修改完文章都要重新打包上传很是麻烦。虽然vuepress-theme-vdoing主题作者提供了GitHub Actions自动化部署的教程文章,但是过于简陋且是19年发布的。。

1. 创建一个GitHub仓库(私有仓库也可以)

在这里插入图片描述

2. 设置服务器地址和 SSH 私钥

服务器地址获取: 这个不用说了。
SSH私钥: 自己到服务器服务商控制台获取。比如我是阿里云的轻量服务器
在这里插入图片描述

在GitHub中设置服务器地址和SSH私钥变量:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3. 创建自动化部署必须文件

3.1 创建目录文件

  1. 在项目根目录创建一个目录:.github
  2. .github 目录创建 workflows 目录
  3. workflows 目录创建一个yml文件,名字可以随意。我这里叫 ci.yml

在这里插入图片描述

3.2 ci.yml配置(超详细每行都有注释)

# 工作流名称,可以根据你的需求进行命名
name: CI
# 这个部分定义了触发工作流程的事件,即在什么情况下工作流程会被触发。在这里,工作流会在master分支有push事件时被触发。
on:
  push:
    branches:
      - master
# 这是工作流程的主要部分,包含了一个或多个工作(jobs),每个工作都是一系列步骤的组合。
jobs:
  build:
    # 指定工作在哪种虚拟机环境中运行,这里是在ubuntu-latest(最新版本的Ubuntu)中运行。(注意:这里指的是GitHub托管的虚拟机,与你实际服务器没有直接关系)
    runs-on: ubuntu-latest
    # 这部分允许你定义一些矩阵策略,以在不同的条件下运行不同的步骤。在这里,使用了一个node-version矩阵,具体的版本是18.x。
    strategy:
      matrix:
      	# 一定要注意!这里一定要是自己项目所使用的node版本,否则在自动打包时会出错。
        node-version: [ 18.x ]
    # 这是工作的实际步骤。
    steps:
      # 步骤1 这是步骤的名称,表示将检出(克隆)代码库。
      - name: Checkout # 步骤1
        # 使用的动作。这里使用了actions/checkout@v1,这是一个官方的GitHub Actions动作,用于检出代码库中的代码。官方actions库:https://github.com/actions
        uses: actions/checkout@v1
      # 步骤2 这是步骤的名称,表示使用特定的Node.js版本。
      - name: Use Node.js ${{ matrix.node-version }}
        # 使用的动作。这里使用了actions/setup-node@v1,用于安装指定版本的Node.js。
        uses: actions/setup-node@v1 # 作用:安装nodejs
        # 这里是动作的输入参数,指定了要安装的Node.js版本,来自于上面定义的矩阵。
        with:
          node-version: ${{ matrix.node-version }} # 版本
      # 步骤3 安装依赖
      - name: npm install
        run: npm install
      # 步骤4 打包
      - name: build
        run: npm run build
      # 步骤5 部署
      - name: deploy
        # 使用动作:wlixcc/SFTP-Deploy-Action@v1.0
        uses: wlixcc/SFTP-Deploy-Action@v1.0
        with:
          # 这里是动作的输入参数,指定了要部署的服务器信息。
          username: 'root' #ssh user name
          # 服务器地址,我们在项目的secrets中配置的SERVER_HOST
          server: ${{ secrets.SERVER_HOST }}
          # 服务器私钥,我们在项目的secrets中配置的PRIVATE_KEY
          ssh_private_key: ${{ secrets.PRIVATE_KEY }}
          # 项目打包后的文件路径(根据你们实际的打包路径进行修改)
          local_path: './docs/.vuepress/dist/*'
          # 服务器上的项目路径(根据你们实际的项目路径进行修改)
          remote_path: '/xxx/xxx/xxx'
      # 步骤6 清理打包文件(根据你们实际的打包路径进行修改)
      - name: clean
        run: rm -rf ./docs/.vuepress/dist

3.3 提交新增的文件到GitHub仓库

我用的WebStorm提交的,也可以直接命令提交。
在这里插入图片描述

提交后刷新一下就能看到了:

在这里插入图片描述

4. 测试自动化部署

前期的配置流程已经结束了,现在测试一下更新代码提交到仓库主分支,看会不会触发。

我随便修改了一些代码。然后提交:

在这里插入图片描述

ok,已经触发了。

在这里插入图片描述
在这里插入图片描述

点击左侧侧边栏jobs 中的具体任务,可查看具体日志:

在这里插入图片描述

展开可查看每一个步骤的具体日志:

在这里插入图片描述

任务完成没有出错,会变成绿色对号图标:

在这里插入图片描述

查看服务器是否已经有了:

在这里插入图片描述
这样就ok了!!

5. 定时百度链接推送

.github/workflows 目录中创建一个针对百度推送的yml,我这里取名 baiduPush.yml

在这里插入图片描述

在项目根目录创建baiduPush.sh

在这里插入图片描述

yml配置:

## 利用GitHub Actions每天定时给百度推送链接,提高收录率 ##
name: baiduPush
# 两种触发方式:一、push代码,二、每天国际标准时间23点(北京时间+8即早上7点)运行
on:
  push:
  schedule:
    # 每天国际标准时间23点(北京时间+8即早上7点)运行
    - cron: '0 23 * * *' # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows#scheduled-events-schedule
# on:
#   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 # 运行目录是仓库根目录

baiduPush.sh脚本内容:

#!/usr/bin/env sh

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

# 百度链接推送
curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=ytxy.xyz&token=Oo5Ue3daxKJxkPid"

rm -rf urls.txt # 删除文件

最后提交代码到GitHub仓库即可

在这里插入图片描述

测试推送成功:

在这里插入图片描述

6. 注意

在自动化部署前或者部署后,你需要自己配置一下Nginx,才能让网站正常访问!
在自动化部署前或者部署后,你需要自己配置一下Nginx,才能让网站正常访问!
这里的自动化部署只是将打包后的文件上传到你服务器中的某个文件夹内。你需要自行配置访问。

Nginx或者其他方式配置,都请自行百度,这个太简单了,不再这里说了!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GitHub Actions自动化部署+定时百度链接推送 的相关文章

  • 如何终止当前正在运行的git进程? [复制]

    这个问题在这里已经有答案了 git commit m 45 fatal Unable to create F SoftifyBD Projects proj 4 CMS Latest contentmanagementsystem git
  • 如何为新的 eclipse (neon) java 项目初始化 git

    我安装了 eclipse Neon 的新副本 并在一个新的闪亮工作区中创建了一个新的 gradle java 项目 将 git 添加到聚会中的最佳实践是什么 我读到在项目目录中初始化 git 是真是个坏主意 https stackoverf
  • 克隆包含所有子模块的 git 存储库

    我有一个工作 git 存储库 其中包含几个子模块 通过克隆不同的存储库获得 现在 我想要复制整个存储库 包含所有子模块 通过使用推送或克隆到另一台机器上的裸 git 存储库 我很高兴失去子模块的历史记录 我只是对保留它们的内容感兴趣 这可能
  • Sourcetree 2.1.2.5 - 显示“未提交的更改”,但没有任何待处理的内容

    我有一个以前没有遇到过的问题 即使我没有什么可提交的 并尝试将我的分支重置为 Sourcetree 显示的最新提交Uncommitted changes 根据 Atlassian 论坛的说法 通常有两个原因 您的工作目录中有很多很多未暂存的
  • Git:man 命令不起作用

    在 Git Bash 中 他们给了我一个error用于返回 man command man git bash man command not found 我的 Git 版本 git version git version 2 18 0 wi
  • 是否可以在一次 git 调用中取消设置多个 git 配置值,而不是逐一取消设置?

    我需要自动取消全局 git 配置文件中的许多别名 diff difftool merge mergetool 设置 现在我正在打电话git config global unset对于他们每个人来说 这有点慢 嗯 相对而言 大约需要 3 秒
  • Git ref master 现在为空,如何恢复?

    我不完全确定发生了什么 但由于某种原因 我的 git 存储库的主引用文件现在是空的 我们在 Dropbox 上托管存储库 所以也许与此有关 但现在我无法从中提取 它是这么说的 Your configuration specifies to
  • 如何在 Android Studio 中比较两个 Git 分支?

    我不确定是否可以将主分支 或任何其他分支 与当前功能分支进行比较 例如GIT does 我想要两个分支 主分支和功能分支 之间的差异 以便我可以在合并之前比较差异 我发现 Git UI 对用户不太友好 就像在 AS 中一样 我可以遍历代码并
  • 如果文件已在服务器上,请避免使用 git-ftp 上传

    假设我有应用程序的本地副本 我将其推送到 github 然后使用 git ftp 将任何更改上传到我的服务器 我首先会使用 git ftp init u
  • 使用 GIT 自动增加 AssemblyFileVersion

    好吧 我知道这可能不是传统的 但除此之外 我使用 AssemblyFileVersion 作为我的 构建名称 字符串 它的格式如下 File Version information for an assembly consists of t
  • 是否存在比 SVN 更快的集中版本控制?

    我已经使用 SVN 很长时间了 现在我们正在尝试使用 Git 我在这里谈论的不是中心化 去中心化的争论 我唯一关心的是速度 后一个工具要快得多 但有时 我需要使用一种集中式方法 这种方法比分散式方法更简单 更简单 学习曲线非常快 这节省了大
  • GitHub API:标记提交所属(与 git describe --tag 并行)

    我正在使用 GitHub API 进行实验octokit https github com octokit octokit rb红宝石 我的目标是能够提取提交 SHA 所属的 标签 现在我可以使用命令行轻松地执行此操作 gt git des
  • 交互式变基后,本地 Git 分支已偏离原始分支

    我有一个本地分行 CRM ayrshireminis 其中有一些我已推送到原点的提交 origin CRM ayrshireminis 这个分支是从创建的develop大约一周前的一个分支 其他合作者已经在该分支上完成了一周的工作 我想做的
  • 如何在 Windows 上向 git 存储库添加符号链接?

    我使用 GitHub 的电子环境编译 OS X 的二进制文件 并希望将输出添加到 git 存储库 我试过 git add error readlink sulu app Contents Frameworks Electron Framew
  • 无法验证 GitHub 中的虚假电子邮件

    我已经创建了一个 GitHub 帐户 并且我不喜欢公开分享我的电子邮件地址 我厌倦了垃圾邮件 所以我关注了 GitHub保密您的电子邮件地址 https help github com articles keeping your email
  • Git 不断提示我输入密码

    我已经使用 Git 一段时间了 但是不断要求输入密码开始让我感到厌烦 我使用的是 Mac OS X 和 GitHub 并且按照 GitHub 的说明设置了 Git 和我的 SSH 密钥设置 Git 页面 http help github c
  • 相当于“svn update -r”的 git 是什么?

    我是最近的 git 转换者 能够使用 git svn 将我的分支保留在本地而不干扰 svn 服务器真是太棒了 最新版本的代码中存在一个错误 我想确定一个它起作用的时间 以便我可以使用 git bisect 我找不到正确的命令来及时返回 谢谢
  • 运行“git apply”时出错

    当我尝试时 您能否告诉我如何解决 补丁不适用 错误 git 应用补丁 git apply 0001 my patch error patch failed test xml 114 error text xml patch does not
  • Git:如何变基到特定提交?

    我想变基到特定的提交 而不是另一个分支的 HEAD A B C master D topic to A B C master D topic 代替 A B C master D topic 我怎样才能做到这一点 您可以通过在您喜欢的提交上创
  • 忽略 git 中的本地配置文件

    Rails 应用程序中有一些本地文件 属于我们存储库的一部分 我希望 git 忽略它们 基本上 我希望 git 忽略我对 config environments 目录和 config application rb 文件中的任何内容所做的所有

随机推荐

  • 简单地使用webpack进行打包

    下面的webpack是4 14 0版本的 当时我学的 更新太快了 现在5 10 0了 你学习的时候 用的是最新的 就不要往下看啦 官方文档已经更新教程了 这是我看5 10 0教程后 简单搭建的打包demo 可以参考 或者你也自己去官网看文档
  • SpringCloud-Alibaba Nacos

    Nacos 简介 为什么叫Nacos 前四个字母分别为Naming和Configuration的前两个字母 最后的s为Service 是什么 一个更易于构建云原生应用的动态服务发现 配置管理和服务管理平台 Nacos Dynamic Nam
  • STM32的串口中断详解

    目录 中断配置 中断服务函数 1 中断服务函数名称查找 2 中断服务函数 3 可以选择的串口中断类型 extern u8 USART RX BUF USART REC LEN extern u16 USART RX STA 中断配置 使能接
  • js 字符串拼接的4种方法

    一 使用连接符 把想要连接的字符串串起来 let shy 帅哥 let a 我是 shy console log a 我是帅哥 二 模板字符串 模板字符串 template string 是增强版的字符串 用反引号 标识 特点 1 字符串中
  • 20221129-1Spring_day03(资料来自黑马程序)

    Spring day03 今日目标 理解并掌握AOP相关概念 能够说出AOP的工作流程 能运用AOP相关知识完成对应的案例编写 重点掌握Spring的声明式事务管理 1 AOP简介 前面我们在介绍Spring的时候说过 Spring有两个核
  • 【HTML】修复选中项与实际后台控制的选中项不一致的问题

    项目场景 项目场景 系统项目中有一个需要通过后台传递选中项的下拉项 由于反复确认都无法主动更新 考虑到其他人推荐的 方法 也是没有效果的 例如 无效
  • 首个数字银行卡明年发行,广州出台区块链措施支持大湾区

    锌链接作为首个提出产业区块链的机构媒体 一直积极推动产业区块链落地 通过深度报道直戳行业痛点 通过分享会聆听行业声音 通过周报呈现行业大观 通过评论展现独特产业观察视角 本周 广州出台66条措施支持粤港澳大湾区金融发展 其中多项与区块链有关
  • CVPR 2023和ICLR 2023异常检测相关文章

    关键词 Anomaly Detection Outlier Detection Out of Distribution Abnomal Detecting Abnormal Detection Defect DetectionInspect
  • 两万字整理Fabric(超级账本) 配置文件 掌握了它就掌握了Fabric的核心

    导语 文章没有重复的地方 没有废话 如果能帮助到你 那是我的荣幸 记得一键三连哟 Fabric 配置文件详解 一 四个核心配置文件 二 Fabric 的核心配置文件 三 网络启动步骤 1 生成认证证书 crypto config yaml
  • JS 时区时间转换

    业务场景 页面服务器时间是东八区时间 页面 JS 功能需要对比服务器时间和用户本地时间 为兼容世界各地时间 需要将用户本地时间转换为东八区时间 基本概念 格林威治时间 格林威治子午线上的地方时 或零时区 中时区 的区时叫做格林威治时间 也叫
  • cocos2d-x 之 适配分辨率全屏的方法

    原文出处 https blog csdn net yixiao3660 article details 54316348https www jianshu com p 0d6787e31112 http dualface github io
  • 从架构师的角度看服务器端架构点滴

    任何服务器端的架构设计 都是性能 一致性和成本三者的权衡 从我在目前的大规模互联网视频公司的负责APP服务器端的角度来讲 我主要关注以下几个点 业务 可靠性 性能 可维护性 一 业务 框架上保证业务的快速迭代 在性能要求不高的情况下 同步架
  • ubuntu 安装 python3.9

    一 相关背景 之前在dockerfile里面一直使用的是python3 8 忘记为什么选择这个版本了 想用python3 9 因为觉得3 8有点老了 而且3 9一个重要的feature 是把list作为默认的类型 不需要从typing 里面
  • 微信公众号实现微信支付(含前后端完整代码)

    刚做完公众号微信支付 记录一下 获取微信支付之前 要先获取用户的基本信息哦 前端使用uniapp开发的H5 小伙伴们可以照着改一下对应语法 首先来个微信支付的工具类 wxApi js 这里我放到了项目下的common目录下 代码如下 微信
  • Vue控制台警告: Added non-passive event listener to a scroll-blocking ‘touchmove‘ event. Consider markin

    翻译过来如下 违反 没有添加被动事件监听器来阻止 touchstart 事件 请考虑添加事件管理者 passive 以使页面更加流畅 原因是 Chrome51 版本以后 Chrome 增加了新的事件捕获机制 Passive Event Li
  • 修改vscode默认打开两个标签窗口

    vscode 默认打开两个标签窗口 设置能同时打开多个标签 打开以下这个路径C Users xx AppData Roaming Code User 在setting json中添加一行设置 workbench editor enableP
  • android获取view宽高的时机

    关键点 获取宽高应该在view的onLayout之后 这个时候 view已经确定算出宽高 error 在onCreate onResume方法中调用 用于获取TextView的宽度和高度都是0 private void getTextHei
  • 使用NDK编译C/C++文件生成在安卓中的可执行文件

    使用NDK编译C C 文件生成在安卓中的可执行文件 需求 要编译一个C文件 然后将他运行到安卓手机中 通过这个可执行文件可以获取一些硬件的参数信息 或者对已经有的信息进行修改 从而达到我们想要的效果 相关知识点记录 NDK Native D
  • HTTP POST请求json数据量过大的问题

    与第三方合作 需要提供数据上传接口给他们 联调时被他们的单条json数据量困扰到了 第三方接口联调 一条7M的json上传给我们 毫无意外的报错了 实体数据量太大 该如何修改以便适应大数据量的上传呢 在代码层面想不到解决方案 于是查看配置
  • GitHub Actions自动化部署+定时百度链接推送

    前言 最近用VuePress搭建了一个静态网站 由于是纯静态的东西 每次修改完文章都要重新打包上传很是麻烦 虽然vuepress theme vdoing主题作者提供了GitHub Actions自动化部署的教程文章 但是过于简陋且是19年