postgres.git / summary / log / commit / refs

commit    9302f6fa58bad6bc7ffbe17b8980e022bf1116d8
Author:   Thomas Munro <tmunro@postgresql.org>
Date:     Wed Jul 24 23:26:48 2024 +0000
First released in: 18.0, 15.8, 16.4, 17.0

    ci: Upgrade macOS version from 13 to 14.
    
    1.  Previously we were using ghcr.io/cirruslabs/macos-XXX-base:latest
    images, but Cirrus has started ignoring that and using a particular
    image, currently ghcr.io/cirruslabs/macos-runner:sonoma, for github
    accounts using free CI resources (as opposed to dedicated runner
    machines, as cfbot uses).  Let's just ask for that image anyway, to stay
    in sync.
    
    2.  Instead of hard-coding a MacPorts installation URL, deduce it from
    the running macOS version and the available releases.  This removes the
    need to keep the ci_macports_packages.sh in sync with .cirrus.task.yml,
    and to advance the MacPorts version from time to time.
    
    3.  Change the cache key we use to cache the whole macports installation
    across builds to include the OS major version, to trigger a fresh
    installation when appropriate.
    
    Back-patch to 15 where CI began.
    
    Reviewed-by: Andres Freund <andres@anarazel.de>
    Discussion: https://postgr.es/m/CA%2BhUKGLqJdv6RcwyZ_0H7khxtLTNJyuK%2BvDFzv3uwYbn8hKH6A%40mail.gmail.com


.cirrus.tasks.yml | 9 +++++++-- src/tools/ci/ci_macports_packages.sh | 14 +++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index bf45a55f0d7..0616fb9ba34 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -409,7 +409,7 @@ task: task: - name: macOS - Ventura - Meson + name: macOS - Sonoma - Meson env: CPUS: 4 # always get that much for cirrusci macOS instances @@ -418,7 +418,7 @@ task: # work OK. See # https://postgr.es/m/20220927040208.l3shfcidovpzqxfh%40awork3.anarazel.de TEST_JOBS: 8 - IMAGE: ghcr.io/cirruslabs/macos-ventura-base:latest + IMAGE: ghcr.io/cirruslabs/macos-runner:sonoma CIRRUS_WORKING_DIR: ${HOME}/pgsql/ CCACHE_DIR: ${HOME}/ccache @@ -456,6 +456,11 @@ task: # updates macports every time. macports_cache: folder: ${MACPORTS_CACHE} + fingerprint_script: | + # Include the OS major version in the cache key. If the OS image changes + # to a different major version, we need to reinstall. + sw_vers -productVersion | sed 's/\..*//' + reupload_on_changes: true setup_additional_packages_script: | sh src/tools/ci/ci_macports_packages.sh \ ccache \ diff --git a/src/tools/ci/ci_macports_packages.sh b/src/tools/ci/ci_macports_packages.sh index 4bc594a31d1..722bc8e948d 100755 --- a/src/tools/ci/ci_macports_packages.sh +++ b/src/tools/ci/ci_macports_packages.sh @@ -13,7 +13,19 @@ set -e packages="$@" -macports_url="https://github.com/macports/macports-base/releases/download/v2.8.1/MacPorts-2.8.1-13-Ventura.pkg" +macos_major_version="` sw_vers -productVersion | sed 's/\..*//' `" +echo "macOS major version: $macos_major_version" + +# Scan the avialable MacPorts releases to find the latest one for the +# running macOS release. By default we assume the first match is the most +# recent MacPorts version but that can be changed below if it turns out to be +# problematic or a particular MacPorts release turns out to be broken. +macports_release_list_url="https://api.github.com/repos/macports/macports-base/releases" +macports_version_pattern=".*" +#macports_version_pattern="2\.9\.3" +macports_url="$( curl -s $macports_release_list_url | grep "\"https://github.com/macports/macports-base/releases/download/v$macports_version_pattern/MacPorts-$macports_version_pattern-$macos_major_version-[A-Za-z]*\.pkg\"" | sed 's/.*: "//;s/".*//' | head -1 )" +echo "MacPorts package URL: $macports_url" + cache_dmg="macports.hfs.dmg" if [ "$CIRRUS_CI" != "true" ]; then [parent: 7c32f2222f99]