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
version: "12"
base_image: debian:bookworm
eol_check: false
eol_check: true
env_prep: |
apt-get update
jsonc_removal: |

View File

@ -17,18 +17,25 @@ LEAD_DAYS = datetime.timedelta(days=30)
DISTRO = sys.argv[1]
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:
match response.status:
case 200:
data = json.load(response)
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 _:
sys.exit(
print(
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'])
@ -36,6 +43,6 @@ offset = abs(eol - NOW)
if offset <= LEAD_DAYS:
print(data['eol'])
sys.exit(2)
sys.exit(EXIT_IMPENDING)
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 }})"
case $? in
0) echo "pending=false" >> "${GITHUB_OUTPUT}" ;;
2)
1)
echo "pending=true" >> "${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 }}"
exit 1