mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2025-11-29 17:38:24 +08:00
feat(doc): changelog system (#6350)
This system provides rules and automatizes (Deno-typescript) the creation of a changelog file to help developers to adapt their code and know what is new with every (pre)release
This commit is contained in:
@@ -6,3 +6,12 @@ tab_width = 4
|
|||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
max_line_length = 80
|
max_line_length = 80
|
||||||
|
|
||||||
|
[*.{json,ts,js}]
|
||||||
|
charset = utf-8
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
tab_width = 2
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
max_line_length = 80
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
name: import-pending-sql
|
name: import-pending
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
import-pending-sql:
|
import-pending:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
@@ -20,12 +20,11 @@ jobs:
|
|||||||
- name: Import and commit pending sql
|
- name: Import and commit pending sql
|
||||||
run: |
|
run: |
|
||||||
git config user.email "azerothcorebot@gmail.com" && git config user.name "AzerothCoreBot"
|
git config user.email "azerothcorebot@gmail.com" && git config user.name "AzerothCoreBot"
|
||||||
cd bin/
|
bash bin/acore-db-pendings
|
||||||
source acore-db-pendings
|
bash bin/acore-import-changelogs
|
||||||
cd ..
|
|
||||||
git fetch --unshallow origin ${BRANCH}
|
git fetch --unshallow origin ${BRANCH}
|
||||||
git add -A .
|
git add -A .
|
||||||
git commit -am "chore(DB): import pending SQL update file" -m "Referenced commit(s): ${GITHUB_SHA}" || true
|
git commit -am "chore(DB): import pending files" -m "Referenced commit(s): ${GITHUB_SHA}" || true
|
||||||
env:
|
env:
|
||||||
BRANCH: ${{ steps.extract_branch.outputs.branch }}
|
BRANCH: ${{ steps.extract_branch.outputs.branch }}
|
||||||
- name: Push changes
|
- name: Push changes
|
||||||
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -65,5 +65,6 @@
|
|||||||
"codecvt": "cpp"
|
"codecvt": "cpp"
|
||||||
},
|
},
|
||||||
"deno.enable": true,
|
"deno.enable": true,
|
||||||
"deno.path" : "deps/deno/bin/deno"
|
"deno.path": "deps/deno/bin/deno",
|
||||||
|
"deno.lint": true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name" : "azerothcore-wotlk",
|
"name": "azerothcore-wotlk",
|
||||||
"version" : "3.0.0",
|
"version": "4.0.0-dev.1",
|
||||||
"license" : "AGPL3"
|
"license": "AGPL3"
|
||||||
}
|
}
|
||||||
|
|||||||
54
apps/ci/ci-pending-changelogs.ts
Normal file
54
apps/ci/ci-pending-changelogs.ts
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
import * as semver from "https://deno.land/x/semver/mod.ts";
|
||||||
|
|
||||||
|
// specify the needed paths here
|
||||||
|
const CHANGELOG_PATH = "doc/changelog";
|
||||||
|
const CHANGELOG_PENDING_PATH = `${CHANGELOG_PATH}/pendings`;
|
||||||
|
const CHANGELOG_MASTER_FILE = `${CHANGELOG_PATH}/master.md`;
|
||||||
|
const ACORE_JSON = "./acore.json";
|
||||||
|
|
||||||
|
// read the acore.json file to work with the versioning
|
||||||
|
const decoder = new TextDecoder("utf-8");
|
||||||
|
const data = await Deno.readFile(ACORE_JSON);
|
||||||
|
const acoreInfo = JSON.parse(decoder.decode(data));
|
||||||
|
|
||||||
|
let changelogText = await Deno.readTextFile(CHANGELOG_MASTER_FILE);
|
||||||
|
|
||||||
|
const currentVersion = acoreInfo.version;
|
||||||
|
|
||||||
|
const res=Deno.run({ cmd: [ "git", "rev-parse",
|
||||||
|
"HEAD"],
|
||||||
|
stdout: 'piped',
|
||||||
|
stderr: 'piped',
|
||||||
|
stdin: 'null' });
|
||||||
|
await res.status();
|
||||||
|
const gitVersion = new TextDecoder().decode(await res.output());
|
||||||
|
|
||||||
|
|
||||||
|
for await (const dirEntry of Deno.readDir(CHANGELOG_PENDING_PATH)) {
|
||||||
|
if (!dirEntry.isFile || !dirEntry.name.endsWith(".md")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Upgrade the prerelease version number (e.g. 1.0.0-dev.1 -> 1.0.0-dev.2)
|
||||||
|
acoreInfo.version = semver.inc(acoreInfo.version, "prerelease", {
|
||||||
|
includePrerelease: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
// read the pending file found and add it at the beginning of the changelog text
|
||||||
|
const data = await Deno.readTextFile(
|
||||||
|
`${CHANGELOG_PENDING_PATH}/${dirEntry.name}`,
|
||||||
|
);
|
||||||
|
changelogText = `## ${acoreInfo.version} | Commit: ${gitVersion}\n\n${data}\n${changelogText}`;
|
||||||
|
|
||||||
|
// remove the pending file
|
||||||
|
await Deno.remove(`${CHANGELOG_PENDING_PATH}/${dirEntry.name}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// write to acore.json and master.md only if new version is available
|
||||||
|
if (currentVersion != acoreInfo.version) {
|
||||||
|
console.log(`Changelog version upgraded from ${currentVersion} to ${acoreInfo.version}`)
|
||||||
|
Deno.writeTextFile(CHANGELOG_MASTER_FILE, changelogText);
|
||||||
|
Deno.writeTextFile(ACORE_JSON, JSON.stringify(acoreInfo, null, 2)+"\n");
|
||||||
|
} else {
|
||||||
|
console.log("No changelogs to add")
|
||||||
|
}
|
||||||
@@ -14,14 +14,14 @@ function import() {
|
|||||||
pendingPath="$AC_PATH_ROOT/data/sql/updates/pending_$folder"
|
pendingPath="$AC_PATH_ROOT/data/sql/updates/pending_$folder"
|
||||||
updPath="$UPDATES_PATH/$folder"
|
updPath="$UPDATES_PATH/$folder"
|
||||||
|
|
||||||
latestUpd=`ls -1 $updPath/ | tail -n 1`
|
latestUpd=$(ls -1 $updPath/ | tail -n 1)
|
||||||
|
|
||||||
if [ -z $latestUpd ]; then
|
if [ -z $latestUpd ]; then
|
||||||
echo "FIRST UPDATE FILE MISSING!! DID YOU ARCHIVED IT?";
|
echo "FIRST UPDATE FILE MISSING!! DID YOU ARCHIVED IT?";
|
||||||
exit;
|
exit 1;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dateToday=`date +%Y_%m_%d`
|
dateToday=$(date +%Y_%m_%d)
|
||||||
counter=0
|
counter=0
|
||||||
|
|
||||||
dateLast=$latestUpd
|
dateLast=$latestUpd
|
||||||
@@ -43,10 +43,10 @@ function import() {
|
|||||||
newVer=$dateToday"_"$cnt
|
newVer=$dateToday"_"$cnt
|
||||||
|
|
||||||
startTransaction="START TRANSACTION;";
|
startTransaction="START TRANSACTION;";
|
||||||
updHeader="ALTER TABLE version_db_"$db" CHANGE COLUMN "$oldVer" "$newVer" bit;";
|
updHeader="ALTER TABLE version_db_$db CHANGE COLUMN $oldVer $newVer bit;";
|
||||||
endTransaction="COMMIT;";
|
endTransaction="COMMIT;";
|
||||||
|
|
||||||
newFile="$updPath/"$dateToday"_"$cnt".sql"
|
newFile="$updPath/$dateToday_$cnt.sql"
|
||||||
|
|
||||||
oldFile=$(basename "$entry")
|
oldFile=$(basename "$entry")
|
||||||
prefix=${oldFile%_*.sql}
|
prefix=${oldFile%_*.sql}
|
||||||
@@ -67,7 +67,7 @@ function import() {
|
|||||||
echo "proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';" >> "$newFile";
|
echo "proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';" >> "$newFile";
|
||||||
echo "SELECT COUNT(*) INTO @COLEXISTS" >> "$newFile";
|
echo "SELECT COUNT(*) INTO @COLEXISTS" >> "$newFile";
|
||||||
echo "FROM information_schema.COLUMNS" >> "$newFile";
|
echo "FROM information_schema.COLUMNS" >> "$newFile";
|
||||||
echo "WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_"$db"' AND COLUMN_NAME = '"$oldVer"';" >> "$newFile";
|
echo "WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_$db' AND COLUMN_NAME = '$oldVer';" >> "$newFile";
|
||||||
echo "IF @COLEXISTS = 0 THEN LEAVE proc; END IF;" >> "$newFile";
|
echo "IF @COLEXISTS = 0 THEN LEAVE proc; END IF;" >> "$newFile";
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ function import() {
|
|||||||
echo "$updHeader" >> "$newFile";
|
echo "$updHeader" >> "$newFile";
|
||||||
|
|
||||||
if [[ $isRev -eq 1 ]]; then
|
if [[ $isRev -eq 1 ]]; then
|
||||||
echo "SELECT sql_rev INTO OK FROM version_db_"$db" WHERE sql_rev = '$rev'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;" >> "$newFile";
|
echo "SELECT sql_rev INTO OK FROM version_db_$db WHERE sql_rev = '$rev'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;" >> "$newFile";
|
||||||
fi;
|
fi;
|
||||||
|
|
||||||
echo "--" >> "$newFile";
|
echo "--" >> "$newFile";
|
||||||
@@ -89,7 +89,7 @@ function import() {
|
|||||||
echo "--" >> "$newFile";
|
echo "--" >> "$newFile";
|
||||||
echo "-- END UPDATING QUERIES" >> "$newFile";
|
echo "-- END UPDATING QUERIES" >> "$newFile";
|
||||||
echo "--" >> "$newFile";
|
echo "--" >> "$newFile";
|
||||||
echo "UPDATE version_db_"$db" SET date = '"$newVer"' WHERE sql_rev = '"$rev"';" >> "$newFile";
|
echo "UPDATE version_db_$db SET date = '$newVer' WHERE sql_rev = '$rev';" >> "$newFile";
|
||||||
|
|
||||||
echo "$endTransaction" >> "$newFile";
|
echo "$endTransaction" >> "$newFile";
|
||||||
|
|
||||||
@@ -264,7 +264,7 @@ function shellCommandFactory(
|
|||||||
)
|
)
|
||||||
}"\n`,
|
}"\n`,
|
||||||
)
|
)
|
||||||
.action(async (args: any[] | undefined) => {
|
.action(async (args: string[] | undefined) => {
|
||||||
const { run } = Deno;
|
const { run } = Deno;
|
||||||
|
|
||||||
for (const command of commands) {
|
for (const command of commands) {
|
||||||
|
|||||||
7
bin/acore-import-changelogs
Executable file
7
bin/acore-import-changelogs
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CUR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
source "$CUR_PATH/../apps/bash_shared/includes.sh"
|
||||||
|
|
||||||
|
denoRunFile "$CUR_PATH/../apps/ci/ci-pending-changelogs.ts"
|
||||||
8
doc/changelog/README.md
Normal file
8
doc/changelog/README.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# CHANGELOG
|
||||||
|
|
||||||
|
All breaking/notable changes to this project will be documented in the master.md file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
|
and this project adheres to [Semantic Versioning](https://www.azerothcore.org/wiki/project-versioning).
|
||||||
|
|
||||||
|
To create a new changelog please follow the instructions on our [wiki page](https://www.azerothcore.org/wiki/how-to-use-changelog)
|
||||||
1
doc/changelog/master.md
Normal file
1
doc/changelog/master.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
6
doc/changelog/pendings/changes_1623667140221711000.md
Normal file
6
doc/changelog/pendings/changes_1623667140221711000.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
### Added
|
||||||
|
- Created new changelog system.
|
||||||
|
|
||||||
|
### How to upgrade
|
||||||
|
|
||||||
|
To create a new changelog please follow the instructions on our [wiki page](https://www.azerothcore.org/wiki/how-to-use-changelog)
|
||||||
21
doc/changelog/pendings/create.sh
Executable file
21
doc/changelog/pendings/create.sh
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
unamestr=$(uname)
|
||||||
|
echo "OS: $unamestr"
|
||||||
|
if [[ "$unamestr" == 'Darwin' ]]; then
|
||||||
|
rev=$(gdate +%s%N );
|
||||||
|
else
|
||||||
|
rev=$(date +%s%N );
|
||||||
|
fi
|
||||||
|
|
||||||
|
CUR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )/" && pwd )";
|
||||||
|
|
||||||
|
filename=changes_"$rev".md
|
||||||
|
|
||||||
|
echo "Insert your changelog here
|
||||||
|
|
||||||
|
### How to upgrade
|
||||||
|
|
||||||
|
Add instructions on how to adapt the code to the new changes
|
||||||
|
|
||||||
|
" > "$CUR_PATH/$filename" && echo "File created: $filename";
|
||||||
51
doc/changelog/previous-versions/v2.x.md
Normal file
51
doc/changelog/previous-versions/v2.x.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
## We suggest using the latest master branch
|
||||||
|
This is old and may not be working.
|
||||||
|
We suggest that you always use the latest version of our master branch.
|
||||||
|
https://github.com/azerothcore/azerothcore-wotlk/tree/master
|
||||||
|
|
||||||
|
## Upgrade instructions
|
||||||
|
|
||||||
|
For server administrators: instructions about how to upgrade existing servers are available [here](http://www.azerothcore.org/wiki/Upgrade-from-pre-2.0.0-to-latest-master).
|
||||||
|
|
||||||
|
|
||||||
|
## Release notes
|
||||||
|
|
||||||
|
I'm pleased to release this new version of AzerothCore. This achievement was only possible thanks to all the contributors of our awesome community.
|
||||||
|
|
||||||
|
Special thanks to @talamortis @BarbzYHOOL @Deku @Stoabrogga @poszer @Viste @wetbrownsauce @CookieMonsterDev @Nefertumm @xDevICCI @pangolp @Winfidonarleyan @brussens @Yehonal
|
||||||
|
@comix1988 @Rochet2 @masterking32 @mik1893 @STARRHELD @a4501150 @Trystanosaurus @FALL1N1 @Kaev @Ayasecore @Pondaveia @Gargarensis and all the other [developers](https://github.com/azerothcore/azerothcore-wotlk/graphs/contributors), testers, supporters and custom modules/tools developers!
|
||||||
|
|
||||||
|
The full list of improvements was just too big to be published here, so I will only add some of the improvements that have been implemented since release 1.x:
|
||||||
|
|
||||||
|
- Solved all DB installation issues
|
||||||
|
- Implemented AC Docker setup
|
||||||
|
- Fixed all DB startup errors
|
||||||
|
- Eluna is now supported (special thanks @AyaseCore )
|
||||||
|
- Travis now prevents startup DB errors to get on master
|
||||||
|
- Fixed all compilation warnings
|
||||||
|
- Align most of the DB tables structure with TC
|
||||||
|
- Align SmartAI enums with TC
|
||||||
|
- Align conditions enums with TC
|
||||||
|
- Misc improvements to the SmartAI system
|
||||||
|
- The core will now trigger error if unsupported SmartAI action/even/types are used
|
||||||
|
- Fixed MySQL 5.7 issues
|
||||||
|
- Fixed many Quests (the list is too big to report it here)
|
||||||
|
- Improved movement and positioning for vanity pets
|
||||||
|
- Fixed clang 7 build
|
||||||
|
- Fixed Val'anyr Hammer of Ancient Kings
|
||||||
|
- Fixed Amplify Damage
|
||||||
|
- Update waypoints for black knight in Trail of the champion to be more blizzlike
|
||||||
|
- Fixed Mage Empowered Fire Talent
|
||||||
|
- Warlock Life Tap
|
||||||
|
- Fixed Mirror Image
|
||||||
|
- Added a few custom commands
|
||||||
|
- Fixed Glyph Learning for dual talent
|
||||||
|
- Fixed Deathgrip
|
||||||
|
- Fixed Rogue Tier 1 proc
|
||||||
|
- Fixed Guild Charter
|
||||||
|
- Fixed heirlooms to apply stats before giving health.
|
||||||
|
- Fixed pet bar will now show after /reload command
|
||||||
|
- Fixed npc falling through textures
|
||||||
|
- Fixed Noth the Plaguebringer casting upon returning back to ground
|
||||||
|
|
||||||
|
...and many other improvements! You can check the full changelog [here](https://github.com/azerothcore/azerothcore-wotlk/commits/master).
|
||||||
1271
doc/changelog/previous-versions/v3.x.md
Normal file
1271
doc/changelog/previous-versions/v3.x.md
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user