Fix handling of no data in platform EOL checks. (#14617)

Also, re-enable EOL checking for Debian.
This commit is contained in:
Austin S. Hemmelgarn 2023-02-28 09:03:30 -05:00 committed by GitHub
parent 45981cb734
commit 533b98d44d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 7 deletions

View File

@ -92,7 +92,7 @@ include:
distro: debian distro: debian
version: "12" version: "12"
base_image: debian:bookworm base_image: debian:bookworm
eol_check: false eol_check: true
env_prep: | env_prep: |
apt-get update apt-get update
jsonc_removal: | jsonc_removal: |

View File

@ -17,18 +17,25 @@ LEAD_DAYS = datetime.timedelta(days=30)
DISTRO = sys.argv[1] DISTRO = sys.argv[1]
RELEASE = sys.argv[2] RELEASE = sys.argv[2]
EXIT_NOT_IMPENDING = 0
EXIT_IMPENDING = 1
EXIT_NO_DATA = 2
EXIT_FAILURE = 3
with urllib.request.urlopen(f'{ URL_BASE }/{ DISTRO }/{ RELEASE }.json') as response: with urllib.request.urlopen(f'{ URL_BASE }/{ DISTRO }/{ RELEASE }.json') as response:
match response.status: match response.status:
case 200: case 200:
data = json.load(response) data = json.load(response)
case 404: case 404:
sys.exit(f'No data available for { DISTRO } { RELEASE }.') print(f'No data available for { DISTRO } { RELEASE }.', file=sys.stderr)
sys.exit(EXIT_NO_DATA)
case _: case _:
sys.exit( print(
f'Failed to retrieve data for { DISTRO } { RELEASE } ' + f'Failed to retrieve data for { DISTRO } { RELEASE } ' +
f'(status: { response.status }).' f'(status: { response.status }).',
file=sys.stderr
) )
sys.exit(EXIT_FAILURE)
eol = datetime.date.fromisoformat(data['eol']) eol = datetime.date.fromisoformat(data['eol'])
@ -36,6 +43,6 @@ offset = abs(eol - NOW)
if offset <= LEAD_DAYS: if offset <= LEAD_DAYS:
print(data['eol']) print(data['eol'])
sys.exit(2) sys.exit(EXIT_IMPENDING)
else: else:
sys.exit(0) sys.exit(EXIT_NOT_IMPENDING)

View File

@ -54,10 +54,14 @@ jobs:
d="$(.github/scripts/platform-impending-eol.py ${{ matrix.distro }} ${{ matrix.release }})" d="$(.github/scripts/platform-impending-eol.py ${{ matrix.distro }} ${{ matrix.release }})"
case $? in case $? in
0) echo "pending=false" >> "${GITHUB_OUTPUT}" ;; 0) echo "pending=false" >> "${GITHUB_OUTPUT}" ;;
2) 1)
echo "pending=true" >> "${GITHUB_OUTPUT}" echo "pending=true" >> "${GITHUB_OUTPUT}"
echo "date=${d}" >> "${GITHUB_OUTPUT}" echo "date=${d}" >> "${GITHUB_OUTPUT}"
;; ;;
2)
echo "pending=false" >> "${GITHUB_OUTPUT}"
echo "::info::No EOL information found for ${{ matrix.distro }} ${{ matrix.release }}"
;;
*) *)
echo "::error::Failed to check EOL date for ${{ matrix.distro }} ${{ matrix.release }}" echo "::error::Failed to check EOL date for ${{ matrix.distro }} ${{ matrix.release }}"
exit 1 exit 1