小于博客 小于博客
首页
  • Java学习笔记
  • Docker专区
  • 实战教程
  • Shell
  • 内存数据库
  • Vue学习笔记
  • Nginx
  • Php
  • CentOS
  • Docker
  • Gitlab
  • GitHub
  • MySql
  • MongoDB
  • OpenVPN
  • 配置文件详解
  • Other
  • ELK
  • K8S
  • Nexus
  • Jenkins
  • 随写编年
  • 电影音乐
  • 效率工具
  • 博客相关
  • 最佳实践
  • 迎刃而解
  • 学习周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • 网站状态 (opens new window)
    • json2go (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

小于博客

行者常至,为者常成
首页
  • Java学习笔记
  • Docker专区
  • 实战教程
  • Shell
  • 内存数据库
  • Vue学习笔记
  • Nginx
  • Php
  • CentOS
  • Docker
  • Gitlab
  • GitHub
  • MySql
  • MongoDB
  • OpenVPN
  • 配置文件详解
  • Other
  • ELK
  • K8S
  • Nexus
  • Jenkins
  • 随写编年
  • 电影音乐
  • 效率工具
  • 博客相关
  • 最佳实践
  • 迎刃而解
  • 学习周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • 网站状态 (opens new window)
    • json2go (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • Nginx

  • Php

  • CentOS

  • Docker

  • GitLab

  • GitHub

    • GitHub中开源项目维护流程手册
    • 分享我的开源项目Thank-Mirror
    • 一个仅需三步配置就能生成免费个人博客的开源模板vdoing-template
    • 如何将个人的GitHub主页配置的优雅好看
    • 利用GitHub Actions自动为README添加TOC目录
    • 利用GitHub Actions自动将项目贡献者列表添加到README中
    • 利用GitHub Actions自动优雅地为项目构建Releases
    • 利用GitHub Actions自动获取博客rss文章
    • 利用GitHub Actions自动构建项目的docker镜像并发布到DockerHub
    • 利用GitHub Actions自动生成GitHub的Fans
    • 利用GitHub Actions自动生成个人star列表并归类
    • 利用GitHub Actions自动对仓库内图片进行无损压缩
    • 利用GitHub Actions自动检测项目中的问题链接
    • 利用GitHub Actions自动构建go项目的二进制到release
    • 利用github-slug-action暴漏Github Action上下文中的关键变量
  • Mysql

  • MongoDB

  • OpenVPN

  • 配置文件详解

  • Other

  • 运维观止
  • GitHub
小于博客
2022-08-01

利用GitHub Actions自动对仓库内图片进行无损压缩

我维护的 awesome-github-profile-readme-chinese (opens new window) 项目旨在收集汇总中文区优秀的个人主页,每个人的主页将会通过截图的方式存放在 exampls 目录下,有时候有的朋友主页内容很多,这样整体截图下来就非常大。

本文就介绍一个有意思的小动作,它的主要功能是可以自动扫描仓库内的图片,然后对其进行几乎无损的压缩,让整个仓库的体积保持在一个相对低的水平。

所用Actions:image-actions (opens new window)

使用配置其实非常简单,基本上阅读完官方介绍文档就可以上手使用了,这里说一两个需要注意的地方。

首先添加Actions配置文件,e.g. .github/workflows/images.yml:

name: 压缩图片
on:
  push:
    branches:
      - main
    paths:
      - '**.jpg'
      - '**.jpeg'
      - '**.png'
      - '**.webp'
  workflow_dispatch:
jobs:
  build:
    name: calibreapp/image-actions
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Compress Images
        id: calibre
        uses: calibreapp/image-actions@main
        with:
          githubToken: ${{ secrets.GITHUB_TOKEN }}
          compressOnly: true
          jpegQuality: '60'
          jpegProgressive: false
          pngQuality: '60'
          webpQuality: '60'
      - name: Create New Pull Request If Needed
        if: steps.calibre.outputs.markdown != ''
        uses: peter-evans/create-pull-request@v3
        with:
          title: '🛠 压缩图片'
          branch-suffix: timestamp
          commit-message: '🛠 压缩图片'
          body: ${{ steps.calibre.outputs.markdown }}
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

需要注意,压缩图片的动作,在运行之后,会自动将图片二次commit上来,这就要求该动作具有对应commit的权限才行,通常我们配置的token没有其他开发者fork之后的仓库的权限,于是这里并不能直接处理其他人PR过来的内容中的图片。

官方给出的建议是:

  • 要么其他开发者通过在主仓库check一个分支,然后在主仓库进行分支的PR。但这种方式其实并非是GitHub中协作的主流场景,多用在开发者个人维护的流程。
  • 要么就是先处理其他人通过fork的方式提交上来的PR,当PR被同意之后,会自动进行扫描检查,然后该动作完成图片压缩之后,再自动创建一个新的PR,来完成图片的压缩。

还需要注意的一点是:其中的 secrets.GITHUB_TOKEN是操作当前仓库使用的,不需要进行更改,如果改了,反而会报错。

效果如下:

这个动作会自动将图片处理好,然后提交到当次PR上,我们可以点开 View diff查看前后的区别:

目前这个效果据我个人放大前后两张照片来看,在体积缩小了80%的情况下,清晰度几乎是一致的,还是非常给力的一个动作,适合那些存放图片比较多的仓库。

上次更新: 2024/01/11, 14:21:50

← 利用GitHub Actions自动生成个人star列表并归类 利用GitHub Actions自动检测项目中的问题链接→

最近更新
01
SpringBoot 快速实现 api 加密!
03-21
02
SpringBoot整合SQLite
03-07
03
SpringBoot配置使用H2数据库的简单教程
02-21
更多文章>
Theme by Vdoing | Copyright © 2017-2024 | 点击查看十年之约 | 豫ICP备2022014539号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式