diff --git a/.github/actions/sign-attest-image/action.yml b/.github/actions/sign-attest-image/action.yml index de0133dac0..564a621380 100644 --- a/.github/actions/sign-attest-image/action.yml +++ b/.github/actions/sign-attest-image/action.yml @@ -46,7 +46,15 @@ runs: env: IMAGE: ${{ inputs.image }} DIGEST: ${{ inputs.digest }} - run: cosign sign --yes --recursive "${IMAGE}@${DIGEST}" + # Fulcio and Rekor return transient 5xx often enough to fail a release; + # re-signing the same digest only adds a signature, so retrying is safe. + run: | + for attempt in 1 2 3 4 5; do + cosign sign --yes --recursive "${IMAGE}@${DIGEST}" && exit 0 + echo "::warning::cosign sign failed (attempt $attempt/5)" + [ "$attempt" -lt 5 ] && sleep $((attempt * 30)) + done + exit 1 - name: SLSA provenance (GitHub artifact attestation) uses: actions/attest-build-provenance@v4 diff --git a/backend/windmill-worker/src/worker.rs b/backend/windmill-worker/src/worker.rs index 4048a3603c..f6e1fc7f61 100644 --- a/backend/windmill-worker/src/worker.rs +++ b/backend/windmill-worker/src/worker.rs @@ -1055,6 +1055,7 @@ enum NsjailProbeError { fn probe_nsjail(nsjail_path: &str) -> Result { // A fresh private directory: the worker runs what this config says, as itself. let dir = std::env::temp_dir().join(format!("windmill-nsjail-probe-{}", uuid::Uuid::new_v4())); + #[cfg_attr(not(unix), allow(unused_mut))] let mut builder = std::fs::DirBuilder::new(); #[cfg(unix)] std::os::unix::fs::DirBuilderExt::mode(&mut builder, 0o700);