Skip to content
You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?
image

GitHub Action

imgcmp

v2.0.3

imgcmp

image

imgcmp

Optimize images in your repository. Supported image file formats: JPEG, PNG, GIF, SVG, WEBP

Installation

Copy and paste the following snippet into your .yml file.

              

- name: imgcmp

uses: 9sako6/[email protected]

Learn more about this action in 9sako6/imgcmp

Choose a version

imgcmp v2.0.3

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 }}

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.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)

Author

9sako6