- Add release.yml for multi-platform binary builds (Linux, macOS, Windows) - Add gh-pages-fast.yml for fast deployment using pre-built binaries - Add build-binary.yml for standalone binary artifact creation - Optimize Cargo.toml with build profiles and reduced tokio features - Remove 26MB of unused Font Awesome assets (kept only essential files) - Font Awesome reduced from 28MB to 1.2MB 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
92 lines
2.6 KiB
YAML
92 lines
2.6 KiB
YAML
name: github pages (fast)
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths-ignore:
|
|
- 'src/**'
|
|
- 'Cargo.toml'
|
|
- 'Cargo.lock'
|
|
|
|
jobs:
|
|
build-deploy:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
pages: write
|
|
id-token: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Cache ailog binary
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ./bin
|
|
key: ailog-bin-${{ runner.os }}
|
|
restore-keys: |
|
|
ailog-bin-${{ runner.os }}
|
|
|
|
- name: Setup ailog binary
|
|
run: |
|
|
# Get expected version from Cargo.toml
|
|
EXPECTED_VERSION=$(grep '^version' Cargo.toml | cut -d'"' -f2)
|
|
echo "Expected version from Cargo.toml: $EXPECTED_VERSION"
|
|
|
|
# Check current binary version if exists
|
|
if [ -f "./bin/ailog" ]; then
|
|
CURRENT_VERSION=$(./bin/ailog --version 2>/dev/null || echo "unknown")
|
|
echo "Current binary version: $CURRENT_VERSION"
|
|
else
|
|
CURRENT_VERSION="none"
|
|
echo "No binary found"
|
|
fi
|
|
|
|
# Check OS
|
|
OS="${{ runner.os }}"
|
|
echo "Runner OS: $OS"
|
|
|
|
# Use pre-packaged binary if version matches or extract from tar.gz
|
|
if [ "$CURRENT_VERSION" = "$EXPECTED_VERSION" ]; then
|
|
echo "Binary is up to date"
|
|
chmod +x ./bin/ailog
|
|
elif [ "$OS" = "Linux" ] && [ -f "./bin/ailog-linux-x86_64.tar.gz" ]; then
|
|
echo "Extracting ailog from pre-packaged tar.gz..."
|
|
cd bin
|
|
tar -xzf ailog-linux-x86_64.tar.gz
|
|
chmod +x ailog
|
|
cd ..
|
|
|
|
# Verify extracted version
|
|
EXTRACTED_VERSION=$(./bin/ailog --version 2>/dev/null || echo "unknown")
|
|
echo "Extracted binary version: $EXTRACTED_VERSION"
|
|
|
|
if [ "$EXTRACTED_VERSION" != "$EXPECTED_VERSION" ]; then
|
|
echo "Warning: Binary version mismatch. Expected $EXPECTED_VERSION but got $EXTRACTED_VERSION"
|
|
fi
|
|
else
|
|
echo "Error: No suitable binary found for OS: $OS"
|
|
exit 1
|
|
fi
|
|
|
|
- name: Setup Hugo
|
|
uses: peaceiris/actions-hugo@v3
|
|
with:
|
|
hugo-version: "0.139.2"
|
|
extended: true
|
|
|
|
- name: Build with ailog
|
|
env:
|
|
TZ: "Asia/Tokyo"
|
|
run: |
|
|
# Use pre-built ailog binary instead of cargo build
|
|
cd my-blog
|
|
../bin/ailog build
|
|
touch ./public/.nojekyll
|
|
|
|
- name: Deploy
|
|
uses: peaceiris/actions-gh-pages@v3
|
|
with:
|
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
publish_dir: ./my-blog/public
|
|
publish_branch: gh-pages |