name: github pages (fast) on: push: branches: - main paths-ignore: - 'src/**' - 'Cargo.toml' - 'Cargo.lock' jobs: build-deploy: runs-on: ubuntu-latest 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: Check and update ailog binary env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | # Get latest release version LATEST_VERSION=$(curl -s -H "Authorization: Bearer $GITHUB_TOKEN" \ https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r .tag_name) echo "Latest version: $LATEST_VERSION" # Check current binary version if exists mkdir -p ./bin if [ -f "./bin/ailog" ]; then CURRENT_VERSION=$(./bin/ailog --version 2>/dev/null || echo "unknown") echo "Current version: $CURRENT_VERSION" else CURRENT_VERSION="none" echo "No binary found" fi # Download if version is different or binary doesn't exist if [ "$CURRENT_VERSION" != "${LATEST_VERSION#v}" ]; then echo "Downloading ailog $LATEST_VERSION..." # Get download URL for the asset DOWNLOAD_URL=$(curl -s -H "Authorization: Bearer $GITHUB_TOKEN" \ https://api.github.com/repos/${{ github.repository }}/releases/tags/$LATEST_VERSION | \ jq -r '.assets[] | select(.name == "ailog-linux-x86_64.tar.gz") | .url') if [ -z "$DOWNLOAD_URL" ] || [ "$DOWNLOAD_URL" = "null" ]; then echo "Error: Could not find download URL for ailog-linux-x86_64.tar.gz" exit 1 fi # Download using GitHub API with Accept header echo "Downloading from: $DOWNLOAD_URL" curl -L -H "Authorization: Bearer $GITHUB_TOKEN" \ -H "Accept: application/octet-stream" \ "$DOWNLOAD_URL" -o ailog-linux-x86_64.tar.gz # Check if download was successful if [ ! -f "ailog-linux-x86_64.tar.gz" ] || [ ! -s "ailog-linux-x86_64.tar.gz" ]; then echo "Error: Download failed" exit 1 fi # Extract the binary tar -xzf ailog-linux-x86_64.tar.gz mv ailog ./bin/ailog chmod +x ./bin/ailog rm ailog-linux-x86_64.tar.gz echo "Updated to version: $(./bin/ailog --version 2>/dev/null)" else echo "Binary is up to date" chmod +x ./bin/ailog 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 ./bin/ailog build --output ./public touch ./public/.nojekyll - name: Deploy uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./public publish_branch: gh-pages