diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index a792eaa..02a2068 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -20,14 +20,20 @@ jobs: - uses: actions/checkout@v4 # setup-php installs PHP 8.3+ through php-builder, which apt-installs ~70 - # -dev packages before unpacking the build (#178). Ubuntu's own image - # deletes the .debs after install, so every job re-downloads them from - # the archive. Keep them and restore them from the cache server, which - # lives in the cluster, turning a WAN download into a local one. + # -dev packages before unpacking the build (#178). Ubuntu's image deletes + # the .debs after install, so every job re-downloads them. Keeping them + # and restoring them from the cache server, which lives in the cluster, + # turns a WAN download into a local one. # - # The dep list is the same for every PHP version on the builder path, so - # one shared key serves them all. Only the .debs are cached, never - # /var/lib/apt/lists — a stale index is how you get 404s on install. + # Keyed per PHP version because the install path differs by version and + # the package sets are not interchangeable: 8.3+ pulls the ~70 -dev + # packages through php-builder, while 8.1 and 8.2 come from the ondrej + # PPA as a handful of runtime packages. Sharing one key across both lets + # whichever job finishes first decide what the others restore, and 8.1 is + # always first. + # + # Only the .debs are cached, never /var/lib/apt/lists — a stale index is + # how you get 404s mid-install. - name: Keep downloaded .debs run: | sudo rm -f /etc/apt/apt.conf.d/docker-clean @@ -38,16 +44,7 @@ jobs: uses: actions/cache@v4 with: path: /var/cache/apt/archives/*.deb - key: apt-php-builder-deps-${{ runner.arch }}-v1 - - # Temporary, for #178: shows whether the cache actually served the - # builder's dependencies, and times the step that consumes them. - - name: Report restored .debs - run: | - echo "ACTIONS_CACHE_URL: ${ACTIONS_CACHE_URL:-}" - echo "restored .debs: $(ls /var/cache/apt/archives/*.deb 2>/dev/null | wc -l)" - echo "restored size: $(du -sh /var/cache/apt/archives 2>/dev/null | cut -f1)" - date -u +'setup-php start: %H:%M:%S' + key: apt-php8.3-${{ runner.arch }}-v1 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -84,14 +81,20 @@ jobs: - uses: actions/checkout@v4 # setup-php installs PHP 8.3+ through php-builder, which apt-installs ~70 - # -dev packages before unpacking the build (#178). Ubuntu's own image - # deletes the .debs after install, so every job re-downloads them from - # the archive. Keep them and restore them from the cache server, which - # lives in the cluster, turning a WAN download into a local one. + # -dev packages before unpacking the build (#178). Ubuntu's image deletes + # the .debs after install, so every job re-downloads them. Keeping them + # and restoring them from the cache server, which lives in the cluster, + # turns a WAN download into a local one. # - # The dep list is the same for every PHP version on the builder path, so - # one shared key serves them all. Only the .debs are cached, never - # /var/lib/apt/lists — a stale index is how you get 404s on install. + # Keyed per PHP version because the install path differs by version and + # the package sets are not interchangeable: 8.3+ pulls the ~70 -dev + # packages through php-builder, while 8.1 and 8.2 come from the ondrej + # PPA as a handful of runtime packages. Sharing one key across both lets + # whichever job finishes first decide what the others restore, and 8.1 is + # always first. + # + # Only the .debs are cached, never /var/lib/apt/lists — a stale index is + # how you get 404s mid-install. - name: Keep downloaded .debs run: | sudo rm -f /etc/apt/apt.conf.d/docker-clean @@ -102,16 +105,7 @@ jobs: uses: actions/cache@v4 with: path: /var/cache/apt/archives/*.deb - key: apt-php-builder-deps-${{ runner.arch }}-v1 - - # Temporary, for #178: shows whether the cache actually served the - # builder's dependencies, and times the step that consumes them. - - name: Report restored .debs - run: | - echo "ACTIONS_CACHE_URL: ${ACTIONS_CACHE_URL:-}" - echo "restored .debs: $(ls /var/cache/apt/archives/*.deb 2>/dev/null | wc -l)" - echo "restored size: $(du -sh /var/cache/apt/archives 2>/dev/null | cut -f1)" - date -u +'setup-php start: %H:%M:%S' + key: apt-php${{ matrix.php }}-${{ runner.arch }}-v1 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -157,14 +151,20 @@ jobs: - uses: actions/checkout@v4 # setup-php installs PHP 8.3+ through php-builder, which apt-installs ~70 - # -dev packages before unpacking the build (#178). Ubuntu's own image - # deletes the .debs after install, so every job re-downloads them from - # the archive. Keep them and restore them from the cache server, which - # lives in the cluster, turning a WAN download into a local one. + # -dev packages before unpacking the build (#178). Ubuntu's image deletes + # the .debs after install, so every job re-downloads them. Keeping them + # and restoring them from the cache server, which lives in the cluster, + # turns a WAN download into a local one. # - # The dep list is the same for every PHP version on the builder path, so - # one shared key serves them all. Only the .debs are cached, never - # /var/lib/apt/lists — a stale index is how you get 404s on install. + # Keyed per PHP version because the install path differs by version and + # the package sets are not interchangeable: 8.3+ pulls the ~70 -dev + # packages through php-builder, while 8.1 and 8.2 come from the ondrej + # PPA as a handful of runtime packages. Sharing one key across both lets + # whichever job finishes first decide what the others restore, and 8.1 is + # always first. + # + # Only the .debs are cached, never /var/lib/apt/lists — a stale index is + # how you get 404s mid-install. - name: Keep downloaded .debs run: | sudo rm -f /etc/apt/apt.conf.d/docker-clean @@ -175,16 +175,7 @@ jobs: uses: actions/cache@v4 with: path: /var/cache/apt/archives/*.deb - key: apt-php-builder-deps-${{ runner.arch }}-v1 - - # Temporary, for #178: shows whether the cache actually served the - # builder's dependencies, and times the step that consumes them. - - name: Report restored .debs - run: | - echo "ACTIONS_CACHE_URL: ${ACTIONS_CACHE_URL:-}" - echo "restored .debs: $(ls /var/cache/apt/archives/*.deb 2>/dev/null | wc -l)" - echo "restored size: $(du -sh /var/cache/apt/archives 2>/dev/null | cut -f1)" - date -u +'setup-php start: %H:%M:%S' + key: apt-php8.3-${{ runner.arch }}-v1 - name: Setup PHP uses: shivammathur/setup-php@v2