The `actions/upload-pages-artifact` repository provides a composite GitHub Action that packages a directory of static assets into a tarball and uploads it as an Actions artifact, specifically for deploying to GitHub Pages. The action is defined in `action.yml`, which orchestrates shell commands to create a tar archive with proper handling of symlinks (dereferencing them), exclusion of `.git` and `.github` directories, and optional exclusion of hidden files. The archive is then uploaded using the `actions/upload-artifact` action. The action runs on Linux, macOS, and Windows runners, with platform-specific adjustments (e.g., using `gtar` on macOS). The repository also includes a test script (`script/new-artifact.sh`) to generate sample files for testing, along with a comprehensive CI matrix that validates the action on all three OSes and checks for correct handling of hidden files and symlinks. Overall, this is a focused, well-maintained utility action that solves a specific problem (preparing Pages artifacts) with robust cross-platform support.
This repository is a GitHub Action designed to capture screenshots of websites across different operating systems. It takes inputs such as source URL or HTML content, destination filename, and optional parameters like full-page capture, width, and delay. The action uses the `capture-website` package (which relies on Puppeteer) to generate the screenshot, then uploads it as an artifact in the GitHub Actions workflow and exposes the file path as an output. The architecture is straightforward: the entry point (index.js) delegates to core logic in lib/screenshot-website.js, which handles input processing, Chrome executable location based on the runner OS, screenshot capture, artifact upload, and output setting. While the main logic is tightly coupled to the GitHub Actions environment, the repository contains a reusable utility function for normalizing and parsing action inputs (lib/load-inputs.js) that could be extracted for use in other Node.js projects. The action shows signs of technical drift due to its reliance on Node.js 12 (end-of-life) and outdated dependencies like Puppeteer 13.7.0, though it remains functional through active Dependabot updates and CI workflows.