Initial commit
This commit is contained in:
15
.gitea/PULL_REQUEST_TEMPLATE.md
Normal file
15
.gitea/PULL_REQUEST_TEMPLATE.md
Normal file
@@ -0,0 +1,15 @@
|
||||
### Summary :memo:
|
||||
_Write an overview about it._
|
||||
|
||||
### Details
|
||||
_Describe more what you did on changes._
|
||||
1. (...)
|
||||
2. (...)
|
||||
|
||||
### Bugfixes :bug: (delete if dind't have any)
|
||||
-
|
||||
|
||||
### Checks
|
||||
- [ ] Closed #798
|
||||
- [ ] Tested Changes
|
||||
- [ ] Stakeholder Approval
|
||||
47
.gitea/conventional_commits/commit-msg
Executable file
47
.gitea/conventional_commits/commit-msg
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env sh
|
||||
echo "Running commit message checks..."
|
||||
|
||||
. "$(dirname -- "$0")/../../.gitea/conventional_commits/hooks/text-styles.sh"
|
||||
|
||||
|
||||
# Get the commit message
|
||||
commit="$(cat .git/COMMIT_EDITMSG)"
|
||||
# Define the conventional commit regex
|
||||
regex='^((build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\(.+\))?(!?):\s([a-zA-Z0-9-_!\&\.\%\(\)\=\w\s]+)\s?(,?\s?)((ref(s?):?\s?)(([A-Z0-9]+\-[0-9]+)|(NOISSUE))))|(release: .*)$'
|
||||
|
||||
# Check if the commit message matches the conventional commit format
|
||||
if ! echo "$commit" | grep -Pq "$regex"
|
||||
then
|
||||
echo
|
||||
colorPrint red "❌ Failed to create commit. Your commit message does not follow the conventional commit format."
|
||||
colorPrint red "Please use the following format: $(colorPrint brightRed 'type(scope)?: description')"
|
||||
colorPrint red "Available types are listed below. Scope is optional. Use ! after type to indicate breaking change."
|
||||
echo
|
||||
colorPrint brightWhite "Quick examples:"
|
||||
echo "feat: add email notifications on new direct messages refs ABC-1213"
|
||||
echo "feat(shopping cart): add the amazing button ref: DEFG-23"
|
||||
echo "feat!: remove ticket list endpoint ref DADA-109"
|
||||
echo "fix(api): handle empty message in request body refs: MINE-82"
|
||||
echo "chore(deps): bump some-package-name to version 2.0.0 refs ASDF-12"
|
||||
echo
|
||||
colorPrint brightWhite "Commit types:"
|
||||
colorPrint brightCyan "build: $(colorPrint white "Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)" -n)"
|
||||
colorPrint brightCyan "ci: $(colorPrint white "Changes to CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)" -n)"
|
||||
colorPrint brightCyan "chore: $(colorPrint white "Changes which doesn't change source code or tests e.g. changes to the build process, auxiliary tools, libraries" -n)"
|
||||
colorPrint brightCyan "docs: $(colorPrint white "Documentation only changes" -n)"
|
||||
colorPrint brightCyan "feat: $(colorPrint white "A new feature" -n)"
|
||||
colorPrint brightCyan "fix: $(colorPrint white "A bug fix" -n)"
|
||||
colorPrint brightCyan "perf: $(colorPrint white "A code change that improves performance" -n)"
|
||||
colorPrint brightCyan "refactor: $(colorPrint white "A code change that neither fixes a bug nor adds a feature" -n)"
|
||||
colorPrint brightCyan "revert: $(colorPrint white "Revert a change previously introduced" -n)"
|
||||
colorPrint brightCyan "test: $(colorPrint white "Adding missing tests or correcting existing tests" -n)"
|
||||
echo
|
||||
|
||||
colorPrint brightWhite "Reminders"
|
||||
echo "Put newline before extended commit body"
|
||||
echo "More details at $(underline "http://www.conventionalcommits.org")"
|
||||
echo
|
||||
echo "The commit message you attempted was: $commit"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
105
.gitea/conventional_commits/generate-version.sh
Executable file
105
.gitea/conventional_commits/generate-version.sh
Executable file
@@ -0,0 +1,105 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Rules for generating semantic versioning
|
||||
# major: breaking change
|
||||
# minor: feat, style
|
||||
# patch: build, fix, perf, refactor, revert
|
||||
|
||||
PREVENT_REMOVE_FILE=$1
|
||||
TEMP_FILE_PATH=.gitea/conventional_commits/tmp
|
||||
|
||||
LAST_TAG=$(git describe --tags --abbrev=0 --always)
|
||||
echo "Last tag: #$LAST_TAG#"
|
||||
PATTERN="^[0-9]+\.[0-9]+\.[0-9]+$"
|
||||
|
||||
increment_version() {
|
||||
local version=$1
|
||||
local increment=$2
|
||||
local major=$(echo $version | cut -d. -f1)
|
||||
local minor=$(echo $version | cut -d. -f2)
|
||||
local patch=$(echo $version | cut -d. -f3)
|
||||
|
||||
if [ "$increment" == "major" ]; then
|
||||
major=$((major + 1))
|
||||
minor=0
|
||||
patch=0
|
||||
elif [ "$increment" == "minor" ]; then
|
||||
minor=$((minor + 1))
|
||||
patch=0
|
||||
elif [ "$increment" == "patch" ]; then
|
||||
patch=$((patch + 1))
|
||||
fi
|
||||
|
||||
echo "${major}.${minor}.${patch}"
|
||||
}
|
||||
|
||||
create_file() {
|
||||
local with_range=$1
|
||||
if [ -s $TEMP_FILE_PATH/messages.txt ]; then
|
||||
return 1
|
||||
fi
|
||||
if [ "$with_range" == "true" ]; then
|
||||
git log $LAST_TAG..HEAD --no-decorate --pretty=format:"%s" > $TEMP_FILE_PATH/messages.txt
|
||||
else
|
||||
git log --no-decorate --pretty=format:"%s" > $TEMP_FILE_PATH/messages.txt
|
||||
fi
|
||||
}
|
||||
|
||||
get_commit_range() {
|
||||
rm $TEMP_FILE_PATH/messages.txt
|
||||
if [[ $LAST_TAG =~ $PATTERN ]]; then
|
||||
create_file true
|
||||
else
|
||||
create_file
|
||||
LAST_TAG="0.0.0"
|
||||
fi
|
||||
echo " " >> $TEMP_FILE_PATH/messages.txt
|
||||
}
|
||||
|
||||
start() {
|
||||
mkdir -p $TEMP_FILE_PATH
|
||||
get_commit_range
|
||||
new_version=$LAST_TAG
|
||||
increment_type=""
|
||||
|
||||
while read message; do
|
||||
echo $message
|
||||
if echo $message | grep -Pq '(feat|style)(\([\w]+\))?!:([a-zA-Z0-9-_!\&\.\%\(\)\=\w\s]+)\s?(,?\s?)((ref(s?):?\s?)(([A-Z0-9]+\-[0-9]+)|(NOISSUE)))'; then
|
||||
increment_type="major"
|
||||
echo "a"
|
||||
break
|
||||
elif echo $message | grep -Pq '(feat|style)(\([\w]+\))?:([a-zA-Z0-9-_!\&\.\%\(\)\=\w\s]+)\s?(,?\s?)((ref(s?):?\s?)(([A-Z0-9]+\-[0-9]+)|(NOISSUE)))'; then
|
||||
if [ -z "$increment_type" ] || [ "$increment_type" == "patch" ]; then
|
||||
increment_type="minor"
|
||||
echo "b"
|
||||
fi
|
||||
elif echo $message | grep -Pq '(build|fix|perf|refactor|revert)(\(.+\))?:\s([a-zA-Z0-9-_!\&\.\%\(\)\=\w\s]+)\s?(,?\s?)((ref(s?):?\s?)(([A-Z0-9]+\-[0-9]+)|(NOISSUE)))'; then
|
||||
if [ -z "$increment_type" ]; then
|
||||
increment_type="patch"
|
||||
echo "c"
|
||||
fi
|
||||
fi
|
||||
done < $TEMP_FILE_PATH/messages.txt
|
||||
|
||||
if [ -n "$increment_type" ]; then
|
||||
new_version=$(increment_version $LAST_TAG $increment_type)
|
||||
echo "New version: $new_version"
|
||||
|
||||
gitchangelog | grep -v "[rR]elease:" > HISTORY.md
|
||||
git add DotnetTestLib/VERSION HISTORY.md
|
||||
echo $new_version > DotnetTestLib/VERSION
|
||||
git commit -m "release: version $new_version 🚀"
|
||||
echo "creating git tag : $new_version"
|
||||
git tag $new_version
|
||||
git push -u origin HEAD --tags
|
||||
echo "Gitea Actions will detect the new tag and release the new version."
|
||||
else
|
||||
echo "No changes requiring a version increment."
|
||||
fi
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
if [ -z "$PREVENT_REMOVE_FILE" ]; then
|
||||
rm -f $TEMP_FILE_PATH/messages.txt
|
||||
fi
|
||||
44
.gitea/conventional_commits/hooks/text-styles.sh
Executable file
44
.gitea/conventional_commits/hooks/text-styles.sh
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/bin/sh
|
||||
|
||||
colorPrint() {
|
||||
local color=$1
|
||||
local text=$2
|
||||
shift 2
|
||||
local newline="\n"
|
||||
local tab=""
|
||||
|
||||
for arg in "$@"
|
||||
do
|
||||
if [ "$arg" = "-t" ]; then
|
||||
tab="\t"
|
||||
elif [ "$arg" = "-n" ]; then
|
||||
newline=""
|
||||
fi
|
||||
done
|
||||
|
||||
case $color in
|
||||
black) color_code="30" ;;
|
||||
red) color_code="31" ;;
|
||||
green) color_code="32" ;;
|
||||
yellow) color_code="33" ;;
|
||||
blue) color_code="34" ;;
|
||||
magenta) color_code="35" ;;
|
||||
cyan) color_code="36" ;;
|
||||
white) color_code="37" ;;
|
||||
brightBlack) color_code="90" ;;
|
||||
brightRed) color_code="91" ;;
|
||||
brightGreen) color_code="92" ;;
|
||||
brightYellow) color_code="93" ;;
|
||||
brightBlue) color_code="94" ;;
|
||||
brightMagenta) color_code="95" ;;
|
||||
brightCyan) color_code="96" ;;
|
||||
brightWhite) color_code="97" ;;
|
||||
*) echo "Invalid color"; return ;;
|
||||
esac
|
||||
|
||||
printf "\e[${color_code}m${tab}%s\e[0m${newline}" "$text"
|
||||
}
|
||||
|
||||
underline () {
|
||||
printf "\033[4m%s\033[24m" "$1"
|
||||
}
|
||||
3
.gitea/release_message.sh
Executable file
3
.gitea/release_message.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env bash
|
||||
previous_tag=$(git tag --sort=-creatordate | sed -n 2p)
|
||||
git shortlog "${previous_tag}.." | sed 's/^./ &/'
|
||||
40
.gitea/rename_project.sh
Executable file
40
.gitea/rename_project.sh
Executable file
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env bash
|
||||
while getopts a:n:u:d: flag
|
||||
do
|
||||
case "${flag}" in
|
||||
a) author=${OPTARG};;
|
||||
n) name=${OPTARG};;
|
||||
u) urlname=${OPTARG};;
|
||||
d) description=${OPTARG};;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "Author: $author";
|
||||
echo "Project Name: $name";
|
||||
echo "Project URL name: $urlname";
|
||||
echo "Description: $description";
|
||||
|
||||
echo "Renaming project..."
|
||||
|
||||
original_author="author_name"
|
||||
original_name="project_name"
|
||||
original_urlname="project_urlname"
|
||||
original_description="project_description"
|
||||
# for filename in $(find . -name "*.*")
|
||||
for filename in $(git ls-files)
|
||||
do
|
||||
sed -i "s/$original_author/$author/g" $filename
|
||||
sed -i "s/$original_name/$name/g" $filename
|
||||
sed -i "s/$original_urlname/$urlname/g" $filename
|
||||
sed -i "s/$original_description/$description/g" $filename
|
||||
echo "Renamed $filename"
|
||||
done
|
||||
|
||||
mv project_name $name
|
||||
mv project_name.Tests $name.Tests
|
||||
mv project_name.sln $name.sln
|
||||
mv $name/project_name.csproj $name/$name.csproj
|
||||
mv $name.Tests/project_name.Tests.csproj $name.Tests/$name.Tests.csproj
|
||||
|
||||
# This command runs only once on GHA!
|
||||
rm -rf .gitea/template.yml
|
||||
1
.gitea/template.yml
Normal file
1
.gitea/template.yml
Normal file
@@ -0,0 +1 @@
|
||||
author: rochacbruno
|
||||
84
.gitea/workflows/main.yml
Normal file
84
.gitea/workflows/main.yml
Normal file
@@ -0,0 +1,84 @@
|
||||
# This is a basic workflow to help you get started with Actions
|
||||
|
||||
name: CI
|
||||
|
||||
# Controls when the workflow will run
|
||||
on:
|
||||
# Triggers the workflow on push or pull request events but only for the main branch
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
linter:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
dotnet-version: [9.0.X]
|
||||
os: [ubuntu-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: ${{ matrix.dotnet-version }}
|
||||
- name: Run linter
|
||||
run: make lint
|
||||
|
||||
tests_linux:
|
||||
needs: linter
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
dotnet-version: [9.0.X]
|
||||
os: [ubuntu-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: ${{ matrix.dotnet-version }}
|
||||
- name: Run tests
|
||||
run: make test
|
||||
|
||||
# tests_mac:
|
||||
# needs: linter
|
||||
# strategy:
|
||||
# fail-fast: false
|
||||
# matrix:
|
||||
# dotnet-version: [9.0.X]
|
||||
# os: [macos-latest]
|
||||
# runs-on: ${{ matrix.os }}
|
||||
# steps:
|
||||
# - uses: actions/checkout@v3
|
||||
# - uses: actions/setup-dotnet@v4
|
||||
# with:
|
||||
# dotnet-version: ${{ matrix.dotnet-version }}
|
||||
# - name: Install project
|
||||
# run: make install
|
||||
# - name: Run tests
|
||||
# run: make test
|
||||
|
||||
# tests_win:
|
||||
# needs: linter
|
||||
# strategy:
|
||||
# fail-fast: false
|
||||
# matrix:
|
||||
# dotnet-version: [9.0.X]
|
||||
# os: [windows-latest]
|
||||
# runs-on: ${{ matrix.os }}
|
||||
# steps:
|
||||
# - uses: actions/checkout@v3
|
||||
# - uses: actions/setup-dotnet@v4
|
||||
# with:
|
||||
# dotnet-version: ${{ matrix.dotnet-version }}
|
||||
# - name: Install Pip
|
||||
# run: pip install --user --upgrade pip
|
||||
# - name: Install project
|
||||
# run: pip install -e .[test]
|
||||
# - name: run tests
|
||||
# run: pytest -s -vvvv -l --tb=long tests
|
||||
65
.gitea/workflows/release.yml
Normal file
65
.gitea/workflows/release.yml
Normal file
@@ -0,0 +1,65 @@
|
||||
name: Upload Python Package
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
push:
|
||||
# Sequence of patterns matched against refs/tags
|
||||
tags:
|
||||
- '*' # Push events to matching v*, i.e. v1.0, v20.15.10
|
||||
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
release:
|
||||
name: Create Release
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
# by default, it uses a depth of 1
|
||||
# this fetches all history so that we can read each commit
|
||||
fetch-depth: 0
|
||||
- name: Generate Changelog
|
||||
run: .gitea/release_message.sh > release_message.md
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
body_path: release_message.md
|
||||
|
||||
deploy:
|
||||
needs: release
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up dotnet
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: '9.0.X'
|
||||
- name: Check version match
|
||||
run: |
|
||||
REPOSITORY_NAME=$(echo "$GITHUB_REPOSITORY" | awk -F '/' '{print $2}' | tr '-' '_')
|
||||
if [ "$(cat $REPOSITORY_NAME/VERSION)" = "${GITHUB_REF_NAME}" ] ; then
|
||||
echo "Version matches successfully!"
|
||||
else
|
||||
echo "Version must match!"
|
||||
exit -1
|
||||
fi
|
||||
- name: Build and publish
|
||||
env:
|
||||
GITEA_PAT: ${{ secrets.PACKAGE_GITEA_PAT }}
|
||||
run: |
|
||||
REPOSITORY_OWNER=$(echo "$GITHUB_REPOSITORY" | awk -F '/' '{print $1}')
|
||||
REPOSITORY_NAME=$(echo "$GITHUB_REPOSITORY" | awk -F '/' '{print $2}' | tr '-' '_')
|
||||
REPOSITORY_SOURCE_NAME=gitea-repo
|
||||
if [ -z "$(dotnet nuget config get all | grep "/packages/${REPOSITORY_OWNER}/nuget/index.json")" ]; then
|
||||
dotnet nuget add source --name $REPOSITORY_SOURCE_NAME https://git.disi.dev/api/packages/$REPOSITORY_OWNER/nuget/index.json
|
||||
else
|
||||
QUOTED_REPOSITORY_SOURCE_NAME=$(dotnet nuget config get all | grep "/packages/${REPOSITORY_OWNER}/nuget/index.json" | awk '{print $2}' | awk -F= '{print $2}')
|
||||
REPOSITORY_SOURCE_NAME=${QUOTED_REPOSITORY_SOURCE_NAME:1:-1}
|
||||
fi
|
||||
dotnet pack --include-symbols --include-source -p:PackageVersion=$(cat $REPOSITORY_NAME/VERSION) DotnetTestLib.sln
|
||||
dotnet nuget push -k $GITEA_PAT --source $REPOSITORY_SOURCE_NAME $REPOSITORY_NAME/bin/Release/$REPOSITORY_NAME.$(cat $REPOSITORY_NAME/VERSION).symbols.nupkg
|
||||
48
.gitea/workflows/rename_project.yml
Normal file
48
.gitea/workflows/rename_project.yml
Normal file
@@ -0,0 +1,48 @@
|
||||
name: Rename the project from template
|
||||
|
||||
on: [push]
|
||||
|
||||
permissions: write-all
|
||||
|
||||
jobs:
|
||||
rename-project:
|
||||
if: ${{ !endsWith (gitea.repository, 'Templates/Dotnet_Library') }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
# by default, it uses a depth of 1
|
||||
# this fetches all history so that we can read each commit
|
||||
fetch-depth: 0
|
||||
ref: ${{ gitea.head_ref }}
|
||||
|
||||
- run: echo "REPOSITORY_NAME=$(echo "$GITHUB_REPOSITORY" | awk -F '/' '{print $2}' | tr '-' '_')" >> $GITHUB_ENV
|
||||
shell: bash
|
||||
|
||||
- run: echo "REPOSITORY_URLNAME=$(echo "$GITHUB_REPOSITORY" | awk -F '/' '{print $2}')" >> $GITHUB_ENV
|
||||
shell: bash
|
||||
|
||||
- run: echo "REPOSITORY_OWNER=$(echo "$GITHUB_REPOSITORY" | awk -F '/' '{print $1}')" >> $GITHUB_ENV
|
||||
shell: bash
|
||||
|
||||
- name: Is this still a template
|
||||
id: is_template
|
||||
run: echo "::set-output name=is_template::$(ls .gitea/template.yml &> /dev/null && echo true || echo false)"
|
||||
|
||||
- name: Rename the project
|
||||
if: steps.is_template.outputs.is_template == 'true'
|
||||
run: |
|
||||
echo "Renaming the project with -a(author) ${{ env.REPOSITORY_OWNER }} -n(name) ${{ env.REPOSITORY_NAME }} -u(urlname) ${{ env.REPOSITORY_URLNAME }}"
|
||||
.gitea/rename_project.sh -a ${{ env.REPOSITORY_OWNER }} -n ${{ env.REPOSITORY_NAME }} -u ${{ env.REPOSITORY_URLNAME }} -d "Awesome ${{ env.REPOSITORY_NAME }} created by ${{ env.REPOSITORY_OWNER }}"
|
||||
|
||||
- name: Remove renaming workflow
|
||||
if: steps.is_template.outputs.is_template == 'true'
|
||||
run: |
|
||||
rm .gitea/workflows/rename_project.yml
|
||||
rm .gitea/rename_project.sh
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: "✅ Ready to clone and code."
|
||||
# commit_options: '--amend --no-edit'
|
||||
push_options: --force
|
||||
27
.gitea/workflows/sonar.yml
Normal file
27
.gitea/workflows/sonar.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened]
|
||||
|
||||
name: SonarQube Scan
|
||||
jobs:
|
||||
sonarqube:
|
||||
name: SonarQube Trigger
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ !contains ('project_name', format('{0}_{1}', 'project', 'name')) }}
|
||||
steps:
|
||||
- name: Checking out
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
# Disabling shallow clone is recommended for improving relevancy of reporting
|
||||
fetch-depth: 0
|
||||
- name: SonarQube Scan
|
||||
uses: sonarsource/sonarqube-scan-action@master
|
||||
env:
|
||||
SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }}
|
||||
SONAR_HOST_URL: ${{ secrets.SONARQUBE_HOST }}
|
||||
with:
|
||||
args: >
|
||||
-Dsonar.projectKey=project_name
|
||||
Reference in New Issue
Block a user