Implementing 32-bit CI Pipelines in 64-bit GitHub Actions Environments
These articles are AI-generated summaries. Please check the original sources for full details.
Automatic cross-platform testing: part 7: 32 bit, again
David Cantrell has developed a workflow to restore 32-bit testing capabilities after GitHub Actions transitioned to 64-bit only infrastructure for core components. The system utilizes the GitHub API to fetch artifacts on 32-bit OS images where standard actions are no longer compatible.
Why This Matters
While cloud providers prioritize 64-bit modernization, many technical environments still rely on 32-bit addressing for compatibility and memory efficiency. The technical reality is that ‘64-bit only’ environments break critical validation paths for software like Perl, which must be tested specifically against 32-bit integer constraints that do not exist on 64-bit hardware. This forced migration requires engineers to build custom API-driven retrieval mechanisms to maintain platform inclusivity without relying on obsolete or insecure action versions.
Key Insights
- GitHub’s native actions for repository checkout and artifact retrieval are now strictly 64-bit only (Cantrell, 2026).
- Perl integers on 32-bit platforms can be compiled as either 32-bit or 64-bit, whereas they are always 64-bit on 64-bit machines.
- Automated artifact retrieval can be replicated by querying the GitHub API for the most recent unexpired artifact using curl and jq.
- Building Perl from source (e.g., version 5.42.0) is necessary to ensure the compiler toolchain uses 32-bit integers by omitting the -Duse64bitint flag.
Working Examples
A shell command to programmatically fetch the latest non-expired build artifact via the GitHub API.
curl -L -H "X-GitHub-Api-Version: 2022-11-28" -H "Authorization: Bearer ${GH_TOKEN}" -o dist-for-install.zip $(curl -L -s -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ${GH_TOKEN}" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/${GH_REPOSITORY}/actions/artifacts -o - | jq -r '[.artifacts.[]|select(.expired == false)] | max_by(.created_at).archive_download_url')
Building a 32-bit compatible Perl environment from source to avoid default 64-bit integer packaging.
curl -o perl-5.42.0-src.tar.gz https://cpan.metacpan.org/authors/id/B/BO/BOOK/perl-5.42.0.tar.gz && tar xzf perl-5.42.0-src.tar.gz && cd perl-5.42.0 && sh Configure -de -Dprefix=$HOME/perl-5.42.0-installed && make -j $(nproc) && make install
Practical Applications
- Use case: Validating Perl modules on 32-bit Linux and Unix-like OS images (NetBSD, OpenBSD) to catch overflow errors. Pitfall: Relying on system-provided Perl packages which often default to 64-bit integers even on 32-bit OSs.
- Use case: Maintaining CI/CD for legacy x86 architectures using modern GitHub runners. Pitfall: Using outdated 32-bit action versions which may eventually fail due to API deprecation or security policy updates.
References:
Continue reading
Next article
Custom Software Engineering: QllmSoft's Approach to High-Performance Applications
Related Content
Standardizing DevOps: Implementing Shared Reusable GitHub Workflows
Engineer Marcos Vilela implements a shared GitHub Actions model for Node.js and AWS to eliminate pipeline duplication and enforce security standards.
Building an Automated Multi-Platform Blog Pipeline with GitHub Actions and AI
Learn how to build a GitHub Actions pipeline that automates blog distribution across DEV.to, Hashnode, and Blogger using AI-driven workflow design and OAuth2 token management.
Automating Production: Setting Up a CI/CD Pipeline in 10 Minutes
Learn how to implement a GitHub Actions and Render-based CI/CD pipeline that automates testing and deployment to reduce bugs by 90% in under 10 minutes.