-
Notifications
You must be signed in to change notification settings - Fork 0
52 lines (50 loc) · 1.85 KB
/
_determine_php_versions.yml
File metadata and controls
52 lines (50 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
name: _Determine PHP version and hash
on:
workflow_call:
inputs:
ignore_versions:
type: string
required: false
default: ""
outputs:
values:
description: "Result"
value: ${{ jobs.determine.outputs.values }}
jobs:
determine:
runs-on: ubuntu-latest
steps:
- name: Get supported PHP versions
id: supported_versions
run: |
curl -sSL "https://www.php.net/releases/index.php?json" | jq -c "[..| objects | .supported_versions? // empty] | flatten" > "versions.json"
- name: Get PHP tags
uses: octokit/request-action@v2.x
id: get_tags
with:
route: GET /repos/php/php-src/git/matching-refs/tags
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Determine version and hash
run: |
echo '${{ steps.get_tags.outputs.data }}' > "tags.json"
jq -r '.[]' "versions.json" | while read VERSION; do
jq -r '.[] | (.ref | sub("refs/tags/php-"; "")) + " " + .object.sha' "tags.json" \
| grep -E "^${VERSION}\.[0-9]+ " \
| sort -V \
| tail -n1 >> "versions.txt"
done
- name: Filitering versions
if: ${{ inputs.ignore_versions != '' }}
run: |
TEMPFILE="$(mktemp)"
echo "${{ inputs.ignore_versions }}" | jq -r '.[]' | while read IGNORE; do
grep -v "${IGNORE}" < "versions.txt" > "${TEMPFILE}"
mv -f "${TEMPFILE}" "versions.txt"
done
- name: Generate version and hash list
id: result
run: |
echo values="$(jq -R -s -c 'split("\n") | map(select(length > 0)) | map(split(" ")) | map({tag: .[0], minor: (.[0] | split(".") | .[0:2] | join(".")), hash: .[1]})' "versions.txt")" >> $GITHUB_OUTPUT
outputs:
values: ${{ steps.result.outputs.values }}