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

news2024/9/20 8:58:58

前言

最近用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或者其他方式配置,都请自行百度,这个太简单了,不再这里说了!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/888694.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从 1 杯咖啡到 1 首歌的时间,炎凰数据如何实现 Pipeline 执行提速 6 倍?

目录 痛点:工具链复杂、功能少、网不好,太 EMO! 解法:All in one,一个平台串联需求→开发→发布 代码、CI/CD 一站式服务 需求、Story、Bug 一站式管理 关联代码 案例:3 个具体使用场景见真章 1. 灵…

MYSQL完全卸载、安装与账号创建、权限控制

一、卸载mysql CentOS 卸载 MySQL 1. 查看安装情况 使用以下命令查看当前安装mysql情况,查找以前是否装有mysql rpm -qa|grep -i mysql这里显示我安装的 MySQL 服务有有: 2. 停止 mysql 服务、删除之前安装的 mysql 删除命令:rpm -e –n…

聚焦纺织行业断线检测,AI机器视觉助力小场景的大未来

随着人工智能技术的发展,机器视觉以其快速、准确、高效的信息采集和处理优势,逐渐成为制造企业现代化升级不可缺少的技术之一,持续赋能相关传统劳动密集型产业的自动化与智能化转型。 传统劳动密集型产业对于人工依赖程度高,供应…

【IDEA报错:Cause: java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在】

报错内容如下: 2023-08-17 11:17:16.274 ERROR [egrant-biz,e44d96001eb5f212,e44d96001eb5f212,true] 29700 --- [ XNIO-1 task-2] c.i.c.l.c.RestExceptionController : 服务器异常org.springframework.jdbc.BadSqlGrammarException: ### Error queryin…

【计组】校验码(奇偶校验码、海明校验码、CRC)

前言 1、小提示:本篇博文是参考王道,在复习 ASCII 码的基础上,总结校验码的相关学习知识点,并在最后搭配习题(含408真题)进行巩固练习。(对重点内容进行划线、标色) 2、适用人群&…

前端笔试+面试分享

以下是个人线下面试遇到的真实的题,仅供参考和学习 1. css 选择符有哪些?哪些属性可以继承?优先级算法加何计算? CSS选择符有很多种,例如类型选择器、类选择器、ID选择器、属性选择器、伪类选择器、伪元素选择器等。 …

linux tomcat server.xml 项目访问路径变更不生效

如果想改成默认的127.0.0.1:8080 访问项目 先确定更改的作用文件 server.xml 的 host:appBase 标签 默认找到appBase webapps 下的war包,并解压,解压后的appname为访问路径 也就变成了 127.0.0.1:8080/appname host:Context:path 标签 appBase的 优先…

深度学习技巧应用25-深度学习在的常见问题与使用技巧,让大家更容易理解深度学习,通过面试

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用25-深度学习在的常见问题与使用技巧,让大家更容易理解深度学习。在面对AI领域公司面试的过程中,往往面试官会针对AI领域或者算法实践进行提问,这些问题可能大家知…

laravel-admin之 解决上传图片不显示 $form->image(‘image‘); 及 $grid->column(‘image‘);

参考 https://blog.csdn.net/u013164285/article/details/106017464 $grid->column(‘image’)->image(‘http://wuyan.cn’, 100, 100); // //设置服务器和宽高 图片上传的域名 上传的图片不显示 在 这里设置了图片的上传路径 在这里设置 域名 就可以回显图片

如何用思维导图+Markdown提升工作效率?

在日常的工作中,我们常常需要记录一些信息、重要的事情或者一些重要的想法,Markdown就是一种非常好用的记录工具。搭配思维导图可以提高我们的记录效率,让我们的记录更加结构化。 为什么使用思维导图? 思维导图可以帮助我们整理…

你敢信?代码小白30min就能搭建一套酷炫级的驾驶舱!

大量研究结果表明,人类通过图像获取信息的速度比通过阅读文字获取信息的速度要快很多。 近几年,数据可视化在企业中越发“流行”,将数字以可视化的形式展示,不仅清晰明了地展现企业真正的实力,也能让管理者快速了解细节…

问道管理:股票打板风险大吗?怎么降低打板风险?

在股票市场上,一些出资者喜爱低吸,一些喜爱打板,那么,股票打板危险大吗?怎么下降打板危险?下面问道管理为大家准备了相关内容,以供参阅。 股票打板通常是指在个股涨停时买入,这种买入…

ssm社区管理与服务系统源码和论文

ssm社区管理与服务的设计与实现031 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 研究背景 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的…

【C++】一文带你初识C++继承

食用指南:本文在有C基础的情况下食用更佳 🍀本文前置知识: C类 ♈️今日夜电波:napori—Vaundy 1:21 ━━━━━━️💟──────── 3:23 …

【学习笔记之java】使用RestTemplate调用第三方接口

1.首先需要导入依赖 <!-- RestTemplate使用导入的依赖--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency>2.跟启动类同级创建…

Java【Spring】Bean 的作用域和生命周期

文章目录 前言前言一、关于 Bean 的作用域问题引入二、Bean 的作用域1, 什么是 Bean 的作用域2, Bean 的六种作用域3, 设置 Bean 的作用域(解决开篇的问题) 三、Bean 的生命周期总结 前言 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4…

前端大屏常用的适配方案

假设我们正在开发一个可视化拖拽的搭建平台&#xff0c;可以拖拽生成工作台或可视化大屏&#xff0c;或者直接就是开发一个大屏&#xff0c;首先必须要考虑的一个问题就是页面如何适应屏幕&#xff0c;因为我们在搭建或开发时一般都会基于一个固定的宽高&#xff0c;但是实际的…

【K210】K210学习笔记一——sensor

【K210】K210学习笔记一——sensor 前言sensor的配置模块导入模块配置模块各配置解释 完整源码 前言 本人大四学生&#xff0c;电赛生涯已经走到尽头&#xff0c;一路上踩过不少坑&#xff0c;但运气也不错拿了两年省一&#xff0c;思来想去&#xff0c;决定开始写博客&#x…

基于Mysql+Vue+Django的协同过滤和内容推荐算法的智能音乐推荐系统——深度学习算法应用(含全部工程源码)+数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境MySQL环境VUE环境 模块实现1. 数据请求和储存2. 数据处理计算歌曲、歌手、用户相似度计算用户推荐集 3. 数据存储与后台4. 数据展示 系统测试工程源代码下载其它资料下载 前言 本项目以丰富的网易云音乐数据为基…

To B和To C含义与区别

1 定义 ToB&#xff0c;指的是公司的产品或服务所面向的用户是企业。ToC&#xff0c;指的是公司的产品或服务所面向的用户是广大个体用户。 2 用户群体 对ToB产品来说&#xff0c;面对的是客户&#xff08;Business&#xff09;&#xff0c;客户是各种企业&#xff0c;组织机构…