Radar · Rust · Archive · Week 44 · Oct 27 – Nov 2, 2025
Update actions/upload-pages-artifact to v4
Breakingtooling
- What changed
- The
upload-pages-artifactaction was upgraded from v3.0.1 to v4.0.0. Hidden files (dotfiles) will no longer be included in the artifact. If dotfiles are required, the action must be replaced with a custom artifact creation that meets the new requirements. - Production impact
- The source does not say.
- Try it
- Run a GitHub Actions workflow that uses
actions/upload-pages-artifact@v4and observe that dotfiles are omitted from the uploaded artifact. - Source
- github.com/rust-lang/rfcs/pull/3876
Understand it, then run it
Run it now
// This program demonstrates the effect of the v4.0.0 change to
// actions/upload-pages-artifact: dotfiles are not included in the
// artifact by default. Since we cannot run the GitHub action here,
// we simulate the behavior by creating a temporary directory with
// a normal file and a dotfile, then listing the files that would
// be uploaded.
use std::fs::{self, File};
use std::io::Write;
use std::path::Path;
fn main() -> std::io::Result<()> {
// Create a temporary directory
let dir = std::env::temp_dir().join("artifact_demo");
if dir.exists() {
fs::remove_dir_all(&dir)?;
}
fs::create_dir(&dir)?;
// Normal file
let normal_path = dir.join("index.html");
File::create(&normal_path)?.write_all(b"<html></html>")?;
// Dotfile
let dot_path = dir.join(".gitignore");
File::create(&dot_path)?.write_all(b"*")?;
// Simulate the artifact upload: list non-dot files
println!("Files that would be uploaded by v4.0.0:");
for entry in fs::read_dir(&dir)? {
let entry = entry?;
let file_name = entry.file_name();
let name_str = file_name.to_string_lossy();
if !name_str.starts_with('.') {
println!(" {}", name_str);
}
}
// Clean up
fs::remove_dir_all(&dir)?;
Ok(())
}
What it printed when we ran it on Rust 1.98.1 (edition 2024)
Files that would be uploaded by v4.0.0: index.html
Run sends this program (for Solidity, the contract and its tests) to our own sandbox, where it is compiled and run once, with no network, and what it printed or the test report comes back here. Nothing is kept. Runs are counted per visitor for the day so everyone gets a turn; the details are on the legal page.
Written by gpt-oss-20b from the linked source · claims checked against the sources · archive, not individually reviewed