Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# /.github/workflows/release.yml | |
name: Generate Detailed Release Notes and Create Draft Release | |
on: | |
push: | |
tags: | |
- '*' | |
jobs: | |
generate-release-notes: | |
runs-on: ubuntu-latest | |
env: | |
owner: ${{ github.repository_owner }} | |
repo: ${{ github.repository }} | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- name: Fetch Latest Changes | |
run: | | |
git fetch --depth=1 origin | |
- name: Get Latest and Previous Tags | |
id: tags | |
run: | | |
latest_tag=$(git describe --tags $(git rev-list --tags --max-count=1)) | |
previous_tag=$(git describe --tags $(git rev-list --tags=$latest_tag --max-count=2 | tail -n 1)) | |
echo "::set-output name=latest_tag::$latest_tag" | |
echo "::set-output name=previous_tag::$previous_tag" | |
- name: Generate Detailed Changelog Content | |
id: generate_changelog | |
run: | | |
echo "::group::Generating Detailed Changelog" | |
prev_tag=${{ steps.tags.outputs.previous_tag }} | |
latest_tag=${{ steps.tags.outputs.latest_tag }} | |
echo "Previous Tag: $prev_tag" | |
echo "Latest Tag: $latest_tag" | |
# Vérifier si la plage de balises est vide | |
if [[ -z "$prev_tag" || -z "$latest_tag" ]]; then | |
echo "::error::Invalid tag range." | |
exit 1 | |
fi | |
# Vérifier si le fichier suivi est modifié | |
if [[ ! "$(git diff --name-only $prev_tag..$latest_tag)" =~ .*\.md ]]; then | |
echo "::warning::No changes to tracked files in tag range." | |
exit 0 | |
fi | |
# Afficher tous les commits, même sans modifications de fichiers | |
CHANGELOG=$(git log --all --oneline $prev_tag..$latest_tag) | |
if [[ -z "$CHANGELOG" ]]; then | |
CHANGELOG="No changes since latest tag." | |
fi | |
echo "Generated Changelog: $CHANGELOG" | |
echo "::endgroup::" | |
echo "::set-output name=changelog::$CHANGELOG" | |
- name: Create Draft Release with Detailed Changelog | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: "**Release Notes for ${{ github.ref }}**" # Clear release name | |
body: | | |
**Detailed Changelog:** | |
${{ steps.generate_changelog.outputs.changelog }} | |
draft: true |