tictacrustle 1.0.0-next.2

Tic Tac Toe game with a Menace[ing] AI
Documentation
---
name: Book Deployment
on:
  workflow_call:
    outputs:
      deployment_url:
        description: "The vercel deployment url of the book"
        value: ${{ jobs.deploy_book.outputs.deployment_url }}

env:
  VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
  VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
  VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
  GITHUB_TOKEN: ${{ secrets.ACTIONS_PAT_GITHUB }}
  BRANCH: ${{ github.ref_name }}

jobs:
  deploy_book:
    runs-on: ubuntu-latest
    env:
      PROJECT_ENVIRONMENT: ''
      STORE_PATH: ''
    outputs:
      deployment_url: ${{ steps.output_deployment_url.outputs.deployment_url }}
    steps:
      - name: Checkout the Repository
        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
      - name: Decide Deployment Environment
        id: deployment_environment
        run: |
          if [[ ${{ env.BRANCH }} == "main" ]]; then
            echo "PROJECT_ENVIRONMENT=production" >> $GITHUB_ENV
          else
            echo "PROJECT_ENVIRONMENT=preview" >> $GITHUB_ENV
          fi
      - name: Setup NodeJS
        uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
        with:
          node-version: '18'
      - name: Install pnpm
        uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # v3.0.0
        with:
          version: 8
          run_install: false
      - name: Get pnpm store directory
        shell: bash
        run: |
          echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
      - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
        name: Setup pnpm cache
        with:
          path: ${{ env.STORE_PATH }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@master
        id: rust-toolchain
        with:
          toolchain: stable
      - name: Cache dependencies
        uses: Swatinem/rust-cache@6fd3edff6979b79f87531400ad694fb7f2c84b1f # v2.2.1
      - name: Install cargo-binstall
        uses: taiki-e/install-action@b7add58e53e52e624966da65007ce24524f3dcf3 # v2.27.9
        with:
          tool: cargo-binstall
      - name: Install dependencies
        run: cargo binstall --log-level debug --no-confirm --locked mdbook mdbook-plantuml mdbook-inline-highlighting
      - name: Install dependencies
        run: pnpm install -g vercel@latest
      - name: Populate Preview Variables
        run: vercel pull --yes --environment=${{env.PROJECT_ENVIRONMENT}} --token=${{ env.VERCEL_TOKEN }}
      - name: Build the Book
        run: mdbook build guide
      - name: Build for Vercel deployment -- Preview
        if: env.PROJECT_ENVIRONMENT == 'preview'
        run: vercel build --cwd guide/book -y -d --token=${{ env.VERCEL_TOKEN }}
      - name: Build for Vercel deployment -- Production
        if: env.PROJECT_ENVIRONMENT == 'production'
        run: vercel build --cwd guide/book -y --prod -d --token=${{ env.VERCEL_TOKEN }}
      - name: Deploy to Vercel -- Preview
        if: env.PROJECT_ENVIRONMENT == 'preview'
        run: vercel deploy --cwd guide/book --prebuilt --token=${{ env.VERCEL_TOKEN }} > deployment_url
      - name: Deploy to Vercel -- Production
        if: env.PROJECT_ENVIRONMENT == 'production'
        run: vercel deploy --cwd guide/book --prod --prebuilt --token=${{ env.VERCEL_TOKEN }} > deployment_url
      - name: Output Deployment URL
        id: output_deployment_url
        run: echo "deployment_url=$(cat deployment_url)" >> $GITHUB_OUTPUT