CI/CD for GitHub Actions & GitLab CI

GitHub Actions Workflows

1. Basic GitHub Actions Integration

Auto-optimize on every main branch commit

name: Minomax Automation
on:
  push:
    branches: [main]
 
jobs:
  optimize:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npx minomax prod -f avif -c mx265
      - uses: actions/upload-artifact@v3
        with:
          name: optimized-assets
          path: ./dist

2. GitHub Actions Matrix Strategy

Multi-format image optimization

jobs:
  image-formats:
    strategy:
      matrix:
        format: [webp, avif, jpg]
    steps:
      - run: npx minomax image -p "src/img/**/*" -f ${{ matrix.format }} -d dist/${{ matrix.format }}

3. GitHub Actions Caching

Cache optimized assets between runs

- uses: actions/cache@v3
  with:
    path: |
      ./dist/images
      ./dist/videos
    key: ${{ runner.os }}-assets-${{ hashFiles('**/minomax.config.json') }}

GitLab CI Pipelines

1. Basic GitLab CI Pipeline

Full optimization pipeline

stages:
  - optimize
  - deploy
 
minomax_optimize:
  stage: optimize
  image: node:20
  script:
    - npx minomax prod -f webp -i "temp/**/*"
  artifacts:
    paths:
      - dist/

2. GitLab CI Parallel Jobs

Split optimization tasks

optimize_images:
  stage: optimize
  script:
    - npx minomax image -p "assets/**/*" -d public/images
 
optimize_videos:
  stage: optimize
  script:
    - npx minomax video -p "media/**/*.mp4" -c mav1
 
minify_docs:
  stage: optimize
  needs: ["optimize_images", "optimize_videos"]
  script:
    - npx minomax minify -p "src/**/*.{js,css,html}"

3. GitLab CI Variables Integration

Environment-specific configurations

variables:
  IMAGE_FORMAT: "webp"
  VIDEO_CODEC: "mx265"
 
prod_optimize:
  script:
    - npx minomax prod -f $IMAGE_FORMAT -c $VIDEO_CODEC

Advanced Use Cases

1. GitHub Actions + Image Sets Generation

Responsive images in deployment

- name: Generate responsive sets
  run: npx minomax genset -p "src/**/*.html" -d ./public/img
 
- name: Deploy to Netlify
  uses: netlify/actions/cli@v1
  with:
    args: deploy --dir=public

2. GitLab CI + Security Hardening

Read-only container optimization

prod_build:
  container:
    image: alpine:latest
    options: --read-only
  script:
    - npx minomax prod -i "**/secret/*"

3. GitHub Actions + Init Command

Dynamic config generation

- name: Initialize Config
  run: |
    npx minomax init
    sed -i 's/"quality": 75/"quality": 85/' minomax.config.json

Platform-Specific Best Practices

GitHub Actions Pro Tips

  • Use actions/cache for node_modules and optimized assets
  • Leverage matrix jobs for multi-format testing
  • Integrate with GitHub Pages deployment:
- name: Deploy to GitHub Pages
  uses: peaceiris/actions-gh-pages@v3
  with:
    publish_dir: ./dist

GitLab CI Pro Tips

  • Use artifacts:expire_in for temporary asset storage
  • Configure parallel jobs for different asset types
  • Integrate with GitLab Pages:
pages:
  stage: deploy
  script:
    - npx minomax prod -d public
  artifacts:
    paths:
      - public




Keywords:
  • GitHub Actions Automation
  • GitLab CI/CD Pipelines
  • CI/CD Optimization Workflows
  • Parallel Job Execution
  • Asset Caching Strategies
  • Platform-Specific Deployment