name: Deploy to Cloudflare Pages on: push: branches: - main workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest permissions: contents: read deployments: write steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '21' - name: Install dependencies run: | cd oauth npm install - name: Build OAuth app run: | cd oauth npm run build - name: Copy OAuth build to static run: | mkdir -p my-blog/static/assets cp -r oauth/dist/assets/* my-blog/static/assets/ cp oauth/dist/index.html my-blog/static/oauth/index.html || true - 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: Build site with ailog run: | cd my-blog ../bin/ailog build - name: List public directory run: | ls -la my-blog/public/ - name: Deploy to Cloudflare Pages uses: cloudflare/pages-action@v1 with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} projectName: ${{ secrets.CLOUDFLARE_PROJECT_NAME }} directory: my-blog/public gitHubToken: ${{ secrets.GITHUB_TOKEN }} wranglerVersion: '3'