GitHub工作流的使用笔记

文章目录

  • 前言
  • 1. 怎么用
  • 2. 怎么写
    • 前端案例1:自动打包到新分支
    • 前端案例2:自动打包推送到gitee的build分支
    • 案例3:暂时略

前言

有些东西真的就是要不断的试错不断地试错才能摸索到一点点,就是摸索到凌晨两三点第二天要8点起床感觉要死。
为什么我会用这个东东,因为我搞的阿里云服务器2个g的运行内存,打包这玩意贼消耗内存,本来想搞Jenkins但是服务器上搞更要内存,本机搞又没必要,刚好之前的公司里面了解过这东东,直接就是试试就试试了

试错截图1
试错截图2
摸索出来能打包了野心也不会止步于此
试错截图3

1. 怎么用

怎么使用GitHub的工作流?
在项目根目录下创建.github/workflows/main.yml (main你顺便 叫ikun也行)
文件里面就是写环境和命令行命令
文件路径
然后推送到GitHub 就会自动识别并执行里面的命令

2. 怎么写

工作流文件内容

前端案例1:自动打包到新分支

当有代码被推送到main分支时触发

  • 打包代码
  • 强行推送到build分支(覆盖)
  • 发送请求给后端服务器(服务器自动到GitHub的build分支拉取部署)
  • 成功的话,配置QQ邮箱 给我另外一个邮箱发邮件

这里用到了推送别的分支,GitHub默认是关闭的,要自己打开
授予 GitHub Actions 推送权限:

  • 进入你的 GitHub 仓库的「Settings」-「Actions」页面。
  • 在「Workflow permissions」下,勾选「Allow write access to repository」选项。
  • 这样 GitHub Actions 就被授予了推送代码的权限。
    开启读取权限

命令里面用了很多${{ secrets.*** }}
这些就是不想被别人看到的一些敏感数据 比如密码 我比较保守账号密码URL全部都用这些表示了,那么怎么用呢?

  • 进入仓库设置: 在您的仓库页面上,点击顶部的Settings(设置)标签。
  • 访问Secrets部分: 在左侧菜单中,找到并点击 Secrets and variables(秘密)下面的Actions。这里存储了仓库的敏感数据。
  • 添加新的 Secret: 点击 “New repository secret”(新建仓库秘密)按钮。
  • 输入 Secret 的名称和值:
    – 在 “Name”(名称)字段中输入 Secret 的名称,例如 EMAIL_USERNAME。
    – 在 “Value”(值)字段中输入对应的数据,例如您的邮箱用户名。
  • 保存 Secret: 完成输入后,点击 “Add secret”(添加秘密)按钮保存。
    添加新的 Secret
    添加新的 Secret
name: Build and Deploy# 当代码被推送到 main 分支时触发此工作流程
on:push:branches: [main]jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v3# 设置 Node.js 环境,版本为 16- name: Setup Node.jsuses: actions/setup-node@v3with:node-version: 16# 安装项目依赖- name: Install Dependenciesrun: yarn install# 执行构建脚本- name: Buildrun: yarn run build# 先设置时区并获取东八区当前时间- name: Get Beijing Timeid: beijing_timerun: echo "BEIJING_TIME=$(TZ=Asia/Shanghai date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_ENV# 推送构建结果到 build 分支- name: Push to Build Branchrun: |git config --local user.email "action@github.com"git config --local user.name "Yc Action"git checkout --orphan temp-buildgit rm -rf .rm -rf node_modules                       # 移除 node_modulesfind . -name "*s.map" -exec rm -f {} \;   # 移除所有js.map和css.map文件mv build/* .git add -f *git commit -m "yc自动打包 - ${{ env.BEIJING_TIME }}"git push origin HEAD:build -f# 请求脚本并获取返回值- name: Run Script and Get Outputrun: |echo "SCRIPT_OUTPUT=$(curl -s ${{ secrets.URL }})" >> $GITHUB_ENV# 构建成功后发送邮件- name: Send Email on Successif: success() # 这会确保只在成功时发送邮件uses: dawidd6/action-send-mail@v2with: # 以下是发送邮件需要提供的一些配置信息server_address: smtp.qq.comserver_port: 587username: ${{ secrets.EMAIL_USERNAME }}password: ${{ secrets.EMAIL_PASSWORD }}subject: 打包成功 - ${{ env.SCRIPT_OUTPUT }}to: ${{ secrets.TO_EMAIL }}from: GitHub Actionsbody: 构建成功。构建时间:${{ env.BEIJING_TIME }}。脚本输出:${{ env.SCRIPT_OUTPUT }}

上面请求的URL是springboot 一个接口
有兴趣就看看(一定要自己加些校验)

