Skip to content

Commit

Permalink
IBX-4145: Updated changelog generator (#5)
Browse files Browse the repository at this point in the history
  • Loading branch information
ibexa-yuna authored Nov 7, 2022
1 parent a424675 commit bf3737b
Showing 1 changed file with 32 additions and 6 deletions.
38 changes: 32 additions & 6 deletions .github/workflows/release_tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,30 @@ jobs:
name: Gather latest package information
run: |
OUT=$(jq --slurp '[.[].packages[] | select(.name | contains("ezsystems") or contains("ibexa")) | [.name, .version] | { name: (.[0]), version: .[1] }]' composer.lock)
echo "::set-output name=lock::$( echo "$OUT" | sed ':a;N;$!ba;s/\n/%0A/g' )"
echo "lock=$( echo "$OUT" | sed ':a;N;$!ba;s/\n//g' )" >> $GITHUB_OUTPUT
- name: Get previous last full release
id: prevfull
run: |
OUT=$(hub api /repos/${{ github.repository }}/releases | jq -r -s '[ .[][].tag_name | select(. | contains("rc") or contains("beta") or contains("alpha") | not) ] | first')
echo "tag=$( echo "$OUT" )" >> $GITHUB_OUTPUT
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Get previous last full release
id: prevfull
run: |
OUT=$(hub api /repos/${{ github.repository }}/releases | jq -r -s '[ .[][].tag_name | select(. | contains("rc") or contains("beta") or contains("alpha") | not) ] | first')
echo "::set-output name=tag::$( echo "$OUT" | sed ':a;N;$!ba;s/\n/%0A/g' )"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Get previous release tag based on type
id: prevrelease
uses: ibexa/version-logic-action@master
with:
currentTag: ${{ env.BUILD_TAG }}
prevFullTag: ${{ steps.prevfull.outputs.tag }}

# checkout previous tag
- uses: actions/checkout@v2
Expand All @@ -42,7 +59,7 @@ jobs:
name: Gather previous package information
run: |
OUT=$(jq --slurp '[.[].packages[] | select(.name | contains("ezsystems") or contains("ibexa")) | [.name, .version] | { name: (.[0]), version: .[1] }]' composer.lock)
echo "::set-output name=lock::$( echo "$OUT" | sed ':a;N;$!ba;s/\n/%0A/g' )"
echo "lock=$( echo "$OUT" | sed ':a;N;$!ba;s/\n//g' )" >> $GITHUB_OUTPUT
# do some magic comparing those outputs
- id: output_data
Expand All @@ -56,8 +73,15 @@ jobs:
cat > $FILE2 <<'EOF'
${{ steps.currentLock.outputs.lock }}
EOF
OUT=$(jq -s 'flatten | group_by(.name)' $FILE1 $FILE2 | jq -s '[ .[][] | {name: (.[0].name), versions: [ .[0].version, .[1].version ] | unique} | select(.versions | length > 1) ]')
echo "::set-output name=matrix::$( echo "$OUT" | sed ':a;N;$!ba;s/\n/%0A/g' )"
# Get only changed packages and sort versions in ascending order
# Step 1: Merge composer.json from two versions, grouping by .name
# Step 2: Take .versions key and remove duplicate versions (means this bundle did not change)
# Step 3: Select only those bundles that have more than 1 version in .versions
# Step 4: Sort versions
# Step 5: (outer brackets) Wrap that into JSON list of objects
# Note: zzzz is added as an additional suffix to properly sort out alpha/beta/etc pre-releases (v2.5.1-alphazzzz < v2.5.1zzzz)
OUT=$(jq -s 'flatten | group_by(.name)' $FILE1 $FILE2 | jq -s '[ .[][] | {name: (.[0].name), versions: [ .[0].version, .[1].version ] | unique} | select(.versions | length > 1) ] | .[].versions |= sort_by( . + "zzzz" | [scan("[0-9]+|[a-z]+")] | map(tonumber? // .) )')
echo "matrix=$( echo "$OUT" | sed ':a;N;$!ba;s/\n//g' )" >> $GITHUB_OUTPUT
# this step is needed, so the output gets to the next defined job
outputs:
Expand Down Expand Up @@ -116,15 +140,17 @@ jobs:
python main.py >> generator_output
echo '' >> generator_output
done
echo "::set-output name=output::$( cat generator_output | sed ':a;N;$!ba;s/\n/%0A/g' )"
echo "CHANGELOG_OUTPUT<<EOF" >> $GITHUB_ENV
echo "$(cat generator_output)" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Create Release
id: create_release
uses: zendesk/action-create-release@v1
with:
tag_name: ${{ env.BUILD_TAG }}
body: |
${{ steps.generator.outputs.output }}
${{ env.CHANGELOG_OUTPUT }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Expand Down

0 comments on commit bf3737b

Please sign in to comment.