#!/bin/bash # This script is executed by Buildkite on the host machine. # In contrast, our build jobs are run in Docker containers. # This means that even though our build jobs write to # `/artifact-mount`, the directory on the host machine is # actually `/tmp/artifacts`. # We clean up the artifacts directory before any command and # after uploading artifacts to make sure no stale artifacts # remain on the node when a Buildkite runner is re-used. set -ex if [ -d "/tmp/artifacts" ]; then echo "Cleaning up old artifacts before command." echo "Artifact directory contents before cleanup:" find /tmp/artifacts -print || true if [ "$(ls -A /tmp/artifacts)" ]; then echo "Directory not empty, cleaning up..." # Need to run in docker to avoid permission issues docker run --rm -v /tmp/artifacts:/artifact-mount alpine:latest /bin/sh -c 'rm -rf /artifact-mount/*; rm -rf /artifact-mount/.[!.]*' || true else echo "Directory already empty, no need to clean up." fi echo "Artifact directory contents after cleanup:" find /tmp/artifacts -print || true fi