@GetMapping("/run-script")public String runScript(String scriptName) {try {// 判断操作系统是否为LinuxString osName = System.getProperty("os.name").toLowerCase();if (!osName.contains("linux"))return "该脚本只能在Linux上运行。";// 指定要运行的脚本路径String scriptPath = "/var/script/"+scriptName;// 检查脚本是否存在if (!Files.exists(Paths.get(scriptPath)))return "脚本文件不存在。";// 在新的线程中执行脚本new Thread(() -> {try {Process process = Runtime.getRuntime().exec(scriptPath);process.waitFor();} catch (Exception e) {log.error(e.getMessage());}}).start();return "脚本在后台运行。";} catch (Exception e) {log.error(e.getMessage());return "执行脚本时出错。";}}



前端案例2:自动打包推送到gitee的build分支

代码被推送到 gitee-build 分支时触发

  • 打包代码
  • 设置gitee的仓库地址(要先提前在gitee拿到token 和在 GitHub动作秘密里面配置好)这个地址网上找了老久都找不到,基本只有GitHub的,就是设置不太一样
  • 推送到gitee(强制(覆盖))的build分支
  • 发送邮件

这里的name都用中文了,name就是个名字,比如工作流出错了 GitHub就会告诉你那个名字下面的工作出错,还有就像下图一样 清晰明了
name就是name

name: 构建和推送# 当代码被推送到 gitee-build 分支时触发此工作流程
on:push:branches: [gitee-build]jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v3- name: 设置 Node.js 环境,版本为 16uses: actions/setup-node@v3with:node-version: 16- name: 安装项目依赖run: yarn install- name: 执行构建脚本run: yarn run build- name: 先设置时区并获取东八区当前时间id: beijing_timerun: echo "BEIJING_TIME=$(TZ=Asia/Shanghai date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_ENV- name: 推送构建结果到gitee的 build 分支run: |git config --local user.email "action@github.com"git config --local user.name "Yc Action"git checkout --orphan temp-buildgit rm -rf .rm -rf node_modules                       # 移除 node_modulesfind . -name "*s.map" -exec rm -f {} \;   # 移除所有js.map和css.map文件mv build/* .git add -f *git commit -m "GitHub Actions自动打包 - ${{ env.BEIJING_TIME }}"git remote add gitee https://yc556:${{ secrets.GITEE_TOKEN }}@gitee.com/yc556/yc556.gitgit push gitee HEAD:build -f- name: 构建成功后发送邮件uses: dawidd6/action-send-mail@v2with: # 以下是发送邮件需要提供的一些配置信息server_address: smtp.qq.comserver_port: 587username: ${{ secrets.EMAIL_USERNAME }}password: ${{ secrets.EMAIL_PASSWORD }}subject: 推送到gitee成功 - ${{ env.SCRIPT_OUTPUT }}to: ${{ secrets.TO_EMAIL }}from: GitHub Actionsbody: 推送成功。请自己去更新构建内容,时间:${{ env.BEIJING_TIME }}。脚本输出:${{ env.SCRIPT_OUTPUT }}

案例3:暂时略

不只是能搞Git 毕竟动作流就像是一台免费的服务器,打包后端 定时任务,爬虫 都是可以的

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin 协程1:深入理解withContext

Kotlin 协程1:深入理解withContext 引言 在现代编程中,异步编程已经变得非常重要。在 Kotlin 中,协程提供了一种优雅和高效的方式来处理异步编程和并发。在这篇文章中,我们将深入探讨 Kotlin 协程中的一个重要函数:wi…

Java基础—面向对象—19static关键字详解、抽象类、接口、N种内部类

1、static关键字 匿名代码块、静态代码块、构造方法 静态代码块是在类加载的时候执行,仅执行一次 匿名代码块在调用构造函数之前 验证如下图: 2、静态导入包(可能很多人听都没听过) 3、Math是用final关键字的,fina…

【操作系统·考研】目录

1.概述 与文件管理系统和文件集合相关联的是文件目录,它包含有关文件的属性、位置和所有权等。 2.目录的结构 2.1 单级目录结构 在整个FS中只建立一张目录表,每个文件占一个目录项。 当访问一个文件时,先根据文件名在目录表中找到相应的FC…

数据结构day7

1.思维导图 1.二叉树递归创建 2.二叉树先中后序遍历 3.二叉树计算节点 4.二叉树计算深度。 5.编程实现快速排序降序

Ubuntu-22.04上ToDest设置开机不弹出图形界面

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、开始操作1.设置图形端 总结 前言 有时候远程成为开发必不可少的工具,目前国内有很多相关的软件,比较有名的是向日葵、ToDesk、Rust…

Hutool导入导出用法

整理了下Hutool导入导出的简单使用。 导入maven或jar包&#xff08;注意这里导入的poi只是为了优化样式&#xff09; <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --> <dependency><groupId>cn.hutool</groupId><artifactId&g…

iOS17使用safari调试wkwebview

isInspectable配置 之前开发wkwebview的页面的时候一直使用safari调试&#xff0c;毕竟jssdk交互还是要用这个比较方便&#xff0c;虽说用一个脚本插件没问题。不过还是不太方便。 但是这个功能突然到了iOS17之后发现不能用了&#xff0c;还以为又是苹果搞得bug&#xff0c;每…

webassembly003 whisper.cpp的main项目-1

参数设置 /home/pdd/le/whisper.cpp-1.5.0/cmake-build-debug/bin/main options:-h, --help [default] show this help message and exit-t N, --threads N [4 ] number of threads to use during computation-p N, --processors …

PHP的线程安全与非线程安全模式选哪个

曾经初学PHP的时候也很困惑对线程安全与非线程安全模式这块环境的选择&#xff0c;也未能理解其中意。近来无意中看到一个教程对线程安全&#xff08;饿汉式&#xff09;&#xff0c;非线程安全&#xff08;懒汉式&#xff09;的描述&#xff0c;虽然觉得现在已经能够很明了透彻…

Leetcode—1828. 统计一个圆中点的数目【中等】

2024每日刷题&#xff08;一零五&#xff09; Leetcode—1828. 统计一个圆中点的数目 实现代码 class Solution { public:vector<int> countPoints(vector<vector<int>>& points, vector<vector<int>>& queries) {vector<int> a…

互联网金融时代下,SD-WAN如何与金融行业深度融合?

金融行业正处于数字化转型的关键时期&#xff0c;互联网金融作为推动这一转型的重要力量&#xff0c;正在改变金融行业的格局。互联网金融不仅提供了各种在线金融服务&#xff0c;如网上银行、第三方支付和电子商务&#xff0c;还涉及金融科技的应用&#xff0c;如智慧网点、人…

githacker安装详细教程,linux添加环境变量详细教程(见标题三)

笔者是ctf小白&#xff0c;这两天也是遇到.git泄露的题目&#xff0c;需要工具来解决问题&#xff0c;在下载和使用的过程中也是遇到很多问题&#xff0c;写此篇记录经验&#xff0c;以供学习 在本篇标题三中有详细介绍了Linux系统添加环境变量的操作教程&#xff0c;以供学习 …

jenkins发布失败

今天用jenkins发布项目时失败了&#xff0c;而前几天还好好的。 云控制台看了下&#xff0c;发现根本就没打包。 报错如下&#xff1a; 从控制台可以看出&#xff0c;项目依赖没有下载下来&#xff0c;所以打包失败了。 根本原因是&#xff1a;在配置中给yarn指定的淘宝仓库…

2024前端面试总结—JS篇(文档持续更新中。。。)

1、Event Loop&#xff08;事件循环&#xff09;机制 JS是单线程的非阻塞语言 为什么是单线程&#xff08;如果js是多线程&#xff0c;那么两个线程同时对同一个Dom进行操作&#xff0c;一个增一个删&#xff0c;浏览器该如何执行&#xff1f;&#xff09; 非阻塞&#xff08;…

6JS对象

6.1对象简介 对象是JavaScript的基本数据类型。对象是一种复合值&#xff1a;它将很多值&#xff08;原始值或者其他对象&#xff09;聚合在一起&#xff0c;可通过名字访问这些值。对象也可看做是属性的无序集合&#xff0c;每个属性都是一个名/值对。属性名是字符串&#xf…

动态分析C语言代码生成函数调用关系的利器——perf

大纲 环境准备安装开启监控 分析采集解析 可视化处理环境准备转换成dot转换为图片 参考资料 perf是一套linux操作系统上分析工具集&#xff0c;分析函数调用关系只是其一个子集功能。它并不像《动态分析C语言代码生成函数调用关系的利器——gprof》中介绍的需要在被分析程序的编…

Java关于Excel文件的导入导出

人生如梦 荣华富贵 如木槿之花 朝荣夕逝 需求 导出&#xff1a; 能够将库表内的数据导出多个Excel表&#xff0c;并且生成一个压缩包&#xff0c;提供用户下载导入&#xff1a; 能够将一个压缩包内的多个Excel表解压&#xff0c;并获取表内的所有数据 FileUtils 工具类 publi…

flutter+go构建的即时通讯app,ChatCraft

前言 Hi&#x1f44b;all.好久不见&#xff0c;已经两个多月没有发文章了&#xff0c;这段时间一直在反思过去的一年&#xff0c;有好有坏。对博客文章这块我对自己是不满意的&#xff0c;文章的质量参差不齐&#xff0c;有时候在没有好的题材时&#xff0c;我会选择写一些泛泛…

微信小程序(二十五)条件判断语句与结构隐藏

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.条件判断语句的演示 2.隐藏结构的演示 源码&#xff1a; index.wxml <view><!-- wx:if和wx:else为条件判断语句 --><text wx:if"{{isLogin}}">已登入的用户</text><tex…

《HTML 简易速速上手小册》第2章:HTML 的标签和元素(2024 最新版)

文章目录 2.1 文本格式化标签&#xff08;&#x1f3a9;✨&#x1f4dc; 网页的“时尚搭配师”&#xff09;2.1.1 基础示例&#xff1a;一篇博客的格式化2.1.2 案例扩展一&#xff1a;产品介绍页面2.1.3 案例扩展二&#xff1a;个人简历 2.2 链接和锚点&#xff08;&#x1f6a…