-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Issue templates. - Added CODEOWNERS, CODEOWNERS and CONTRIBUTING md files. - .gitignore. - Expected structure for code and tests with init files. - GH workflows for build, PR comment presence check and Release draft generation. - Expected requirements for python libraries. - Initial structure of README to follow team format.
- Loading branch information
1 parent
5e1c8e6
commit 46dcef9
Showing
15 changed files
with
536 additions
and
2 deletions.
There are no files selected for viewing
Validating CODEOWNERS rules …
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
* @miroslavpojer @Zejnilovic |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
--- | ||
name: Bug report | ||
about: Create a report to help us improve | ||
labels: 'bug' | ||
|
||
--- | ||
|
||
## Describe the bug | ||
A clear and concise description of what the bug is. | ||
|
||
## To Reproduce | ||
Steps to reproduce the behavior OR commands run: | ||
1. Go to '...' | ||
2. Click on '....' | ||
3. Enter value '...' | ||
4. See error | ||
|
||
## Expected behavior | ||
A clear and concise description of what you expected to happen. | ||
|
||
## Screenshots | ||
If applicable, add screenshots to help explain your problem. | ||
|
||
## Additional context | ||
Add any other context about the problem here. |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
--- | ||
name: Feature request | ||
about: Suggest an idea for this project | ||
labels: 'enhancement' | ||
|
||
--- | ||
|
||
## Background | ||
A clear and concise description of where the limitation lies. | ||
|
||
## Feature | ||
A description of the requested feature. | ||
|
||
## Example [Optional] | ||
A simple example if applicable. | ||
|
||
## Proposed Solution [Optional] | ||
Solution Ideas: | ||
1. | ||
2. | ||
3. |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
--- | ||
name: Question | ||
about: Ask a question | ||
labels: 'question' | ||
|
||
--- | ||
|
||
## Background [Optional] | ||
A clear explanation of the reason for raising the question. | ||
This gives us a better understanding of your use cases and how we might accommodate them. | ||
|
||
## Question | ||
A clear and concise inquiry |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
--- | ||
name: Spike | ||
about: Issue template for spikes, research and investigation tasks | ||
labels: 'spike' | ||
|
||
--- | ||
|
||
## Background | ||
A clear and concise description of the problem or a topic we need to understand. | ||
|
||
Feel free to add information about why it's needed and what assumptions you have at the moment. | ||
|
||
## Questions To Answer | ||
|
||
1. | ||
2. | ||
3. | ||
|
||
## Desired Outcome | ||
|
||
The list of desired outcomes of this spike ticket. | ||
|
||
```[tasklist] | ||
### Tasks | ||
- [ ] Questions have been answered or we have a clearer idea of how to get to our goal | ||
- [ ] Discussion with the team | ||
- [ ] Documentation | ||
- [ ] Create recommendations and new implementation tickets | ||
- [ ] item here.. | ||
``` | ||
|
||
## Additional Info/Resources [Optional] | ||
|
||
1. | ||
2. | ||
3. |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
# | ||
# Copyright 2024 ABSA Group Limited | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# | ||
|
||
name: Build and Test | ||
on: | ||
pull_request: | ||
branches: | ||
- '**' | ||
types: [ opened, synchronize, reopened ] | ||
|
||
jobs: | ||
test: | ||
name: Test | ||
runs-on: ubuntu-latest | ||
|
||
defaults: | ||
run: | ||
shell: bash | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- uses: actions/[email protected] | ||
with: | ||
python-version: '3.11' | ||
cache: 'pip' | ||
|
||
- name: Install Python dependencies | ||
run: | | ||
pip install -r requirements.txt | ||
- name: Set PYTHONPATH environment variable | ||
run: echo "PYTHONPATH=${GITHUB_WORKSPACE}/jacoco-report/jacoco-report" >> $GITHUB_ENV | ||
|
||
- name: Build and run unit tests | ||
run: pytest --cov=jacoco-report --cov-report html tests/ -vv | ||
|
||
- name: Check overall coverage | ||
run: | | ||
coverage report --fail-under=80 | ||
coverage xml -o coverage_overall.xml | ||
- name: Check changed files coverage | ||
run: | | ||
# Get the list of changed Python files | ||
CHANGED_FILES=$(git diff --name-only --diff-filter=AMR ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | grep '.py$') | ||
echo "Changed Python files: $CHANGED_FILES" | ||
# Convert list to comma-delimited string | ||
CHANGED_FILES=$(echo "$CHANGED_FILES" | awk '{printf "%s,", $0} END {print ""}' | sed 's/,$//') | ||
# Generate coverage report for changed files | ||
coverage report --include="$CHANGED_FILES" > coverage_report.txt | ||
echo -e "\nChanged Python files report:\n\n" | ||
cat coverage_report.txt | ||
# Fail if the coverage for changed files is below threshold | ||
COVERAGE_TOTAL=$(awk '/TOTAL/ {print $4}' coverage_report.txt) | ||
echo "Total coverage for changed files: $COVERAGE_TOTAL" | ||
if (( $(echo "$COVERAGE_TOTAL < 80.0" | bc -l) )); then | ||
echo "Coverage is below 80%" | ||
exit 1 | ||
fi | ||
- name: Upload coverage report | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: coverage-report | ||
path: coverage_overall.xml |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
# | ||
# Copyright 2024 ABSA Group Limited | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# | ||
|
||
name: Check Release Notes in PR comment | ||
|
||
on: | ||
pull_request: | ||
types: [opened, synchronize, reopened, edited, labeled, unlabeled] | ||
branches: [ master ] | ||
|
||
jobs: | ||
check-release-notes-comments: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Fetch all PR comments | ||
id: get-comments | ||
uses: actions/github-script@v7 | ||
with: | ||
github-token: ${{secrets.GITHUB_TOKEN}} | ||
script: | | ||
const issueNumber = context.issue.number; | ||
const repoName = context.repo.repo; | ||
const repoOwner = context.repo.owner; | ||
const comments = await github.rest.issues.listComments({ | ||
owner: repoOwner, | ||
repo: repoName, | ||
issue_number: issueNumber, | ||
}); | ||
return comments.data.map(comment => comment.body); | ||
- name: Check for 'Release Notes' in comments | ||
uses: actions/github-script@v7 | ||
with: | ||
script: | | ||
const comments = ${{ steps.get-comments.outputs.result }}; | ||
const releaseNotesRegex = /release notes/i; | ||
const hasReleaseNotes = comments.some(comment => releaseNotesRegex.test(comment)); | ||
if (!hasReleaseNotes) { | ||
console.log('No "Release notes" found in PR comments'); | ||
core.setFailed('No "Release notes" found in PR comments') | ||
} else { | ||
console.log('"Release notes" found in comments'); | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
# | ||
# Copyright 2024 ABSA Group Limited | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# | ||
|
||
name: Release - create draft release | ||
on: | ||
workflow_dispatch: | ||
inputs: | ||
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 | ||
|
||
jobs: | ||
check-tag: | ||
runs-on: ubuntu-latest | ||
name: Check tag | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- 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; | ||
} | ||
tag-name: ${{ github.event.inputs.tag-name }} | ||
|
||
- name: Check tag's correct version increment | ||
uses: actions/github-script@v7 | ||
with: | ||
script: | | ||
const newTag = core.getInput('tag-name'); | ||
// get latest tag | ||
const { data: refs } = await github.rest.git.listMatchingRefs({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
ref: 'tags/' | ||
}); | ||
if (refs.length === 0) { | ||
// No existing tags, so any new tag is valid | ||
console.log('No existing tags found. Any new tag is considered valid.'); | ||
return; | ||
} else { | ||
console.log(`Existing tags: ${refs.map(ref => ref.ref.replace('refs/tags/', '')).join(', ')}`); | ||
} | ||
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 isValid = (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 (!isValid) { | ||
core.setFailed('New tag is not one version higher than the latest tag'); | ||
return; | ||
} | ||
tag-name: ${{ github.event.inputs.tag-name }} | ||
|
||
generate-release-notes: | ||
needs: check-tag | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- uses: actions/[email protected] | ||
with: | ||
python-version: '3.11' | ||
|
||
- name: Generate release notes | ||
id: generate_release_notes | ||
uses: AbsaOSS/generate-release-notes@master | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
tag-name: ${{ github.event.inputs.tag-name }} | ||
chapters: '[ | ||
{"title": "Breaking Changes 💥", "label": "breaking-change"}, | ||
{"title": "New Features 🎉", "label": "feature"}, | ||
{"title": "New Features 🎉", "label": "enhancement"}, | ||
{"title": "Bugfixes 🛠", "label": "bug"} | ||
]' | ||
warnings: 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.tag-name }} | ||
body: ${{ steps.generate_release_notes.outputs.release-notes }} | ||
tag_name: ${{ github.event.inputs.tag-name }} | ||
draft: true | ||
prerelease: false |
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
Oops, something went wrong.