Skip to content

Commit

Permalink
ci: Automatically extract release notes for GitHub Releases (#212)
Browse files Browse the repository at this point in the history
* ci: Automatically extract release notes

Signed-off-by: Ankita Katiyar <ankitakatiyar2401@gmail.com>

* fix lint

Signed-off-by: Ankita Katiyar <ankitakatiyar2401@gmail.com>

* Raise exceptions

Signed-off-by: Ankita Katiyar <ankitakatiyar2401@gmail.com>

* Lint

Signed-off-by: Ankita Katiyar <ankitakatiyar2401@gmail.com>

* Lint

Signed-off-by: Ankita Katiyar <ankitakatiyar2401@gmail.com>

---------

Signed-off-by: Ankita Katiyar <ankitakatiyar2401@gmail.com>
  • Loading branch information
ankatiyar authored May 22, 2023
1 parent 4570cb0 commit a9b274e
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 16 deletions.
29 changes: 13 additions & 16 deletions .github/workflows/check-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,24 +56,21 @@ jobs:
run: |
export plugin=${{ needs.check-version.outputs.package_name }}
make package
- name: Extract release notes from ${{needs.check-version.outputs.package_name}}/RELEASE.md
id: extract
run: |
python tools/github_actions/extract_release_notes.py \
"${{needs.check-version.outputs.package_name}}/RELEASE.md" \
"Release ${{needs.check-version.outputs.package_version}}"
- name: Create GitHub Release
uses: actions/github-script@v6
uses: softprops/action-gh-release@v1
with:
github-token: ${{ secrets.GH_TAGGING_TOKEN }}
script: |
const package_name = "${{ needs.check-version.outputs.package_name }}"
const package_version = "${{ needs.check-version.outputs.package_version }}"
const response = await github.rest.repos.createRelease({
owner: context.repo.owner,
repo: context.repo.repo,
tag_name: `${package_name}-${package_version}`,
target_commitish: 'main',
name: `${package_name}-${package_version}`,
body: `Release ${package_version}`,
draft: false,
prerelease: false,
});
return response.data;
tag_name: ${{needs.check-version.outputs.package_name}}-${{needs.check-version.outputs.package_version}}
name: ${{needs.check-version.outputs.package_name}}-${{needs.check-version.outputs.package_version}}
body_path: release_body.txt
draft: false
prerelease: false
token: ${{ secrets.GH_TAGGING_TOKEN }}
- name: Set PyPI token
run: |
if [ "${{ needs.check-version.outputs.PACKAGE_NAME }}" == "kedro-airflow" ]; then
Expand Down
39 changes: 39 additions & 0 deletions tools/github_actions/extract_release_notes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import sys


def extract_section(filename, heading):
with open(filename, 'r') as file:
lines = file.readlines()

start_line, end_line = None, None

for i, line in enumerate(lines):
if line.startswith('# '):
current_heading = line.strip('#').replace(':', '').strip()
if current_heading == heading:
start_line = i
elif start_line is not None:
end_line = i
break

if start_line is not None:
if end_line is None:
end_line = len(lines)
section_lines = lines[start_line + 1:end_line]
section = ''.join(section_lines).strip()
return section
else:
return None


if __name__ == '__main__':
if len(sys.argv) != 3:
raise Exception("Usage: python extract_release_notes.py <filename> <heading>")

filename = sys.argv[1]
heading = sys.argv[2]
section = extract_section(filename, heading)
if not section:
raise Exception(f"Section not found under the {heading} heading")
with open("release_body.txt", "w") as text_file:
text_file.write(section)

0 comments on commit a9b274e

Please sign in to comment.