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