archival 0.18.3

The simplest CMS in existence
Documentation
# A github action for building archival sites and publishing them to a branch.
name: Archival
author: "Archival Team"
description: "Builds and publishes a local archival site"
branding:
  icon: "archive"
  color: "green"
inputs:
  archival-bin:
    description:
      A path to an archival binary to run. If not provided, will run the version
      from Cargo.toml.
    required: false
  archival-version:
    description:
      Override the archival version to use from cargo. If archival-bin is
      specified, this does nothing.
    required: false
    default: "0.18.3"
  api-host:
    description: "API Host to send build events to"
    required: false
    default: "https://api.archival.dev"
runs:
  using: "composite"
  steps:
    - name: Checkout
      uses: actions/checkout@v4
    - name: Setup Node
      uses: actions/setup-node@v4
    - name: Install Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: stable
    - name: Cache Archival Binary
      id: cache-archival
      uses: actions/cache@v4
      with:
        path: ~/.cargo/bin/archival
        key: archival-bin-${{ runner.os }}-${{ runner.arch }}-${{ inputs.archival-version }}
    - name: Install Archival
      id: maybe-archival-install
      uses: haya14busa/action-cond@v1
      with:
        cond: ${{ inputs.archival-bin == '' && steps.cache-archival.outputs.cache-hit != 'true' }}
        if_true: "cargo install archival --version ${{ inputs.archival-version }}"
        if_false: "echo 'skipping install, manual archival path provided or cached archival binary found'"
    - name: Run Install
      run: ${{ steps.maybe-archival-install.outputs.value }}
      shell: bash
    - name: Determine Archival Binary Name
      id: archival-bin
      uses: haya14busa/action-cond@v1
      with:
        cond: ${{ inputs.archival-bin == '' }}
        if_true: "archival"
        if_false: ${{ inputs.archival-bin }}
    - name: Set Build Dir
      id: dist
      run: echo "dist=$(${{ steps.archival-bin.outputs.value }} manifest build_dir)" >> $GITHUB_OUTPUT
      shell: bash
    - name: Archival Prebuild
      run: ${{ steps.archival-bin.outputs.value }} prebuild
      shell: bash
    - name: Build with Archival
      run: ${{ steps.archival-bin.outputs.value }} build
      shell: bash
    - name: Get Build Size
      id: size
      run: echo "bytes=$(du -s dist | cut -f1)" >> $GITHUB_OUTPUT
      shell: bash
    - name: Limit Build Size
      if: ${{ steps.size.outputs.bytes > 104857600 }}
      run: |
        echo "::error title={Artifact Too Big}::${{ steps.size.outputs.bytes }} exceeds maximum build size of 104857600 bytes"
        exit 1
      shell: bash
    - name: Upload Build Artifact
      uses: actions/upload-artifact@v4
      id: artifact
      with:
        name: ${{ github.sha }}
        path: ${{ steps.dist.outputs.dist }}
        if-no-files-found: error
        retention-days: 1
        overwrite: true
        include-hidden-files: true
    - name: Deploy
      uses: fjogeleit/http-request-action@v1
      with:
        url: "${{ inputs.api-host }}/sync/${{ github.repository }}/${{ steps.artifact.outputs.artifact-id }}/${{ github.ref_name }}"
        method: "PUT"