Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#308 - Update of Release Notes generator and check workflows #309

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/release-notes-presence-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
# limitations under the License.
#

name: Release Notes Presence Check
name: Check PR Release Notes in Description

on:
pull_request:
Expand All @@ -36,7 +36,7 @@ jobs:
python-version: '3.11'

- name: Check presence of release notes in PR description
uses: AbsaOSS/release-notes-presence-check@v0.1.0
uses: AbsaOSS/release-notes-presence-check@v0.2.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
Expand Down
130 changes: 47 additions & 83 deletions .github/workflows/release_draft.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,108 +18,53 @@ name: Release - create draft release
on:
workflow_dispatch:
inputs:
tagName:
tag-name:
description: 'Name of git tag to be created, and then draft release created. Syntax: "v[0-9]+.[0-9]+.[0-9]+".'
required: true
from-tag-name:
description: 'Name of the git tag from which to detect changes from. Default value: latest tag. Syntax: "v[0-9]+.[0-9]+.[0-9]+".'
required: false

jobs:
tag:
release-draft:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 0
# the following step is disabled because it doesn't order the version tags correctly
# - name: Validate format of received tag
# uses: actions/github-script@v7
# with:
# script: |
# const newTag = core.getInput('tag-name');
# const regex = /^v[0-9]+\.[0-9]+\.[0-9]+$/;
#
# if (!regex.test(newTag)) {
# core.setFailed('Tag does not match the required format "v[0-9]+.[0-9]+.[0-9]+"');
# return;
# }
#
# // get all tags
# const { data: refs } = await github.rest.git.listMatchingRefs({
# owner: context.repo.owner,
# repo: context.repo.repo,
# ref: 'tags/'
# });
#
# const latestTag = refs.sort((a, b) => new Date(b.object.date) - new Date(a.object.date))[0].ref.replace('refs/tags/', '');
# const latestVersion = latestTag.replace('v', '').split('.').map(Number);
# const newVersion = newTag.replace('v', '').split('.').map(Number);
#
# // check tag's correct version increase
# const isValidVersion = (latestVersion[0] === newVersion[0] && latestVersion[1] === newVersion[1] && newVersion[2] === latestVersion[2] + 1) ||
# (latestVersion[0] === newVersion[0] && newVersion[1] === latestVersion[1] + 1 && newVersion[2] === 0) ||
# (newVersion[0] === latestVersion[0] + 1 && newVersion[1] === 0 && newVersion[2] === 0);
#
# if (!isValidVersion) {
# core.setFailed('New tag is not one version higher than the latest tag');
# return;
# }
# tag-name: ${{ github.event.inputs.tagName }}
persist-credentials: false

- name: Create and push tag
uses: actions/github-script@v7
- uses: actions/setup-python@v5.1.1
with:
script: |
const tag = core.getInput('tag-name')
const ref = `refs/tags/${tag}`;
const sha = context.sha; // The SHA of the commit to tag
const tagMessage = `${tag} released by GitHub Action`;

const tagObject = await github.rest.git.createTag({
owner: context.repo.owner,
repo: context.repo.repo,
tag: tag,
message: tagMessage,
object: sha,
type: 'commit',
tagger: {
name: context.actor,
email: `${context.actor}@users.noreply.github.com`,
date: new Date().toISOString()
}
});

await github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: ref,
sha: tagObject.data.sha
});

console.log(`Tag created: ${tag}`);
github-token: ${{ secrets.GITHUB_TOKEN }}
tag-name: ${{ github.event.inputs.tagName }}
python-version: '3.11'

release-draft:
needs: tag
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check format of received tag
id: check-version-tag
uses: AbsaOSS/version-tag-check@v0.3.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
persist-credentials: false
fetch-depth: 0
ref: refs/tags/${{ github.event.inputs.tagName }}
github-repository: ${{ github.repository }}
version-tag: ${{ github.event.inputs.tag-name }}

- uses: actions/setup-python@v5.1.1
- name: Check format of received from tag
if: ${{ github.event.inputs.from-tag-name }}
id: check-version-from-tag
uses: AbsaOSS/version-tag-check@v0.3.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
python-version: '3.11'
github-repository: ${{ github.repository }}
version-tag: ${{ github.event.inputs.from-tag-name }}
should-exist: true

- name: Generate release notes
id: generate_release_notes
uses: AbsaOSS/generate-release-notes@feature/55-Chapter-line-formatting-authors
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we still use this branch not a release version?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you required experimental features in branch, yes.

env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag-name: ${{ github.event.inputs.tagName }}
tag-name: ${{ github.event.inputs.tag-name }}
chapters: '[
{"title": "No entry 🚫", "label": "duplicate"},
{"title": "No entry 🚫", "label": "invalid"},
Expand All @@ -143,13 +88,32 @@ jobs:
row-format-pr: '#_{title}_ {developed-by} {co-authored-by} in {number}'
row-format-link-pr: true

- name: Create and Push Tag
uses: actions/github-script@v7
with:
script: |
const tag = core.getInput('tag-name')
const ref = `refs/tags/${tag}`;
const sha = context.sha; // The SHA of the commit to tag

await github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: ref,
sha: sha
});

console.log(`Tag created: ${tag}`);
github-token: ${{ secrets.GITHUB_TOKEN }}
tag-name: ${{ github.event.inputs.tag-name }}

- name: Create draft release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
name: ${{ github.event.inputs.tagName }}
body: ${{ steps.generate_release_notes.outputs.releaseNotes }}
tag_name: ${{ github.event.inputs.tagName }}
name: ${{ github.event.inputs.tag-name }}
body: ${{ steps.generate_release_notes.outputs.release-notes }}
tag_name: ${{ github.event.inputs.tag-name }}
draft: true
prerelease: false
Loading