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.11.2"
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: Setup Rust
if: ${{ inputs.archival-bin == '' }}
uses: moonrepo/setup-rust@v1
with:
bins: archival@${{ inputs.archival-version }}
- 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"