test9 #40
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
workflow_dispatch: | |
push: | |
permissions: | |
contents: read | |
packages: write | |
jobs: | |
tests: | |
runs-on: ubuntu-24.04 | |
strategy: | |
matrix: | |
version: [v1, v2] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: "opensafely-core/setup-action@v1" | |
with: | |
install-just: true | |
- name: Install uv | |
uses: astral-sh/setup-uv@4db96194c378173c656ce18a155ffc14a9fc4355 | |
- name: Remove unnecessary directories to free up space | |
run: | | |
echo "Disk space before cleanup:" | |
df -h | |
sudo rm -rf /usr/local/.ghcup | |
sudo rm -rf /opt/hostedtoolcache/CodeQL | |
sudo rm -rf /usr/local/lib/android/sdk/ndk | |
sudo rm -rf /usr/share/dotnet | |
sudo rm -rf /opt/ghc | |
sudo rm -rf /usr/local/share/boost | |
sudo apt-get clean | |
echo "Disk space after cleanup:" | |
df -h | |
# Debug step to find cache locations | |
- name: Debug BuildKit locations | |
run: | | |
echo "Checking potential BuildKit cache locations:" | |
sudo ls -la /var/lib/buildkit || echo "/var/lib/buildkit does not exist" | |
sudo ls -la /var/lib/docker/buildkit || echo "/var/lib/docker/buildkit does not exist" | |
sudo find /var/lib/docker -name "buildkit" 2>/dev/null || echo "No buildkit directory found in /var/lib/docker" | |
- name: Calculate cache key content hash | |
id: cache_content_key | |
# Because we want to dynamically include matrix.version in the path, we | |
# cannot use GHAs hashFiles construct, and have to DIY it. | |
run: | | |
if [ "${{ matrix.version }}" = "v1" ]; then | |
# v1 uses renv | |
path="v1/renv.lock" | |
else | |
# v2+ use our custom toml format, in the matrix.version subdir | |
path="${{ matrix.version }}/packages.toml" | |
fi | |
key=$(sha256sum $path | awk '{print $1}') | |
echo "cache_content_key=$key" >> "$GITHUB_OUTPUT" | |
echo "Generated cache_content_key for $path: $key" | |
# Prepare our cache directory | |
- name: Prepare cache directory | |
run: | | |
sudo mkdir -p /home/runner/buildkit-cache | |
sudo chown -R $USER:$USER /home/runner/buildkit-cache | |
- name: Cache Docker buildx caches | |
uses: actions/cache@v4 | |
with: | |
path: /home/runner/buildx-cache | |
key: ${{ runner.os }}-${{ matrix.version }}-buildx-${{ steps.cache_content_key.outputs.cache_content_key }} | |
# fallback to older cache keys if needed | |
restore-keys: | | |
${{ runner.os }}-${{ matrix.version }}-buildx- | |
lookup-only: false | |
enableCrossOsArchive: true | |
# If cache was restored, copy it to BuildKit's location | |
- name: Restore cache to BuildKit | |
run: | | |
if [ -d "/home/runner/buildkit-cache" ] && [ "$(ls -A /home/runner/buildkit-cache)" ]; then | |
sudo rm -rf /var/lib/docker/buildkit/* | |
sudo cp -r /home/runner/buildkit-cache/* /var/lib/docker/buildkit/ | |
fi | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@f7ce87c1d6bead3e36075b2ce75da1f6cc28aaca | |
with: | |
cleanup: false | |
- name: Debug BuildKit location | |
run: | | |
set -x | |
echo "BuildKit processes:" | |
ps aux | grep buildkit | |
echo "Default BuildKit location contents:" | |
sudo ls -la /var/lib/docker/buildkit || echo "/var/lib/docker/buildkit does not exist" | |
- name: check | |
run: just check | |
- name: Build image | |
run: just build ${{ matrix.version }} | |
- name: DEBUG | |
run: | | |
set -x | |
echo "Debugging BuildKit cache locations:" | |
sudo ls -la /var/lib/docker || echo "No /var/lib/docker" | |
sudo ls -la /var/lib/docker/buildkit || echo "No /var/lib/docker/buildkit" | |
sudo find /var/lib/docker -name "buildkit" -type d 2>/dev/null || echo "No buildkit directories found" | |
echo "BuildKit processes:" | |
ps aux | grep buildkit | |
echo "du" | |
sudo du -sh /var/lib/docker/buildkit | |
echo "Docker info:" | |
docker info | grep -i build | |
- name: Run tests | |
run: just test ${{ matrix.version }} | |
- name: DEBUG | |
run: | | |
set -x | |
echo "Debugging BuildKit cache locations:" | |
sudo ls -la /var/lib/docker || echo "No /var/lib/docker" | |
sudo ls -la /var/lib/docker/buildkit || echo "No /var/lib/docker/buildkit" | |
sudo find /var/lib/docker -name "buildkit" -type d 2>/dev/null || echo "No buildkit directories found" | |
echo "BuildKit processes:" | |
ps aux | grep buildkit | |
echo "du" | |
sudo du -sh /var/lib/docker/buildkit | |
echo "Docker info:" | |
docker info | grep -i build | |
- name: Build rstudio | |
run: just build-rstudio ${{ matrix.version }} | |
- name: DEBUG | |
run: | | |
set -x | |
echo "Debugging BuildKit cache locations:" | |
sudo ls -la /var/lib/docker || echo "No /var/lib/docker" | |
sudo ls -la /var/lib/docker/buildkit || echo "No /var/lib/docker/buildkit" | |
sudo find /var/lib/docker -name "buildkit" -type d 2>/dev/null || echo "No buildkit directories found" | |
echo "BuildKit processes:" | |
ps aux | grep buildkit | |
echo "du" | |
sudo du -sh /var/lib/docker/buildkit | |
echo "Docker info:" | |
docker info | grep -i build | |
- name: Test rstudio | |
run: | | |
just _env # ideally needs creating before we run the tests | |
just test-rstudio ${{ matrix.version }} | |
- name: DEBUG | |
run: | | |
set -x | |
echo "Debugging BuildKit cache locations:" | |
sudo ls -la /var/lib/docker || echo "No /var/lib/docker" | |
sudo ls -la /var/lib/docker/buildkit || echo "No /var/lib/docker/buildkit" | |
sudo find /var/lib/docker -name "buildkit" -type d 2>/dev/null || echo "No buildkit directories found" | |
echo "BuildKit processes:" | |
ps aux | grep buildkit | |
echo "du" | |
sudo du -sh /var/lib/docker/buildkit | |
echo "Docker info:" | |
docker info | grep -i build | |
- name: Save BuildKit cache | |
if: always() # Run even if previous steps failed | |
run: | | |
sudo rm -rf /home/runner/buildkit-cache/* | |
sudo cp -r /var/lib/docker/buildkit/* /home/runner/buildkit-cache/ | |
sudo chown -R $USER:$USER /home/runner/buildkit-cache | |
- name: Log into GitHub Container Registry | |
if: github.ref == 'refs/heads/main' | |
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login https://ghcr.io -u ${{ github.actor }} --password-stdin | |
- name: Publish images | |
if: github.ref == 'refs/heads/main' | |
run: | |
just publish ${{ matrix.version }} | |
just publish-rstudio ${{ matrix.version }} |