Skip to content
/ imgcmp Public

📷A GitHub Action that automatically optimizes images in your repository. Supported image file formats: JPEG, PNG, GIF, SVG, WEBP

License

Notifications You must be signed in to change notification settings

9sako6/imgcmp

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

imgcmp v2.0.4

ci marketplace

This GitHub Actions optimizes images in your repository. You will receive a pull request with optimized images. This Github Actions is inspired by ImgBot.

A pull request example:

Usage

name: imgcmp
on:
  push:
    branches:
      - main
      - master
jobs:
  imgcmp:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: 9sako6/[email protected]
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

Warning

- uses: 9sako6/imgcmp@master # NG

Do not reference master since that is the latest code and can be carrying breaking changes of the next major version.

If you want to run this action only once a week, please add the following lines.

name: imgcmp
on:
  schedule:
    - cron: "0 0 * * 1" # Weekly build
jobs:
  imgcmp:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: 9sako6/[email protected]
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

Then, you will receive a pull request with optimized images every Monday at 0:00.

Configuration

Action inputs

Name Description Required
token GITHUB_TOKEN or a Personal access token (PAT). In a private repository, you have to use a PAT with enough permissions. See How to use a Personal Access Token. true
paths-ignore-regexp Regular expression for images' paths you don't want to compress. false

paths-ignore-regexp

imgcmp offers an ignore option. paths-ignore-regexp is regular expression for images' paths you don't want to compress.

Example:

name: imgcmp
on:
  push:
    branches:
      - main
      - master
jobs:
  imgcmp:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: 9sako6/[email protected]
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          paths-ignore-regexp: "(ignore/.*)|(public/.*)"

Action outputs

Name Description
pull-request-number A pull request number created by imgcmp.

Step outputs can be accessed as in the following example.

      - uses: 9sako6/[email protected]
        id: imgcmp
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Check outputs
        run: |
          echo ${{ steps.imgcmp.outputs.pull-request-number }}

Supported image formats

  • JPEG/JPG
  • PNG
  • GIF
  • SVG
  • WEBP

Optimization tools

This bot uses these optimizers.

  • -m85: this will store the image with 85% quality
  • -o2: this sets the optimization level 2 (there is 0-7 optimization levels)
  • -O3: this sets the optimization level to Gifsicle's maximum

SVGO's default configuration will be used.

  • -q 75: cwebp's default optimization level

Benchmark

It took 34 sec to create the following PR.

Change Log

v2.0.4 (May 7, 2023)

Bug fixes.

v2.0.3 (March 25, 2023)

Bug fixes.

  • truncate long messages (#272)

v2.0.2 (June 26, 2022)

  • Skip to create PR if there are small changes (#184)
  • Add pull-request-number outputs (#169)

v2.0.1 (April 10, 2022)

Bug fixes.

  • Fix the problem that actions fail when a trigger event is pull_request (#99)
  • Fix the problem that actions fail when paths-ignore-regexp is empty (#51)

v2.0.0 (February 6, 2022)

There are breaking changes from version 1.0.1.

  • Add token input (#26)
    • GITHUB_TOKEN option in env was deleted.
  • Add paths-ignore-regexp input (#26)
    • IGNORED_FILES option in env was deleted.
  • Refactoring the pull request template (#26)

Roadmap

  • Make it more maintainable...

About

📷A GitHub Action that automatically optimizes images in your repository. Supported image file formats: JPEG, PNG, GIF, SVG, WEBP

Topics

Resources

License

Stars

Watchers

Forks

Packages