实现文件分片合并功能并使用Github Actions自动编译Release

news2024/11/26 20:32:23

一、编译IOS镜像

1.1 编译

起因是公司电脑使用的Win11 23H2的预览版,这个预览版系统的生命周期只到2024-09-18,到期后就会强制每两小时重启。这是Windows强制升级系统的一种手段。

虽然公司里的台式电脑目前用不到,但是里面还保留许多旧项目的资料,所以为了保留数据,我需要尽快转为正式版。

目前Windows 11系统正式版已经更新到了24H2版本,不过总体体验并不好。很多自带功能是强制捆绑给用户使用的,且没有开放给用户关闭或者切换开关。

我需要保留新系统的新特性,并且我还不要强制捆绑给用户使用的那些功能。结合自己的使用经历、以及查阅官方文档,确定了要制作Win11 22H2 22621.2283这个版本的镜像。

访问UUPdump这个平台,根据自己的架构,选择对应的系统版本。

UUPdump 是一个社区驱动的网站和工具,旨在帮助用户下载和生成 Windows 更新包,注意这并不是由官方维护的!

下载工具后,完成IOS镜像的编译。

之后进行镜像的安装。

等待安装完毕即可。

1.2 参考致谢

2023 年 9 月 12 日 — KB5030219 (OS 内部版本 22621.2283) - Microsoft 支持

UUP dump

二、文件分片与合并

编译后的镜像,想从上海传给武汉的电脑,就需要一个不限速的服务作为媒介。我尝试了123网盘,但是这个盘下载时的网络经常断不稳定,故使用了小米云盘,但是小米云盘又限制单个文件大小。

由此我编写了文件分片与合并服务。

  • 单线程顺序将文件进行分片与合并
  • 使用内存缓冲区技术。即使操作很大的文件,运行内存也只会在1MB左右
  • 通过命令行选项使用

放一张运行图。

这种工具使用Go来写会好很多,但是Go本身又不熟悉,用不精通。就比如如何在运行时,更精巧地压榨程序内存、发挥更大性能,在这一块上没有Java用得精。

想把Jar编译成EXE,发现JavaGraalvm好垃圾,居然不支持日志组件SLFJ,我排查了后,发现是因为SLFJ中用到了好多反射,导致Graalvm失效。

三、配置GithubActions

3.1 配置

我的需求是按照如下图实现功能。

直接放上Java with Maven测试通过的maven.yml

# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Build, Package, and Release Java Project

on:
  push:
    tags:
      - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

# 在push或者pull_request时触发
# on:
#   push:
#     branches: [ "master" ]
#   pull_request:
#     branches: [ "master" ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Set up JDK 8
        uses: actions/setup-java@v3
        with:
          java-version: '8'
          distribution: 'temurin'
          cache: maven
      # 构建jar包
      - name: Build with Maven
        run: mvn package -DskipTests
      - run: mkdir staging && cp target/*.jar staging
      # 上传打包后内容到artifact
      - name: Upload JAR artifact
        uses: actions/upload-artifact@v4
        with:
          name: ${{ github.ref_name }}
          path: staging
          retention-days: 1  # 设置保留 artifact 天数
      # 创建release
      - name: Create GitHub Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: Release-${{ github.ref }}
          draft: false
          prerelease: false
      # 将软件包打成zip压缩包
      - run: zip  ${{ github.ref_name }}.zip staging/*
      # 将zip压缩包上传至release
      - name: Upload JAR to Release
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path:  ${{ github.ref_name }}.zip
          asset_name:  ${{ github.ref_name }}.zip
          asset_content_type: application/zip

最终执行结果

3.2 参考致谢

Quickstart for GitHub Actions - GitHub Docs

Contexts - GitHub Docs

Create Release Error in Github Actions - Developers: Plugin & API - Obsidian Forum

Building and testing Java with Maven - GitHub Docs

starter-workflows/ci at main · actions/starter-workflows

actions/upload-release-asset: An Action to upload a release asset via the GitHub Release API

actions/upload-release-asset: An Action to upload a release asset via the GitHub Release API

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

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

相关文章

Jenkins定时构建自动化(一):Jenkins下载安装配置

目录 ​编辑 一、jdk下载安装 1. 已下载安装jdk 2. 未下载安装jdk 二、jenkins安装 1. .war包安装 三、获取IP地址 四、jenkins网页配置 一、jdk下载安装 1. 已下载安装jdk (1)查询jdk版本命令:java -version (2)…

[SAP ABAP] 运算符

1.算数运算符 算术运算符描述加法-减法*乘法/除法MOD取余 示例1 输出结果: 输出结果: 2.比较运算符 比较运算符描述示例 等于 A B A EQ B <> 不等于 A <> B A NE B >大于 A > B A GT B <小于 A < B A LT B >大于或等于 A > B A GE B <小…

Html去除a标签的默认样式

Html去除a标签的默认样式, a标签超链接字体默认蓝色带下划线; 去除可用: a{text-decoration:none;color:inherit;cursor:auto; }测试代码 <!DOCTYPE html> <html lang"zh-CN" dir"ltr"><head><meta charset"utf-8"/>&…

【开发12年码农教你】Android端简单易用的SPI框架-——-SPA

Service(priority 1) public class APrinterService implements IPrinterService { Override public void print() { System.out.println(“this is a printer service.”); } } 复制代码 B模块 —— BPrinterService Service(path“b_printer”, priority 2) public class…

微积分-导数1(导数与变化率)

切线 要求与曲线 C C C相切于 P ( a , f ( a ) ) P(a, f(a)) P(a,f(a))点的切线&#xff0c;我们可以在曲线上找到与之相近的一点 Q ( x , f ( x ) ) Q(x, f(x)) Q(x,f(x))&#xff0c;然后求出割线 P Q PQ PQ的斜率&#xff1a; m P Q f ( x ) − f ( a ) x − a m_{PQ} \…

java小代码(1)

代码 &#xff1a; 今日总结到此结束&#xff0c;拜拜&#xff01;

FlinkCDC sink paimon 暂不支持exactly-once写入,而通过 幂等写

幂等写入&#xff1a; 一个幂等操作无论执行多少次都会返回同样的结果。例如&#xff0c;重复的向hashmap中插入同样的key-value对就是幂等操作&#xff0c;因为头一次插入操作之后所有的插入操作都不会改变这个hashmap&#xff0c;因为hashmap已经包含这个key-value对了。另一…

算法期末整理

目录 一 算法概述 二 递归与分治策略 三 动态规划 四 贪心算法 五 回溯法 六 分支限界法 七 随机化算法 八 线性规划与网络流 一 算法概述 算法的概念 通俗地讲&#xff0c;算法是指解决问题的一种方法或一个过程。更严格地讲&#xff0c;算法是由若干条指令组成的有穷…

android 对不同日期和时间的格式方法的封装

break; default: result “星期一”; break; } return result; } /** 判断两个时间是否属于同一天 param time1 param time2 return */ public boolean isSameDay(long time1, long time2) { Calendar calen Calendar.getInstance(); calen.setTimeInMillis(t…

ROS | 常见故障排查

1.开启后发出一个WIFI WIFI名字&#xff1a;WHEELTEC接数字 安全密钥&#xff1a;dongguan 2.显示屏接口 USB接口接键鼠 3.远程登录命令 ssh -Y wheeltec192.168.0.100 是小车发出的WIFI的一个IP地址 4. 登录后确保IP地址 ip a 看一下 当前ip地址 倒数第四行-当前ip地址 1…

读AI新生:破解人机共存密码笔记09精神安全权

1. 自动化史塔西 1.1. 作恶的创新也在快速发展 1.1.1. 心怀恶意的人们正在迅速地想出滥用人工智能的新方法 1.2. 史塔西&#xff08;Stasi&#xff09;是得意智皿煮国和共家国部全安更广为人知的名字&#xff0c;它被广泛认为是“有史以来最高效、最具性压镇的报情和秘密惊诧…

[SAP ABAP] 工作区

工作区是指多个预定义类型变量组成的一个变量(可理解为一组变量的集合) 程序中使用DATA关键字定义工作区 示例1 上述代码定义了2个工作区 lw_student0 和 lw_student1 示例2 lw_student是一个工作区 输出结果: 1.工作区变量赋值 示例1 输出结果如下所示&#xff1a; 示例2…

C++ | Leetcode C++题解之第179题最大数

题目&#xff1a; 题解&#xff1a; class Solution { public:string largestNumber(vector<int> &nums) {sort(nums.begin(), nums.end(), [](const int &x, const int &y) {return to_string(x) to_string(y) > to_string(y) to_string(x);});if (nu…

java基于ssm+jsp 汽车在线销售系统

1 前台功能模块 网站首页 网页首页汽车在线销售系统模块如下&#xff1a;首页、汽车信息、新闻资讯、留言反馈、我的收藏管理等功能图1 图1网页首页 网页前台车辆信息效果图如图2所示 图2 车辆信息界面图 2 管理员功能模块 管理员输入个人的账号、密码登录系统&#xff0c…

Android使用zxing生成二维码

效果图如下&#xff1a; **前提&#xff1a;导入zxing的jar后开始操作&#xff0c;老规矩最后有源码&#xff0c;作者布局默认相对布局。 第一步&#xff1a;定义二维码的长宽高及图片控件** 第二步&#xff1a;实例化QRCodeWriter后利用for循环将二维码画出来&#xff0c;然后…

UE4引擎支持HTML5

文章目录 目的UE版本html5版本编译HTML5小结目的 本篇文章主要写下UE4如何编译支持HTML5,至于为什么是UE4而不是UE5,或者一些其他的话题,本篇不做讨论。 UE版本 先来看看UE的版本管理,如下图:有大概70个分支,有些还在维护,有些还在升级;tags有200多个,很可能还会增…

Java程序之可爱的小兔兔

题目&#xff1a; 古典问题&#xff0c;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子总数为多少? 程序分析&#xff1a; 兔子的规律为数列1,1,2,3,…

【html】用html+css实现银行的账户信息表格

我们先来看一看某银行的账户信息表格 我们自己也可以实现类似的效果 效果图: 大家可以看到&#xff0c;其实效果差不多 接下来看看我们实现的代码 源码&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"&…

AI网络爬虫:搜狗图片的时间戳反爬虫应对策略

如何批量爬取下载搜狗图片搜索结果页面的图片&#xff1f;以孙允珠这个关键词的搜索结果为例&#xff1a; https://pic.sogou.com/pics?query%E5%AD%99%E5%85%81%E7%8F%A0&mode2 翻页规律如下&#xff1a; https://pic.sogou.com/napi/pc/searchList?mode2&start38…

HTML(19)——Flex

Flex布局也叫弹性布局&#xff0c;是浏览器提倡的布局模型&#xff0c;非常适合结构化布局&#xff0c;提供了强大的空间分布和对齐能力。 Flex模型不会产生浮动布局中脱标现象&#xff0c;布局网页更简单、更灵活。 Flex-组成 设置方式&#xff1a;给父元素设置display:fle…