Initial commit
This commit is contained in:
2
.github/CODEOWNERS
vendored
Normal file
2
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# Protect dashboard workflow – require explicit review
|
||||
.github/workflows/dashboard-ci.yml @Yehonal
|
||||
138
.github/CODE_OF_CONDUCT.md
vendored
Normal file
138
.github/CODE_OF_CONDUCT.md
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, caste, color, religion, or sexual
|
||||
identity and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, fun, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the overall
|
||||
community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized imagery, and sexual attention or advances of
|
||||
any kind
|
||||
* The use of sexulized language which could reasonably be considered inappropriate.
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email address,
|
||||
without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, which includes but is not limited to AzerothCore
|
||||
managed sites and community spaces, and also applies when an individual is officially representing the
|
||||
community in public spaces.
|
||||
|
||||
Examples of representing our community include
|
||||
* Using an official e-mail address
|
||||
* Posting via an official social media account
|
||||
* Acting as an appointed representative at an online or offline event
|
||||
* Communicating within the WoW Emulation communities
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at the AzerothCore
|
||||
[https://discord.gg/gkt4y2x][discord].
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private or public, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series of
|
||||
actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or permanent
|
||||
ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within the
|
||||
community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.1, available at
|
||||
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
||||
|
||||
Community Impact Guidelines were inspired by
|
||||
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
|
||||
[https://www.contributor-covenant.org/translations][translations].
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
||||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
||||
[discord]: https://discord.gg/gkt4y2x
|
||||
30
.github/CONTRIBUTING.md
vendored
Normal file
30
.github/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
## CONTRIBUTING
|
||||
|
||||
AzerothCore can also serve as a learning resource for aspiring developers who want to understand how WoW servers work, how MMORPGs are structured, how game server emulators are created, or to improve their C++ and SQL knowledge.
|
||||
|
||||
If you want to contribute to the project, you will find a lot of resources that will guide you in our [wiki](https://www.azerothcore.org/wiki/contribute).
|
||||
|
||||
We also recommend you read our [Contributor Covenant Code of Conduct](https://github.com/azerothcore/azerothcore-wotlk/blob/master/.github/CODE_OF_CONDUCT.md).
|
||||
|
||||
Feel free to join our [Discord server](https://discord.gg/gkt4y2x).
|
||||
|
||||
## AUTHORS & CONTRIBUTORS
|
||||
|
||||
This project exists thanks to the [authors](https://github.com/azerothcore/azerothcore-wotlk/blob/master/AUTHORS).
|
||||
|
||||
## IMPORTANT LINKS
|
||||
|
||||
- [Doxygen documentation](https://www.azerothcore.org/pages/doxygen/index.html)
|
||||
- [Website](http://www.azerothcore.org/)
|
||||
- [AzerothCore catalogue](http://www.azerothcore.org/catalogue.html "Modules, tools, and other stuff for AzerothCore") (modules, tools, etc...)
|
||||
- [Our Discord server](https://discord.gg/gkt4y2x)
|
||||
- [Our wiki](http://www.azerothcore.org/wiki "Easy to use and developed by AzerothCore founder")
|
||||
- [Our forum](https://github.com/azerothcore/azerothcore-wotlk/discussions/)
|
||||
- [Our Facebook page](https://www.facebook.com/AzerothCore/)
|
||||
- [Our LinkedIn page](https://www.linkedin.com/company/azerothcore/)
|
||||
|
||||
All contributions, big or small, are appreciated <3
|
||||
|
||||
The AzerothCore Staff appreciate all the help and contribution that *you* put your time into.
|
||||
|
||||
Thank you!
|
||||
1
.github/FUNDING.yml
vendored
Normal file
1
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
custom: https://www.paypal.com/donate/?hosted_button_id=L69ANPSR8BJDU
|
||||
95
.github/ISSUE_TEMPLATE/aa_game_issues.yml
vendored
Normal file
95
.github/ISSUE_TEMPLATE/aa_game_issues.yml
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
name: Game issues
|
||||
description: Create a bug report to help us improve.
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for taking the time to fill out a bug report. Remember to fill out all fields including the title above.
|
||||
An issue that is not properly filled out will be closed.
|
||||
You can read more about the standards for a bug report [here](https://www.azerothcore.org/wiki/issue-tracker-standards).
|
||||
- type: textarea
|
||||
id: current
|
||||
attributes:
|
||||
label: Current Behaviour
|
||||
description: |
|
||||
Description of the problem or issue here.
|
||||
Include entries of affected creatures / items / quests / spells etc.
|
||||
Never upload files! Use GIST for text and YouTube for videos!
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: expected
|
||||
attributes:
|
||||
label: Expected Behaviour
|
||||
description: |
|
||||
Tell us what should happen instead.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: source
|
||||
attributes:
|
||||
label: Source
|
||||
description: |
|
||||
If you have a source that proves how it is supposed to work, please add that to make it easier for devs to fix the issue.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: reproduce
|
||||
attributes:
|
||||
label: Steps to reproduce the problem
|
||||
description: |
|
||||
What does someone else need to do to encounter the same bug?
|
||||
placeholder: |
|
||||
1. Step 1
|
||||
2. Step 2
|
||||
3. Step 3
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: extra
|
||||
attributes:
|
||||
label: Extra Notes
|
||||
description: |
|
||||
Do you have any extra notes that can help solve the issue that does not fit any other field?
|
||||
placeholder: |
|
||||
None
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: commit
|
||||
attributes:
|
||||
label: AC rev. hash/commit
|
||||
description: |
|
||||
Paste the entire output result of the `.server debug` command. (If you need to run it from the client get a prat addon)
|
||||
placeholder: |
|
||||
Paste the entire output result of the `.server debug` command. (If you need to run it from the client get a prat addon)
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: os
|
||||
attributes:
|
||||
label: Operating system
|
||||
description: |
|
||||
The Operating System the Server is running on.
|
||||
i.e. Windows 11 x64, Debian 10 x64, macOS 12, Ubuntu 20.04
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: custom
|
||||
attributes:
|
||||
label: Custom changes or Modules
|
||||
description: |
|
||||
List which custom changes or modules you have applied, i.e. Eluna module, etc.
|
||||
placeholder: |
|
||||
None
|
||||
validations:
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for your contribution.
|
||||
If you use AzerothCore regularly, we really NEED your help to:
|
||||
- Test our fixes: https://www.azerothcore.org/wiki/How-to-test-a-PR
|
||||
- Report issues or suggestions: https://github.com/azerothcore/azerothcore-wotlk/issues/new/choose
|
||||
- Improve the documentation/wiki: https://www.azerothcore.org/wiki/home
|
||||
With your help, the project can evolve much quicker!
|
||||
86
.github/ISSUE_TEMPLATE/bb_crash_issues.yml
vendored
Normal file
86
.github/ISSUE_TEMPLATE/bb_crash_issues.yml
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
name: Crash / Server Crash issues
|
||||
description: Did your server crash? Post an issue here!
|
||||
title: "Crash: "
|
||||
labels: ["Priority-Critical", "HasBacktrace"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for taking the time to fill out a bug report. Remember to fill out all fields including the title above.
|
||||
An issue that is not properly filled out will be closed.
|
||||
- type: textarea
|
||||
id: current
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: |
|
||||
If possible provide detailed steps to reproduce the crash.
|
||||
placeholder: |
|
||||
1. Provide the exact steps to trigger the crash.
|
||||
2. Include any relevant configurations or commands.
|
||||
3. Mention if the crash is consistent or intermittent.
|
||||
validations:
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
NOTE: Make sure your server was compiled in RelWithDebug or Debug mode as crashlogs from Release do not contain enough information.
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Logs and Screenshots
|
||||
description: |
|
||||
Do you have any logs or screenshots that can be useful?
|
||||
Crash logs in text are preffered over screenshots.
|
||||
DO NOT POST THE FULL CRASH LOG IN THE ISSUE BODY. DO NOT UPLOAD TEXT FILES. USE [GITHUB GIST](https://gist.github.com/), PASTEBIN, OR ANY SIMILAR SERVICE INSTEAD.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: os
|
||||
attributes:
|
||||
label: Operating System
|
||||
description: |
|
||||
The Operating System you are having issues on.
|
||||
i.e. Windows 11 x64, Debian 10 x64, macOS 12, Ubuntu 20.04
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: deps
|
||||
attributes:
|
||||
label: Dependencies & versions
|
||||
description: |
|
||||
Relevant information about dependencies and their versions that can be useful to debug the issue.
|
||||
Example:
|
||||
- OpenSSL ver ...
|
||||
- Boost ver ...
|
||||
- MySQL ver ...
|
||||
- Visual Studio ver ...
|
||||
- GCC ver ...
|
||||
- Clang ver ...
|
||||
- CMake ver ...
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: commit
|
||||
attributes:
|
||||
label: Commit
|
||||
description: |
|
||||
Which commit hash are you using.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: extra
|
||||
attributes:
|
||||
label: Additional Context
|
||||
description: |
|
||||
Do you have any other relevant information about the issue?
|
||||
validations:
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for your contribution.
|
||||
If you use AzerothCore regularly, we really NEED your help to:
|
||||
- Test our fixes: https://www.azerothcore.org/wiki/How-to-test-a-PR
|
||||
- Report issues or suggestions: https://github.com/azerothcore/azerothcore-wotlk/issues/new/choose
|
||||
- Improve the documentation/wiki: https://www.azerothcore.org/wiki/home
|
||||
With your help, the project can evolve much quicker!
|
||||
75
.github/ISSUE_TEMPLATE/cc_bta_issues.yml
vendored
Normal file
75
.github/ISSUE_TEMPLATE/cc_bta_issues.yml
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
name: Build/Tools/Apps issues
|
||||
description: Got an issue with build, tools or apps? Create an issue to let us know!
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for taking the time to fill out a bug report. Remember to fill out all fields including the title above.
|
||||
An issue that is not properly filled out will be closed.
|
||||
- type: textarea
|
||||
id: current
|
||||
attributes:
|
||||
label: Current Behaviour
|
||||
description: |
|
||||
What actually happens and how do we reproduce it?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Logs and Screenshots
|
||||
description: |
|
||||
Do you have any logs or screenshots that can be useful?
|
||||
If you have logs in text form please upload them to [Gist](https://gist.github.com/) or PasteBin and upload the link.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: os
|
||||
attributes:
|
||||
label: Operating System
|
||||
description: |
|
||||
The Operating System you are having issues on.
|
||||
i.e. Windows 11 x64, Debian 10 x64, macOS 12, Ubuntu 20.04
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: deps
|
||||
attributes:
|
||||
label: Dependencies & versions
|
||||
description: |
|
||||
Relevant information about dependencies and their versions that can be useful to debug the issue.
|
||||
Example:
|
||||
- OpenSSL ver ...
|
||||
- Boost ver ...
|
||||
- MySQL ver ...
|
||||
- Visual Studio ver ...
|
||||
- GCC ver ...
|
||||
- Clang ver ...
|
||||
- CMake ver ...
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: commit
|
||||
attributes:
|
||||
label: Commit
|
||||
description: |
|
||||
Which commit hash are you using.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: extra
|
||||
attributes:
|
||||
label: Additional Context
|
||||
description: |
|
||||
Do you have any other relevant information about the issue?
|
||||
validations:
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for your contribution.
|
||||
If you use AzerothCore regularly, we really NEED your help to:
|
||||
- Test our fixes: https://www.azerothcore.org/wiki/How-to-test-a-PR
|
||||
- Report issues or suggestions: https://github.com/azerothcore/azerothcore-wotlk/issues/new/choose
|
||||
- Improve the documentation/wiki: https://www.azerothcore.org/wiki/home
|
||||
With your help, the project can evolve much quicker!
|
||||
17
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
17
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Website
|
||||
url: https://www.azerothcore.org
|
||||
about: On the AC website you can find a lot of things, such as existing modules.
|
||||
- name: Wiki
|
||||
url: https://www.azerothcore.org/wiki
|
||||
about: You can find plenty of information on our Wiki.
|
||||
- name: FAQ
|
||||
url: https://www.azerothcore.org/wiki/faq
|
||||
about: Frequently asked questions.
|
||||
- name: Common Errors
|
||||
url: https://www.azerothcore.org/wiki/common-errors
|
||||
about: You can find common errors and their solutions here.
|
||||
- name: Discord
|
||||
url: https://discord.gg/gkt4y2x
|
||||
about: Join the discussions over at our Discord Server.
|
||||
43
.github/ISSUE_TEMPLATE/dd_feature_request.yml
vendored
Normal file
43
.github/ISSUE_TEMPLATE/dd_feature_request.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
name: Feature request
|
||||
description: Suggest an idea for this project
|
||||
title: "Feature: "
|
||||
labels: "Feature"
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for taking the time to fill out a feature request. Remember to fill out all fields including the title above.
|
||||
An issue that is not properly filled out will be closed.
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Describe your feature request or suggestion in detail
|
||||
description: |
|
||||
A clear and concise description of what you want to happen.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: solution
|
||||
attributes:
|
||||
label: Describe a possible solution to your feature or suggestion in detail
|
||||
description: |
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: additional
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: |
|
||||
Add any other context or screenshots about the feature request here.
|
||||
validations:
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for your contribution.
|
||||
If you use AzerothCore regularly, we really NEED your help to:
|
||||
- Test our fixes: https://www.azerothcore.org/wiki/How-to-test-a-PR
|
||||
- Report issues or suggestions: https://github.com/azerothcore/azerothcore-wotlk/issues/new/choose
|
||||
- Improve the documentation/wiki: https://www.azerothcore.org/wiki/home
|
||||
With your help, the project can evolve much quicker!
|
||||
21
.github/ISSUE_TEMPLATE/ee_cc.yml
vendored
Normal file
21
.github/ISSUE_TEMPLATE/ee_cc.yml
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
name: CC Triage
|
||||
description: This template is only used for ChromieCraft
|
||||
labels: ["ChromieCraft Generic"]
|
||||
body:
|
||||
- type: textarea
|
||||
id: current
|
||||
attributes:
|
||||
label: Triage
|
||||
description: |
|
||||
Paste the issue from ChromieCraft here.
|
||||
value: |
|
||||
|
||||
Issue linked from CC:
|
||||
|
||||
Triage Notes:
|
||||
|
||||
Original Post Below:
|
||||
|
||||
---
|
||||
validations:
|
||||
required: true
|
||||
93
.github/README.md
vendored
Normal file
93
.github/README.md
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
#  AzerothCore
|
||||
|
||||
[](CODE_OF_CONDUCT.md)
|
||||
[](https://www.codefactor.io/repository/github/azerothcore/azerothcore-wotlk)
|
||||
[](https://stackoverflow.com/questions/tagged/azerothcore?sort=newest "Ask / browse questions here")
|
||||
[](https://discord.gg/gkt4y2x "Our community hub on Discord")
|
||||
[](https://www.bountyhub.dev/bounties?repo=azerothcore)
|
||||
|
||||
## Build Status
|
||||
|
||||
[](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/core-build-nopch.yml?query=branch%3Amaster)
|
||||
[](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/core-build-pch.yml?query=branch%3Amaster)
|
||||
[](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/core_modules_build.yml?query=branch%3Amaster)
|
||||
[](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/windows_build.yml?query=branch%3Amaster)
|
||||
[](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/macos_build.yml?query=branch%3Amaster)
|
||||
[](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/docker_build.yml?query=branch%3Amaster)
|
||||
[](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/tools_build.yml?query=branch%3Amaster)
|
||||
[](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/dashboard-ci.yml?query=branch%3Amaster)
|
||||
|
||||
## Introduction
|
||||
|
||||
AzerothCore is an open-source game server application and framework designed for hosting massively multiplayer online role-playing games (MMORPGs). It is based on the popular MMORPG World of Warcraft (WoW) and seeks to recreate the gameplay experience of the original game from patch 3.3.5a.
|
||||
|
||||
The original code is based on MaNGOS, TrinityCore, and SunwellCore and has since then had extensive development to improve stability, in-game mechanics, and modularity to the game. AC has also grown into a community-driven project with a significant number of contributors and developers. It is written in C++ and provides a solid foundation for creating private servers that mimic the mechanics and behavior of the official WoW servers.
|
||||
|
||||
## Philosophy
|
||||
|
||||
Our main goal is to create a playable game server, offering a fully working in-game experience.
|
||||
|
||||
Here are the main points we focus on:
|
||||
|
||||
* Stability
|
||||
* We make sure all changes pass the CIs before being merged into the master branch.
|
||||
|
||||
* Blizzlike content
|
||||
* We strive to make all in-game content to be blizzlike. Therefore we have a high standard for fixes being made.
|
||||
|
||||
* Customization
|
||||
* It is easy to customize your experience using [modules](#modules).
|
||||
|
||||
* Community driven
|
||||
* AzerothCore has an active community of developers, contributors, and users who collaborate, share knowledge, and provide support through forums, Discord channels, and other communication platforms.
|
||||
|
||||
### Modules
|
||||
|
||||
AzerothCore is designed to be highly modular, allowing developers to extend and customize the game to suit their preferences or create unique gameplay experiences. This flexibility enables the addition of custom features, content, and modifications.
|
||||
|
||||
We have a lot of modules already made by the community, many of which can be found in the [Module Catalogue](https://www.azerothcore.org/catalogue.html#/).
|
||||
|
||||
## Installation
|
||||
|
||||
Detailed installation instructions are available [here](http://www.azerothcore.org/wiki/installation).
|
||||
|
||||
## Contributing
|
||||
|
||||
AzerothCore can also serve as a learning resource for aspiring developers who want to understand how WoW servers work, how MMORPGs are structured, how game server emulators are created, or to improve their C++ and SQL knowledge.
|
||||
|
||||
If you want to contribute to the project, you will find a lot of resources that will guide you in our [wiki](https://www.azerothcore.org/wiki/contribute).
|
||||
|
||||
We also recommend you read our [Contributor Covenant Code of Conduct](https://github.com/azerothcore/azerothcore-wotlk/blob/master/.github/CODE_OF_CONDUCT.md).
|
||||
|
||||
Feel free to join our [Discord server](https://discord.gg/gkt4y2x).
|
||||
|
||||
Click on the "⭐ Star" button to help us gain more visibility on Github!
|
||||
|
||||
## Authors & Contributors
|
||||
|
||||
The project was born in 2016 based on SunwellCore. Unfortunately, SunwellCore was published without any git history, so on git there are no credits for all the contributors before 2016.
|
||||
|
||||
You can check the [authors](https://github.com/azerothcore/azerothcore-wotlk/blob/master/AUTHORS) file for more details.
|
||||
|
||||
## Important Links
|
||||
|
||||
- [Doxygen documentation](https://www.azerothcore.org/pages/doxygen/index.html)
|
||||
- [Website](http://www.azerothcore.org/)
|
||||
- [AzerothCore catalogue](http://www.azerothcore.org/catalogue.html "Modules, tools, and other stuff for AzerothCore") (modules, tools, etc...)
|
||||
- [Our Discord server](https://discord.gg/gkt4y2x)
|
||||
- [Our wiki](http://www.azerothcore.org/wiki "Easy to use and developed by AzerothCore founder")
|
||||
- [Our forum](https://github.com/azerothcore/azerothcore-wotlk/discussions/)
|
||||
- [Our Facebook page](https://www.facebook.com/AzerothCore/)
|
||||
- [Our LinkedIn page](https://www.linkedin.com/company/azerothcore/)
|
||||
|
||||
## License
|
||||
|
||||
- The AzerothCore source code is released under the [GNU GPL v2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
|
||||
|
||||
It's important to note that AzerothCore is not an official Blizzard Entertainment product, and it is not affiliated with or endorsed by World of Warcraft or Blizzard Entertainment. AzerothCore does not in any case sponsor nor support illegal public servers. If you use this project to run an illegal public server and not for testing and learning it is your own personal choice.
|
||||
|
||||
## Special thanks
|
||||
|
||||
[JetBrains](https://www.jetbrains.com/?from=AzerothCore) is providing free [open-source licenses](https://www.jetbrains.com/community/opensource/) to the AzerothCore developers.
|
||||
|
||||
[](https://jb.gg/OpenSourceSupport)
|
||||
97
.github/SECURITY.md
vendored
Normal file
97
.github/SECURITY.md
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
We support the following versions of dependencies.
|
||||
|
||||
| Icon | Meaning |
|
||||
| :------------------- | :---------------: |
|
||||
| :white_check_mark: | **Supported** |
|
||||
| :red_circle: | **NOT** Supported |
|
||||
| :large_blue_diamond: | **Recommended** |
|
||||
|
||||
### Versions of AzerothCore:
|
||||
|
||||
| AzerothCore Branch | Status | Recommended |
|
||||
| ---------------------------- | :----------------: | :------------------: |
|
||||
| **master** | :white_check_mark: | :large_blue_diamond: |
|
||||
| Any non-official fork | :red_circle: | |
|
||||
| Any Playerbots fork | :red_circle: | |
|
||||
| Any NPCBots fork | :red_circle: | |
|
||||
| Any AC (non-official) repack | :red_circle: | |
|
||||
|
||||
### Supported Operating Systems
|
||||
|
||||
| Linux (Ubuntu) | Status | Recommended |
|
||||
| :------------- | :----------------: | :------------------: |
|
||||
| 24.04 | :white_check_mark: | :large_blue_diamond: |
|
||||
| 22.04 | :white_check_mark: | |
|
||||
| 20.04 ≤ | :red_circle: | |
|
||||
|
||||
| macOS | Status | Recommended |
|
||||
| :---- | :----------------: | :------------------: |
|
||||
| 14 | :white_check_mark: | :large_blue_diamond: |
|
||||
| 12 ≤ | :red_circle: | |
|
||||
|
||||
| Windows | Status | Recommended |
|
||||
| :------------ | :----------------: | :------------------: |
|
||||
| Windows 11 | :white_check_mark: | :large_blue_diamond: |
|
||||
| Windows 10 | :white_check_mark: |
|
||||
| Windows 8.1 ≤ | :red_circle: |
|
||||
|
||||
<br>
|
||||
|
||||
### Supported Boost Versions:
|
||||
|
||||
| Boost | Status | Recommended |
|
||||
| :----- | :----------------: | :------------------: |
|
||||
| 1.70 ≥ | :white_check_mark: | :large_blue_diamond: |
|
||||
|
||||
### Supported OpenSSL Versions:
|
||||
|
||||
| OpenSSL | Status | Recommended |
|
||||
| :------ | :----------------: | :------------------: |
|
||||
| 3.X.X ≥ | :white_check_mark: | :large_blue_diamond: |
|
||||
|
||||
### Supported CMake Versions:
|
||||
|
||||
| CMake | Status | Recommended |
|
||||
| :----- | :----------------: | :------------------: |
|
||||
| 3.16 ≥ | :white_check_mark: | :large_blue_diamond: |
|
||||
|
||||
### Supported MySQL Versions:
|
||||
|
||||
| MySQL | Status | Recommended |
|
||||
| :---- | :----------------: | :------------------: |
|
||||
| 8.4 ≥ | :white_check_mark: | :large_blue_diamond: |
|
||||
| 8.0 | :white_check_mark: | |
|
||||
| 8.1 | :red_circle: | |
|
||||
| 8.0 < | :red_circle: | |
|
||||
|
||||
### Supported CLang Versions:
|
||||
|
||||
| CLang | Status | Recommended |
|
||||
| :---- | :----------------: | :------------------: |
|
||||
| 18 | :white_check_mark: | :large_blue_diamond: |
|
||||
| 15 | :white_check_mark: | |
|
||||
| 14 ≤ | :red_circle: | |
|
||||
|
||||
### Supported GCC Versions:
|
||||
|
||||
| GCC | Status | Recommended |
|
||||
| :--- | :----------------: | :------------------: |
|
||||
| 14 | :white_check_mark: | :large_blue_diamond: |
|
||||
| 12 | :white_check_mark: | |
|
||||
| 11 ≤ | :red_circle: | |
|
||||
|
||||
> [!NOTE]
|
||||
> We do **NOT** support any repacks that may or may not have been made based on AzerothCore. This is because they are usually based on older versions and there is no way to know what is in the precompiled binaries. Instead, you should compile your binaries from the AzerothCore source. To get started, read the [Installation Guide](https://www.azerothcore.org/wiki/installation).
|
||||
|
||||
> [!CAUTION]
|
||||
> [Why you should not use repacks to run your WoW server](https://www.mangosrumors.org/why-you-should-not-use-repacks-to-run-your-wow-server/)
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
We class a vulnerability to be any hack or exploit that has an impact on the server performance or that gives unfair advantages in the game (e.g. fly hacking or injection tools).
|
||||
|
||||
If a new vulnerability is found you should always create a new [bug report](https://github.com/azerothcore/azerothcore-wotlk/issues/new?assignees=&labels=&projects=&template=bug_report.yml).
|
||||
97
.github/SUPPORT.md
vendored
Normal file
97
.github/SUPPORT.md
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
# How to ask for help
|
||||
|
||||
### Need help?
|
||||
|
||||
Do you need support with AzerothCore? No worries, we're happy to help you!
|
||||
|
||||
Whether you have troubles installing AzerothCore, or you want to ask how-to or generic help questions, **we will help you**.
|
||||
|
||||
We just want you to ask for support in the **proper way**. Please read this document before asking for any help.
|
||||
|
||||
### Why is the "proper way" so important?
|
||||
|
||||
If you ask a question directly in the chat, it can get easily lost and you might never be helped unless there is someone online in that specific moment that can help you.
|
||||
|
||||
If you put your question on StackOverflow it will **stay** there and someone can help you at any moment. You can also link your question in the chat to give it more visibility. Doesn't make sense for you? Just keep reading.
|
||||
|
||||
Also, most of the questions asked by users are repetitive. So we need an efficient way to handle all the support requests. We use StackOverflow for support questions and GitHub for bug reports.
|
||||
|
||||
Sounds complicated? Not at all! **Just keep reading**.
|
||||
|
||||
### Bug reports
|
||||
|
||||
A game feature (e.g. spell/quest/talent/etc..) doesn't work as it is supposed to?
|
||||
|
||||
Congratulations! You've just found a bug, please search among the [existing issues](https://github.com/azerothcore/azerothcore-wotlk/issues). There is a good chance that someone else has already reported the same bug that you found, in such case we kindly ask you to "confirm" it by leaving a comment.
|
||||
|
||||
Example:
|
||||

|
||||
|
||||
If after searching for an existing issue report, you didn't find any, then you should [open a new issue](https://github.com/azerothcore/azerothcore-wotlk/issues/new).
|
||||
|
||||
### Other support requests
|
||||
|
||||
- Getting an error while installing AzerothCore?
|
||||
- Is there something in the documentation that is not clear for you?
|
||||
- Do you want to know how to do something specific with AzerothCore?
|
||||
- Are you trying to do something like implementing a new feature, fixing a bug, etc...?
|
||||
- Do you have questions about C++ or SQL code that is related to AzerothCore or other AC custom modules?
|
||||
|
||||
These kinds of questions are considered support questions and are handled via [StackOverflow](https://stackoverflow.com/questions/tagged/azerothcore). **Read below**
|
||||
|
||||
### Do I need to register in StackOverflow?
|
||||
|
||||
**Not necessarily!** If you have a Google or a Facebook account, you can already log in [StackOverflow](https://stackoverflow.com/questions/tagged/azerothcore) (click the **_Log in_** button on the top-right corner of the website).
|
||||
|
||||

|
||||
|
||||
|
||||
### Search among the existing questions
|
||||
|
||||
There is a good chance that your question has already been asked by someone else, so please **search** it on [StackOverflow](https://stackoverflow.com/questions/tagged/azerothcore).
|
||||
|
||||
For example, are you getting an error from MySQL? Search it under the **[azerothcore]** tag!
|
||||
|
||||

|
||||
|
||||
Oh, there is already a question! And it has an answer! Let's open it!
|
||||
|
||||

|
||||
|
||||
**Another example**, imagine you're wondering whether you can use LUA scripts on AzerothCore:
|
||||
|
||||

|
||||
|
||||
There is already a question and answer for that! Let's upvote the guys who asked and answered:
|
||||
|
||||

|
||||
|
||||
|
||||
## How to ask new questions
|
||||
|
||||
What if you can't find a question related to my specific problem? **Let's [open a new question](https://stackoverflow.com/questions/ask)**.
|
||||
|
||||
Remember to:
|
||||
|
||||
- Add a descriptive message.
|
||||
- **Bad** example `I got DB error plz help me`.
|
||||
- **Good** example: `After importing the sql updates, I get the error "XXX"`
|
||||
|
||||
- Don't forget the **[azerothcore]** tag!
|
||||
- 
|
||||
|
||||
- It's useful to add **4 more tags** according to the category of your question (e.g. `c++`, `docker`, `MySQL`, `sql`, etc... ).
|
||||
|
||||
- Link your question in the #support-general channel of our [Discord chat](https://discordapp.com/channels/217589275766685707/284406375495368704)
|
||||
|
||||
- Read: [stackoverflow.com/help/how-to-ask](https://stackoverflow.com/help/how-to-ask)
|
||||
|
||||
|
||||
### Share your knowledge!
|
||||
|
||||
Do you have anything to share with the community? Do you feel like some information could be useful to someone else (or to yourself in the future)? Have you solved a problem that took a while to figure out?
|
||||
|
||||
Ask a question on StackOverflow and then **answer it yourself**! Is it allowed? Yes, it is! Read this:
|
||||
|
||||
[https://stackoverflow.com/help/self-answer](https://stackoverflow.com/help/self-answer)
|
||||
|
||||
43
.github/actions/docker-tag-and-build/action.yml
vendored
Normal file
43
.github/actions/docker-tag-and-build/action.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
name: docker tag and build
|
||||
description: a helper action to shorten generating docker tags and building
|
||||
inputs:
|
||||
component-name:
|
||||
description: name of the component/docker image (eg worldserver, authserver)
|
||||
type: string
|
||||
required: true
|
||||
push:
|
||||
description: whether to push the image or not
|
||||
type: boolean
|
||||
required: true
|
||||
version:
|
||||
description: version tag to use for docker image
|
||||
required: true
|
||||
type: string
|
||||
dockerfile:
|
||||
description: dockerfile to use
|
||||
required: false
|
||||
default: apps/docker/Dockerfile
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Get Docker Metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: acore/ac-wotlk-${{ inputs.component-name }}
|
||||
tags: |
|
||||
type=raw,value=${{ inputs.version }}
|
||||
type=ref,event=branch
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: ${{ github.workspace }}
|
||||
file: ${{ inputs.dockerfile }}
|
||||
push: ${{ inputs.push }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
target: ${{ inputs.component-name }}
|
||||
build-args: |
|
||||
USER_ID=1000
|
||||
GROUP_ID=1000
|
||||
DOCKER_USER=acore
|
||||
224
.github/actions/linux-build/action.yml
vendored
Normal file
224
.github/actions/linux-build/action.yml
vendored
Normal file
@@ -0,0 +1,224 @@
|
||||
name: linux build
|
||||
description: a helper action to shorten running a build on linux
|
||||
inputs:
|
||||
CC:
|
||||
default: clang
|
||||
description: C Compiler to use
|
||||
type: string
|
||||
required: true
|
||||
CXX:
|
||||
default: clang++
|
||||
description: C++ compiler to use
|
||||
type: string
|
||||
required: true
|
||||
modules:
|
||||
default: false
|
||||
description: Flag to install modules or not
|
||||
required: true
|
||||
type: boolean
|
||||
tools:
|
||||
default: none
|
||||
description: Flag to enable tools build
|
||||
required: false
|
||||
type: string
|
||||
pch:
|
||||
default: false
|
||||
description: Flag to enable or disable PCH
|
||||
required: false
|
||||
type: boolean
|
||||
maxerrors:
|
||||
default: 1
|
||||
description: Max allowed error count before compilation stops
|
||||
required: false
|
||||
type: number
|
||||
keepgoing:
|
||||
default: false
|
||||
description: Flag to continue build after errors
|
||||
required: false
|
||||
type: boolean
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: echo cache key
|
||||
shell: bash
|
||||
run: echo "Cache key -> ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:pch=${{ inputs.pch }}:${{ github.ref_name }}"
|
||||
|
||||
- name: Cache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ github.workspace }}/var/ccache
|
||||
key: ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:pch=${{ inputs.pch }}:${{ github.ref_name }}
|
||||
restore-keys: |
|
||||
ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:pch=${{ inputs.pch }}
|
||||
ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}
|
||||
ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}
|
||||
|
||||
# This script moves sql files from "data/sql/updates/pending_$DB" to the
|
||||
# proper folder for the db
|
||||
- name: Process pending sql
|
||||
shell: bash
|
||||
run: bash apps/ci/ci-pending-sql.sh
|
||||
|
||||
- name: Install build dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt remove needrestart #refer: https://github.com/actions/runner-images/issues/9937
|
||||
sudo apt-get -y install ccache clang cmake curl google-perftools \
|
||||
libmysqlclient-dev make unzip build-essential cmake-data \
|
||||
libboost-all-dev libbz2-dev libncurses5-dev libmysql++-dev \
|
||||
libreadline6-dev libssl-dev libtool openssl zlib1g-dev
|
||||
|
||||
# Account for https://github.com/actions/runner-images/issues/8659
|
||||
# based off of https://github.com/actions/runner-images/issues/8659#issuecomment-1852353116
|
||||
UBUNTU_VERSION="$(grep VERSION_ID /etc/os-release | cut -f2 -d\")"
|
||||
source /etc/os-release
|
||||
if [[ "$VERSION_CODENAME" == "jammy" ]]; then
|
||||
if [[ "${{ inputs.CC }}" =~ "clang-" ]]; then
|
||||
CLANG_VERSION="$(echo '${{ inputs.CC }}' | cut -f2 -d\-)"
|
||||
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
||||
sudo add-apt-repository "deb http://apt.llvm.org/$VERSION_CODENAME/ llvm-toolchain-$VERSION_CODENAME-$CLANG_VERSION main"
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get -qq install '${{ inputs.CC }}'
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: setup ccache
|
||||
shell: bash
|
||||
env:
|
||||
CCACHE_DIR: $GITHUB_WORKSPACE/var/ccache
|
||||
run: |
|
||||
mkdir -p "$CCACHE_DIR"
|
||||
cat <<EOF >> "$GITHUB_ENV"
|
||||
CCACHE_BASEDIR=${GITHUB_WORKSPACE}
|
||||
CCACHE_DIR=${{ env.CCACHE_DIR }}
|
||||
CCACHE_HASHDIR=1
|
||||
CCACHE_MAXSIZE=5G
|
||||
CCACHE_SLOPPINESS=pch_defines,time_macros,include_file_mtime
|
||||
CCACHE_COMPRESS=1
|
||||
CCACHE_COMPRESSLEVEL=9
|
||||
CCACHE_COMPILERCHECK=content
|
||||
CCACHE_LOGFILE=${{ env.CCACHE_DIR }}/cache.debug
|
||||
CC=${{ inputs.CC }}
|
||||
CXX=${{ inputs.CXX }}
|
||||
EOF
|
||||
|
||||
- name: ccache config snapshot
|
||||
shell: bash
|
||||
run: |
|
||||
echo "==== Effective ccache configuration ===="
|
||||
ccache -p | egrep 'base_dir|hash_dir|compiler_check|sloppiness|max_size' || true
|
||||
|
||||
echo
|
||||
echo "==== Compiler info ===="
|
||||
which ${{ inputs.CC }} && ${{ inputs.CC }} --version || true
|
||||
which ${{ inputs.CXX }} && ${{ inputs.CXX }} --version || true
|
||||
|
||||
echo
|
||||
echo "==== Previous cache stats ===="
|
||||
ccache -s || true
|
||||
|
||||
echo
|
||||
echo "==== Top cache results ===="
|
||||
grep -o 'result: .*' "$CCACHE_DIR/cache.debug" 2>/dev/null | sort | uniq -c | sort -nr | head || true
|
||||
|
||||
- name: reset ccache stats
|
||||
shell: bash
|
||||
run: ccache -z || true
|
||||
|
||||
- name: Configure
|
||||
shell: bash
|
||||
run: |
|
||||
set -x
|
||||
mkdir build
|
||||
cd build
|
||||
cmake "$GITHUB_WORKSPACE" \
|
||||
-DCMAKE_C_COMPILER="${{ inputs.CC }}" \
|
||||
-DCMAKE_CXX_COMPILER="${{ inputs.CXX }}" \
|
||||
-DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/env/dist" \
|
||||
-DAPPS_BUILD="all" \
|
||||
-DTOOLS_BUILD=${{ inputs.tools }} \
|
||||
-DSCRIPTS="static" \
|
||||
-DMODULES="static" \
|
||||
-DWITH_WARNINGS="ON" \
|
||||
-DCMAKE_BUILD_TYPE="Release" \
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \
|
||||
-DCMAKE_C_COMPILER_LAUNCHER="ccache" \
|
||||
-DCMAKE_C_FLAGS="-Werror ${{ startsWith(inputs.CC, 'clang') && '-ferror-limit=' || '-fmax-errors=' }}${{inputs.maxerrors}} -fdebug-prefix-map=${GITHUB_WORKSPACE}=." \
|
||||
-DCMAKE_CXX_FLAGS="-Werror ${{ startsWith(inputs.CXX, 'clang') && '-ferror-limit=' || '-fmax-errors=' }}${{inputs.maxerrors}} -fdebug-prefix-map=${GITHUB_WORKSPACE}=." \
|
||||
-DBUILD_TESTING="ON" \
|
||||
-DUSE_SCRIPTPCH=${{ inputs.pch == 'true' && 'ON' || '' }} \
|
||||
-DUSE_COREPCH=${{ inputs.pch == 'true' && 'ON' || '' }} \
|
||||
${{ inputs.pch == 'true' && '' || '-DNOPCH=true' }}
|
||||
|
||||
- name: build
|
||||
shell: bash
|
||||
working-directory: "${{ github.workspace }}/build"
|
||||
run: |
|
||||
# '--' passes '--keep-going' to the underlying build system (make)
|
||||
cmake --build . --config "Release" -j "$(($(nproc) + 2))" ${{ inputs.keepgoing == 'true' && '-- --keep-going' || '' }}
|
||||
|
||||
- name: install
|
||||
shell: bash
|
||||
working-directory: "${{ github.workspace }}/build"
|
||||
run: cmake --install . --config "Release"
|
||||
|
||||
- name: Setup config
|
||||
shell: bash
|
||||
run: |
|
||||
ls -1 env/dist/etc/*.conf.dist | while read -r dist; do
|
||||
# chop the ".dist" off the end
|
||||
config_name="$(<<< $dist rev | cut -f1 -d\. --complement | rev)"
|
||||
cp -v "$dist" "$config_name"
|
||||
done
|
||||
|
||||
cat <<EOF >> $GITHUB_ENV
|
||||
AC_LOGIN_DATABASE_INFO=localhost;3306;root;root;acore_auth
|
||||
AC_CHARACTER_DATABASE_INFO=localhost;3306;root;root;acore_characters
|
||||
AC_WORLD_DATABASE_INFO=localhost;3306;root;root;acore_world
|
||||
AC_DATA_DIR=env/dist/data
|
||||
AC_LOGS_DIR=env/dist/logs
|
||||
EOF
|
||||
|
||||
- name: get dbc files
|
||||
shell: bash
|
||||
run: |
|
||||
git clone --depth 1 --branch master --single-branch https://github.com/ac-data/ac-data.git "$AC_DATA_DIR"
|
||||
|
||||
- name: Start MySQL container
|
||||
shell: bash
|
||||
run: sudo systemctl start mysql.service
|
||||
|
||||
- name: Dry run authserver
|
||||
shell: bash
|
||||
run: timeout 5m env/dist/bin/authserver --dry-run
|
||||
|
||||
- name: Dry run worldserver
|
||||
shell: bash
|
||||
run: timeout 5m env/dist/bin/worldserver --dry-run
|
||||
|
||||
- name: Check startup errors
|
||||
shell: bash
|
||||
run: |
|
||||
error_log="$AC_LOGS_DIR/Errors.log"
|
||||
# -s checks if the file's size is greater than 0 bytes
|
||||
# ! -s checks if the file's size is less than/equal to 0 bytes
|
||||
# if the error log is empty, exit without error
|
||||
[[ ! -s "$error_log" ]] && exit 0
|
||||
printf "The Errors.log file contains startup errors:\n\n"
|
||||
cat "$error_log"
|
||||
printf "\nPlease solve the startup errors listed above!\n"
|
||||
exit 1
|
||||
|
||||
- name: Run unit tests
|
||||
shell: bash
|
||||
run: |
|
||||
if [[ -f build/obj/src/test/unit_tests ]]; then
|
||||
build/obj/src/test/unit_tests
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
|
||||
- name: ccache stats
|
||||
shell: bash
|
||||
run: ccache -s || true
|
||||
59
.github/labeler.yml
vendored
Normal file
59
.github/labeler.yml
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
file-cpp:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- 'src/**/*.cpp'
|
||||
- 'src/**/*.h'
|
||||
- 'deps/**/*.cpp'
|
||||
- 'deps/**/*.h'
|
||||
|
||||
DB:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: 'data/**/*.sql'
|
||||
|
||||
CORE:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- 'src/*'
|
||||
- 'src/common/**/*'
|
||||
- 'src/genrev/**/*'
|
||||
- 'src/server/*'
|
||||
- 'src/server/apps/**/*'
|
||||
- 'src/server/database/**/*'
|
||||
- 'src/server/game/**/*'
|
||||
- 'src/server/shared/**/*'
|
||||
- 'src/tools/**/*'
|
||||
|
||||
Script:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- 'src/server/scripts/**/*.cpp'
|
||||
- 'src/server/scripts/**/*.h'
|
||||
|
||||
UnitTests:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: 'src/test/**/*'
|
||||
|
||||
Documentation:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: '**/*.md'
|
||||
|
||||
Bash:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- '*.sh'
|
||||
- 'apps/**/*.sh'
|
||||
- 'conf/**/*.sh'
|
||||
- 'deps/**/*.sh'
|
||||
- 'modules/**/*.sh'
|
||||
|
||||
CMake:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: '**/*.cmake'
|
||||
|
||||
Workflow:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: '.github/workflows/*'
|
||||
|
||||
Batch:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: 'apps/**/*.bat'
|
||||
106
.github/workflows/add-to-project.yml
vendored
Normal file
106
.github/workflows/add-to-project.yml
vendored
Normal file
@@ -0,0 +1,106 @@
|
||||
name: Auto Assign to Project(s)
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened, labeled]
|
||||
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
jobs:
|
||||
assign_one_project:
|
||||
runs-on: ubuntu-latest
|
||||
name: Assign to One Project
|
||||
steps:
|
||||
|
||||
- name: Assign issues with `ChromieCraft Generic` label to their project
|
||||
uses: srggrs/assign-one-project-github-action@1.2.1
|
||||
if: |
|
||||
contains(github.event.issue.labels.*.name, 'ChromieCraft Generic')
|
||||
with:
|
||||
project: 'https://github.com/azerothcore/azerothcore-wotlk/projects/20'
|
||||
|
||||
- name: Assign issues with `1-19` label to their project
|
||||
uses: srggrs/assign-one-project-github-action@1.2.1
|
||||
if: |
|
||||
contains(github.event.issue.labels.*.name, '1-19')
|
||||
with:
|
||||
project: 'https://github.com/azerothcore/azerothcore-wotlk/projects/14'
|
||||
|
||||
- name: Assign issues with `20-29` label to their project
|
||||
uses: srggrs/assign-one-project-github-action@1.2.1
|
||||
if: |
|
||||
contains(github.event.issue.labels.*.name, '20-29')
|
||||
with:
|
||||
project: 'https://github.com/azerothcore/azerothcore-wotlk/projects/17'
|
||||
|
||||
- name: Assign issues with `30-39` label to their project
|
||||
uses: srggrs/assign-one-project-github-action@1.2.1
|
||||
if: |
|
||||
contains(github.event.issue.labels.*.name, '30-39')
|
||||
with:
|
||||
project: 'https://github.com/azerothcore/azerothcore-wotlk/projects/23'
|
||||
|
||||
- name: Assign issues with `40-49` label to their project
|
||||
uses: srggrs/assign-one-project-github-action@1.2.1
|
||||
if: |
|
||||
contains(github.event.issue.labels.*.name, '40-49')
|
||||
with:
|
||||
project: 'https://github.com/azerothcore/azerothcore-wotlk/projects/24'
|
||||
|
||||
- name: Assign issues with `50-59` label to their project
|
||||
uses: srggrs/assign-one-project-github-action@1.2.1
|
||||
if: |
|
||||
contains(github.event.issue.labels.*.name, '50-59')
|
||||
with:
|
||||
project: 'https://github.com/azerothcore/azerothcore-wotlk/projects/25'
|
||||
|
||||
- name: Assign issues with `60` label to their project
|
||||
uses: srggrs/assign-one-project-github-action@1.2.1
|
||||
if: |
|
||||
contains(github.event.issue.labels.*.name, '60')
|
||||
with:
|
||||
project: 'https://github.com/azerothcore/azerothcore-wotlk/projects/22'
|
||||
|
||||
- name: Assign issues with `61-64` label to their project
|
||||
uses: srggrs/assign-one-project-github-action@1.2.1
|
||||
if: |
|
||||
contains(github.event.issue.labels.*.name, '61-64')
|
||||
with:
|
||||
project: 'https://github.com/azerothcore/azerothcore-wotlk/projects/32'
|
||||
|
||||
- name: Assign issues with `65-69` label to their project
|
||||
uses: srggrs/assign-one-project-github-action@1.2.1
|
||||
if: |
|
||||
contains(github.event.issue.labels.*.name, '65-69')
|
||||
with:
|
||||
project: 'https://github.com/azerothcore/azerothcore-wotlk/projects/36'
|
||||
|
||||
- name: Assign issues with `70` label to their project
|
||||
uses: srggrs/assign-one-project-github-action@1.2.1
|
||||
if: |
|
||||
contains(github.event.issue.labels.*.name, '70')
|
||||
with:
|
||||
project: 'https://github.com/azerothcore/azerothcore-wotlk/projects/26'
|
||||
|
||||
- name: Assign issues with `71-74` label to their project
|
||||
uses: srggrs/assign-one-project-github-action@1.2.1
|
||||
if: |
|
||||
contains(github.event.issue.labels.*.name, '71-74')
|
||||
with:
|
||||
project: 'https://github.com/azerothcore/azerothcore-wotlk/projects/33'
|
||||
|
||||
- name: Assign issues with `75-79` label to their project
|
||||
uses: srggrs/assign-one-project-github-action@1.2.1
|
||||
if: |
|
||||
contains(github.event.issue.labels.*.name, '75-79')
|
||||
with:
|
||||
project: 'https://github.com/azerothcore/azerothcore-wotlk/projects/37'
|
||||
|
||||
- name: Assign issues with `80` label to their project
|
||||
uses: srggrs/assign-one-project-github-action@1.2.1
|
||||
if: |
|
||||
contains(github.event.issue.labels.*.name, '80')
|
||||
with:
|
||||
project: 'https://github.com/azerothcore/azerothcore-wotlk/projects/38'
|
||||
|
||||
35
.github/workflows/codestyle.yml
vendored
Normal file
35
.github/workflows/codestyle.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
name: C++ Codestyle
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
paths:
|
||||
- src/**
|
||||
- "!README.md"
|
||||
- "!docs/**"
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-latest
|
||||
name: C++
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.10'
|
||||
- name: AzerothCore codestyle
|
||||
run: python ./apps/codestyle/codestyle-cpp.py
|
||||
- name: C++ Advanced
|
||||
run: |
|
||||
sudo apt update -y
|
||||
sudo apt install -y cppcheck
|
||||
cppcheck --force --inline-suppr --suppressions-list=./.suppress.cppcheck src/ --output-file=report.txt
|
||||
|
||||
if [ -s report.txt ]; then # if file is not empty
|
||||
cat report.txt
|
||||
exit 1 # let github action fails
|
||||
fi
|
||||
54
.github/workflows/core-build-nopch.yml
vendored
Normal file
54
.github/workflows/core-build-nopch.yml
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
name: nopch-build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
|
||||
concurrency:
|
||||
# One concurrency group per workflow + ref.
|
||||
#
|
||||
# - PRs use `refs/pull/<PR_NUMBER>/merge`, so new commits cancel older
|
||||
# in-progress runs for the same PR.
|
||||
# - When a PR is merged, a push to the target branch starts a new group,
|
||||
# canceling any still-running PR CI.
|
||||
# - Branch pushes are isolated by ref.
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-22.04
|
||||
compiler:
|
||||
CC: clang-15
|
||||
CXX: clang++-15
|
||||
- os: ubuntu-24.04
|
||||
compiler:
|
||||
CC: clang-18
|
||||
CXX: clang++-18
|
||||
- os: ubuntu-24.04
|
||||
compiler:
|
||||
CC: gcc-14
|
||||
CXX: g++-14
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }}-${{ matrix.compiler.CC }}-nopch
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./.github/actions/linux-build
|
||||
with:
|
||||
CC: ${{ matrix.compiler.CC }}
|
||||
CXX: ${{ matrix.compiler.CXX }}
|
||||
pch: false
|
||||
50
.github/workflows/core-build-pch.yml
vendored
Normal file
50
.github/workflows/core-build-pch.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
name: pch-build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
|
||||
concurrency:
|
||||
# One concurrency group per workflow + ref.
|
||||
#
|
||||
# - PRs use `refs/pull/<PR_NUMBER>/merge`, so new commits cancel older
|
||||
# in-progress runs for the same PR.
|
||||
# - When a PR is merged, a push to the target branch starts a new group,
|
||||
# canceling any still-running PR CI.
|
||||
# - Branch pushes are isolated by ref.
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-22.04
|
||||
compiler:
|
||||
CC: clang-15
|
||||
CXX: clang++-15
|
||||
- os: ubuntu-24.04
|
||||
compiler:
|
||||
CC: clang-18
|
||||
CXX: clang++-18
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }}-${{ matrix.compiler.CC }}-pch
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./.github/actions/linux-build
|
||||
with:
|
||||
CC: ${{ matrix.compiler.CC }}
|
||||
CXX: ${{ matrix.compiler.CXX }}
|
||||
pch: true
|
||||
64
.github/workflows/core_modules_build.yml
vendored
Normal file
64
.github/workflows/core_modules_build.yml
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
name: nopch-module-build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
paths:
|
||||
- 'src/*'
|
||||
- 'src/common/**/*'
|
||||
- 'src/genrev/**/*'
|
||||
- 'src/server/*'
|
||||
- 'src/server/apps/**/*'
|
||||
- 'src/server/database/**/*'
|
||||
- 'src/server/game/**/*'
|
||||
- 'src/server/shared/**/*'
|
||||
- 'src/tools/**/*'
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
# One concurrency group per workflow + ref.
|
||||
#
|
||||
# - PRs use `refs/pull/<PR_NUMBER>/merge`, so new commits cancel older
|
||||
# in-progress runs for the same PR.
|
||||
# - When a PR is merged, a push to the target branch starts a new group,
|
||||
# canceling any still-running PR CI.
|
||||
# - Branch pushes are isolated by ref.
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build-modules:
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-24.04
|
||||
compiler:
|
||||
CC: clang-18
|
||||
CXX: clang++-18
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }}-${{ matrix.compiler.CC }}-nopch-modules
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
# This script installs a general list of modules to compile with
|
||||
# azerothcore. This is useful for ensuring that module compilation
|
||||
# functionality works.
|
||||
- name: Checkout modules
|
||||
run: bash -x ./apps/ci/ci-install-modules.sh
|
||||
- uses: ./.github/actions/linux-build
|
||||
with:
|
||||
CC: ${{ matrix.compiler.CC }}
|
||||
CXX: ${{ matrix.compiler.CXX }}
|
||||
modules: true
|
||||
pch: false
|
||||
maxerrors: 0
|
||||
keepgoing: true
|
||||
286
.github/workflows/dashboard-ci.yml
vendored
Normal file
286
.github/workflows/dashboard-ci.yml
vendored
Normal file
@@ -0,0 +1,286 @@
|
||||
name: Dashboard CI
|
||||
description: |
|
||||
This workflow runs tests and builds for the AzerothCore dashboard.
|
||||
It includes testing of bash scripts and integration testing of the AzerothCore server.
|
||||
Do not remove this if something is broken here and you don't know how to fix it, ping Yehonal instead.
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
# One concurrency group per workflow + ref.
|
||||
#
|
||||
# - PRs use `refs/pull/<PR_NUMBER>/merge`, so new commits cancel older
|
||||
# in-progress runs for the same PR.
|
||||
# - When a PR is merged, a push to the target branch starts a new group,
|
||||
# canceling any still-running PR CI.
|
||||
# - Branch pushes are isolated by ref.
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
contents: read
|
||||
|
||||
env:
|
||||
CONTINUOUS_INTEGRATION: true
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
|
||||
jobs:
|
||||
test-bash-scripts:
|
||||
name: Test Bash Scripts
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-24.04
|
||||
runs-on: ${{ matrix.os }}
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Install requirements
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# Install bats-core >= 1.5.0 to support bats_require_minimum_version
|
||||
sudo apt-get install -y git curl
|
||||
git clone --depth 1 https://github.com/bats-core/bats-core.git /tmp/bats-core
|
||||
sudo /tmp/bats-core/install.sh /usr/local
|
||||
bats --version
|
||||
./acore.sh install-deps
|
||||
|
||||
- name: Run bash script tests for ${{ matrix.test-module }}
|
||||
env:
|
||||
TERM: xterm-256color
|
||||
run: |
|
||||
./acore.sh test bash --tap --all
|
||||
|
||||
build-and-test:
|
||||
name: Build and Integration Test
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-24.04
|
||||
runs-on: ${{ matrix.os }}
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Install ccache
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y ccache
|
||||
ccache --version
|
||||
|
||||
# Detect the compilers that acore.sh / CMake will end up using.
|
||||
# We record both the binary name and a short version tag for the cache key.
|
||||
- name: Detect compiler
|
||||
id: detect
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
CC_BIN="${CC:-}"
|
||||
CXX_BIN="${CXX:-}"
|
||||
[[ -z "$CC_BIN" ]] && CC_BIN="$(command -v clang || command -v gcc)"
|
||||
[[ -z "$CXX_BIN" ]] && CXX_BIN="$(command -v clang++ || command -v g++)"
|
||||
|
||||
make_ver_id() {
|
||||
local bin="$1"; local base="$(basename "$bin")"
|
||||
case "$base" in
|
||||
clang)
|
||||
maj="$("$bin" -dumpversion 2>/dev/null | cut -d. -f1)"; [[ -z "$maj" ]] && maj="$( "$bin" --version | sed -n 's/.*version \([0-9][0-9]*\).*/\1/p' | head -1 )"
|
||||
echo "clang-${maj:-unknown}"
|
||||
;;
|
||||
clang++)
|
||||
maj="$("$bin" -dumpversion 2>/dev/null | cut -d. -f1)"; [[ -z "$maj" ]] && maj="$( "$bin" --version | sed -n 's/.*version \([0-9][0-9]*\).*/\1/p' | head -1 )"
|
||||
echo "clang++-${maj:-unknown}"
|
||||
;;
|
||||
gcc)
|
||||
maj="$("$bin" -dumpfullversion -dumpversion 2>/dev/null || "$bin" -dumpversion 2>/dev/null)"; maj="${maj%%.*}"
|
||||
echo "gcc-${maj:-unknown}"
|
||||
;;
|
||||
g++)
|
||||
maj="$("$bin" -dumpfullversion -dumpversion 2>/dev/null || "$bin" -dumpversion 2>/dev/null)"; maj="${maj%%.*}"
|
||||
echo "g++-${maj:-unknown}"
|
||||
;;
|
||||
*)
|
||||
echo "$base"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
echo "cc_id=$(make_ver_id "$CC_BIN")" >> "$GITHUB_OUTPUT"
|
||||
echo "cxx_id=$(make_ver_id "$CXX_BIN")" >> "$GITHUB_OUTPUT"
|
||||
echo "Detected: $CC_BIN, $CXX_BIN"
|
||||
|
||||
- name: Prepare ccache dir
|
||||
shell: bash
|
||||
run: mkdir -p "${{ github.workspace }}/var/ccache"
|
||||
|
||||
- name: Echo cache key
|
||||
shell: bash
|
||||
run: echo "Cache key -> ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:${{ github.ref_name }}"
|
||||
|
||||
- name: Restore ccache
|
||||
id: restore_ccache
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: ${{ github.workspace }}/var/ccache
|
||||
key: ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:${{ github.ref_name }}
|
||||
restore-keys: |
|
||||
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:true:pch=false:
|
||||
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:false:pch=false:
|
||||
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:true:pch=true:
|
||||
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:false:pch=true:
|
||||
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:true:
|
||||
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:false:
|
||||
ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:
|
||||
|
||||
- name: Setup ccache env
|
||||
shell: bash
|
||||
env:
|
||||
CCACHE_DIR: ${{ github.workspace }}/var/ccache
|
||||
run: |
|
||||
mkdir -p "$CCACHE_DIR"
|
||||
cat <<EOF >> "$GITHUB_ENV"
|
||||
CCACHE_BASEDIR=${{ github.workspace }}
|
||||
CCACHE_DIR=${{ github.workspace }}/var/ccache
|
||||
CCACHE_HASHDIR=1
|
||||
CCACHE_MAXSIZE=5G
|
||||
CCACHE_SLOPPINESS=pch_defines,time_macros,include_file_mtime
|
||||
CCACHE_COMPRESS=1
|
||||
CCACHE_COMPRESSLEVEL=9
|
||||
CCACHE_COMPILERCHECK=content
|
||||
CCACHE_LOGFILE=${{ github.workspace }}/var/ccache/cache.debug
|
||||
CMAKE_C_COMPILER_LAUNCHER=ccache
|
||||
CMAKE_CXX_COMPILER_LAUNCHER=ccache
|
||||
EOF
|
||||
|
||||
- name: ccache snapshot (before)
|
||||
shell: bash
|
||||
run: |
|
||||
echo "==== Effective ccache configuration ===="
|
||||
ccache -p | egrep 'base_dir|hash_dir|compiler_check|sloppiness|max_size' || true
|
||||
echo
|
||||
echo "==== Previous cache stats ===="
|
||||
ccache -s || true
|
||||
echo
|
||||
echo "==== Top cache results (from prior runs) ===="
|
||||
grep -o 'result: .*' "${{ github.workspace }}/var/ccache/cache.debug" 2>/dev/null | sort | uniq -c | sort -nr | head || true
|
||||
|
||||
- name: Reset ccache stats
|
||||
shell: bash
|
||||
run: ccache -z || true
|
||||
|
||||
- name: Configure AzerothCore settings
|
||||
run: |
|
||||
touch conf/config.sh
|
||||
echo 'MTHREADS=4' >> conf/config.sh
|
||||
echo 'CBUILD_TESTING=ON' >> conf/config.sh
|
||||
echo 'AC_ENABLE_ROOT_CMAKE_INSTALL=1' >> conf/config.sh
|
||||
echo 'export AC_CONFIG_POLICY=$AC_CONFIG_POLICY_PRESET_ZERO_CONF' >> conf/config.sh
|
||||
echo 'AC_ENABLE_CONF_COPY_ON_INSTALL=0' >> conf/config.sh
|
||||
cat conf/config.sh
|
||||
|
||||
# debug content of AC_CONFIG_POLICY
|
||||
./acore.sh config show AC_CONFIG_POLICY
|
||||
|
||||
- name: Test module commands
|
||||
run: |
|
||||
./acore.sh module install mod-autobalance
|
||||
./acore.sh module install mod-duel-reset
|
||||
|
||||
./acore.sh module list
|
||||
|
||||
./acore.sh module install --all
|
||||
./acore.sh module update mod-autobalance
|
||||
./acore.sh module update --all
|
||||
|
||||
- name: Run complete installation (deps, compile, database, client-data)
|
||||
run: |
|
||||
# This runs: install-deps, compile, database setup, client-data download
|
||||
./acore.sh init
|
||||
sudo npm install -g pm2
|
||||
timeout-minutes: 120
|
||||
|
||||
- name: Test module removal
|
||||
run: |
|
||||
./acore.sh module remove mod-autobalance
|
||||
./acore.sh module list
|
||||
./acore.sh module remove mod-duel-reset
|
||||
./acore.sh module list
|
||||
|
||||
- name: Run core tests
|
||||
run: |
|
||||
./acore.sh test core
|
||||
|
||||
- name: Test authserver dry-run
|
||||
run: |
|
||||
source ./acore.sh config load
|
||||
cd env/dist/bin
|
||||
timeout 5m ./authserver -dry-run
|
||||
continue-on-error: false
|
||||
|
||||
- name: Test worldserver dry-run
|
||||
run: |
|
||||
source ./acore.sh config load
|
||||
cd env/dist/bin
|
||||
timeout 5m ./worldserver -dry-run
|
||||
continue-on-error: false
|
||||
|
||||
|
||||
- name: Test worldserver with startup scripts
|
||||
run: |
|
||||
./acore.sh sm create world worldserver --bin-path ./env/dist/bin --provider pm2
|
||||
./acore.sh sm show-config worldserver
|
||||
./acore.sh sm start worldserver
|
||||
./acore.sh sm wait-uptime worldserver 10 300
|
||||
./acore.sh sm send worldserver "account create tester password 3"
|
||||
./acore.sh sm send worldserver "account set gm tester 3"
|
||||
./acore.sh sm send worldserver "account set addon tester 1"
|
||||
./acore.sh sm wait-uptime worldserver 10 300
|
||||
./acore.sh sm stop worldserver
|
||||
./acore.sh sm delete worldserver
|
||||
timeout-minutes: 30
|
||||
continue-on-error: false
|
||||
|
||||
- name: Test authserver with startup scripts
|
||||
run: |
|
||||
./acore.sh sm create auth authserver --bin-path ./env/dist/bin --provider pm2
|
||||
./acore.sh sm show-config authserver
|
||||
./acore.sh sm start authserver
|
||||
./acore.sh sm wait-uptime authserver 10 300
|
||||
./acore.sh sm stop authserver
|
||||
./acore.sh sm delete authserver
|
||||
timeout-minutes: 30
|
||||
continue-on-error: false
|
||||
|
||||
# save only if we didn't hit the cache
|
||||
- name: Save ccache
|
||||
if: steps.restore_ccache.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: ${{ github.workspace }}/var/ccache
|
||||
key: ccache:${{ runner.os }}:${{ steps.detect.outputs.cc_id }}_${{ steps.detect.outputs.cxx_id }}:${{ github.ref_name }}
|
||||
|
||||
- name: ccache stats (after)
|
||||
shell: bash
|
||||
run: ccache -s || true
|
||||
127
.github/workflows/docker_build.yml
vendored
Normal file
127
.github/workflows/docker_build.yml
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
name: docker-build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
pull_request:
|
||||
types:
|
||||
- labeled
|
||||
- synchronize
|
||||
|
||||
concurrency:
|
||||
# One concurrency group per workflow + ref.
|
||||
#
|
||||
# - PRs use `refs/pull/<PR_NUMBER>/merge`, so new commits cancel older
|
||||
# in-progress runs for the same PR.
|
||||
# - When a PR is merged, a push to the target branch starts a new group,
|
||||
# canceling any still-running PR CI.
|
||||
# - Branch pushes are isolated by ref.
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
COMPOSE_DOCKER_CLI_BUILD: 1
|
||||
DOCKER_BUILDKIT: 1
|
||||
RUNNING_ON_PRIMARY_BRANCH: |
|
||||
${{ (github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master') && 'true' || 'false' }}
|
||||
|
||||
jobs:
|
||||
build-containers:
|
||||
runs-on: "ubuntu-latest"
|
||||
if: |
|
||||
github.repository == 'azerothcore/azerothcore-wotlk'
|
||||
&& !github.event.pull_request.draft
|
||||
&& (github.ref_name == 'master' || contains(github.event.pull_request.labels.*.name, 'run-build') || github.event.label.name == 'run-build')
|
||||
steps:
|
||||
- name: Free up disk space
|
||||
run: |
|
||||
sudo rm -rf /usr/local/lib/android
|
||||
sudo rm -rf /usr/share/dotnet
|
||||
sudo rm -rf /opt/ghc
|
||||
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
# The containers created in this workflow are used by
|
||||
# acore-docker, which has a dependency on mod-ale.
|
||||
#
|
||||
# If you're wanting containers without mod-ale, the best solution is to
|
||||
# build them locally (such as with `docker compose build`)
|
||||
- name: Download Eluna
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master'
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: azerothcore/mod-ale
|
||||
path: modules/mod-ale
|
||||
|
||||
- name: Login to Docker Hub
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master'
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Get version
|
||||
id: version
|
||||
run: |
|
||||
version="$(jq -r '.version' acore.json)"
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: build worldserver
|
||||
uses: ./.github/actions/docker-tag-and-build
|
||||
with:
|
||||
component-name: worldserver
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
push: ${{ env.RUNNING_ON_PRIMARY_BRANCH }}
|
||||
|
||||
- name: build authserver
|
||||
uses: ./.github/actions/docker-tag-and-build
|
||||
with:
|
||||
component-name: authserver
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
push: ${{ env.RUNNING_ON_PRIMARY_BRANCH }}
|
||||
|
||||
- name: build db-import
|
||||
uses: ./.github/actions/docker-tag-and-build
|
||||
with:
|
||||
component-name: db-import
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
push: ${{ env.RUNNING_ON_PRIMARY_BRANCH }}
|
||||
|
||||
- name: build client-data
|
||||
uses: ./.github/actions/docker-tag-and-build
|
||||
with:
|
||||
component-name: client-data
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
push: ${{ env.RUNNING_ON_PRIMARY_BRANCH }}
|
||||
|
||||
- name: build tools
|
||||
uses: ./.github/actions/docker-tag-and-build
|
||||
with:
|
||||
component-name: tools
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
push: ${{ env.RUNNING_ON_PRIMARY_BRANCH }}
|
||||
|
||||
- name: build dev-server
|
||||
uses: ./.github/actions/docker-tag-and-build
|
||||
with:
|
||||
component-name: dev
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
push: ${{ env.RUNNING_ON_PRIMARY_BRANCH }}
|
||||
dockerfile: apps/docker/Dockerfile.dev-server
|
||||
|
||||
- name: Trigger acore-docker CI
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master'
|
||||
uses: peter-evans/repository-dispatch@v2
|
||||
with:
|
||||
token: ${{ secrets.ACORE_DOCKER_REPO_ACCESS_TOKEN }}
|
||||
repository: azerothcore/acore-docker
|
||||
event-type: azerothcore-new-images
|
||||
client-payload: >
|
||||
{
|
||||
"ref": "${{ github.ref_name }}",
|
||||
"sha": "${{ github.sha }}"
|
||||
}
|
||||
49
.github/workflows/import_pending.yml
vendored
Normal file
49
.github/workflows/import_pending.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
name: import-pending
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
import-pending:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
runs-on: ubuntu-24.04
|
||||
permissions: write-all
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
# If we're fetching all the history in a later step it makes sense to
|
||||
# pre-load it now
|
||||
fetch-depth: 0
|
||||
ref: ${{ github.ref_name }}
|
||||
|
||||
- uses: denoland/setup-deno@v1
|
||||
with:
|
||||
# Specifies latest 1.x
|
||||
deno-version: "~1.0"
|
||||
|
||||
- name: Import and commit pending sql
|
||||
run: |
|
||||
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
||||
git config --local user.name "github-actions[bot]"
|
||||
# Get the latest changes from git
|
||||
git pull --rebase origin "${{ github.ref_name }}"
|
||||
bash bin/acore-db-pendings
|
||||
deno run --allow-all --unstable apps/ci/ci-pending-changelogs.ts
|
||||
git add -A .
|
||||
git commit -am "chore(DB): import pending files" -m "Referenced commit(s): ${GITHUB_SHA}" || true
|
||||
env:
|
||||
# Noting that the branch name can only be master, as per the event
|
||||
# triggering this action
|
||||
BRANCH: ${{ github.ref_name }}
|
||||
|
||||
- name: Push changes
|
||||
uses: ad-m/github-push-action@master
|
||||
with:
|
||||
github_token: ${{ secrets.AC_GITHUB_TOKEN }}
|
||||
# Noting that the branch name can only be master, as per the event
|
||||
# triggering this action
|
||||
branch: ${{ github.ref_name }}
|
||||
16
.github/workflows/issue-labeler.yml
vendored
Normal file
16
.github/workflows/issue-labeler.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
name: "Issue Labeler"
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
issue_labeler:
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
runs-on: ubuntu-latest
|
||||
name: Issue Labeler
|
||||
steps:
|
||||
- name: Issue Labeler
|
||||
id: issue-labeler
|
||||
uses: azerothcore/GitHub-Actions@issue-labeler-1.0.2
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
53
.github/workflows/macos_build.yml
vendored
Normal file
53
.github/workflows/macos_build.yml
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
name: macos-build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
pull_request:
|
||||
types:
|
||||
- labeled
|
||||
- synchronize
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }})
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
macos-build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- macos-14
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }}
|
||||
if: |
|
||||
github.repository == 'azerothcore/azerothcore-wotlk'
|
||||
&& !github.event.pull_request.draft
|
||||
&& (github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'run-build') || github.event.label.name == 'run-build')
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Cache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/Library/Caches/ccache
|
||||
key: ccache:${{ matrix.os }}:${{ github.ref_name }}
|
||||
restore-keys: |
|
||||
ccache:${{ matrix.os }}:${{ github.ref_name }}
|
||||
ccache:${{ matrix.os }}
|
||||
- name: reset ccache stats
|
||||
shell: bash
|
||||
run: ccache -z || true
|
||||
- name: Install latest bash
|
||||
run: brew install bash
|
||||
- name: Configure OS
|
||||
run: source ./acore.sh install-deps
|
||||
- name: Build
|
||||
run: source ./apps/ci/mac/ci-compile.sh
|
||||
- name: ccache stats
|
||||
shell: bash
|
||||
run: ccache -s || true
|
||||
19
.github/workflows/pr_labeler.yml
vendored
Normal file
19
.github/workflows/pr_labeler.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
name: PR Labeler
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, synchronize, reopened, ready_for_review] # Ready for Review = Draft to Live PR
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-24.04
|
||||
permissions: write-all
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: true
|
||||
- uses: actions/labeler@v5
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
configuration-path: .github/labeler.yml
|
||||
sync-labels: false # true = Removes ALL current labels before adding the labels | false = Only adds the Labels
|
||||
25
.github/workflows/sql-codestyle.yml
vendored
Normal file
25
.github/workflows/sql-codestyle.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name: SQL Codestyle
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
paths:
|
||||
- data/**
|
||||
- "!README.md"
|
||||
- "!docs/**"
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-latest
|
||||
name: SQL
|
||||
if: github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.10'
|
||||
- name: AzerothCore codestyle
|
||||
run: python ./apps/codestyle/codestyle-sql.py
|
||||
45
.github/workflows/tools_build.yml
vendored
Normal file
45
.github/workflows/tools_build.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
name: tools
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
pull_request:
|
||||
types:
|
||||
- labeled
|
||||
- synchronize
|
||||
|
||||
concurrency:
|
||||
# One concurrency group per workflow + ref.
|
||||
#
|
||||
# - PRs use `refs/pull/<PR_NUMBER>/merge`, so new commits cancel older
|
||||
# in-progress runs for the same PR.
|
||||
# - When a PR is merged, a push to the target branch starts a new group,
|
||||
# canceling any still-running PR CI.
|
||||
# - Branch pushes are isolated by ref.
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-24.04
|
||||
compiler:
|
||||
CC: clang-18
|
||||
CXX: clang++-18
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }}-${{ matrix.compiler.CC }}
|
||||
if: |
|
||||
github.repository == 'azerothcore/azerothcore-wotlk'
|
||||
&& !github.event.pull_request.draft
|
||||
&& (github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'run-build') || github.event.label.name == 'run-build')
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./.github/actions/linux-build
|
||||
with:
|
||||
CC: ${{ matrix.compiler.CC }}
|
||||
CXX: ${{ matrix.compiler.CXX }}
|
||||
tools: all
|
||||
pch: false
|
||||
50
.github/workflows/windows_build.yml
vendored
Normal file
50
.github/workflows/windows_build.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
name: windows-build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
pull_request:
|
||||
types:
|
||||
- labeled
|
||||
- synchronize
|
||||
|
||||
concurrency:
|
||||
# One concurrency group per workflow + ref.
|
||||
#
|
||||
# - PRs use `refs/pull/<PR_NUMBER>/merge`, so new commits cancel older
|
||||
# in-progress runs for the same PR.
|
||||
# - When a PR is merged, a push to the target branch starts a new group,
|
||||
# canceling any still-running PR CI.
|
||||
# - Branch pushes are isolated by ref.
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
windows-build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [windows-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }}
|
||||
env:
|
||||
BOOST_ROOT: C:\local\boost_1_82_0
|
||||
if: |
|
||||
github.repository == 'azerothcore/azerothcore-wotlk'
|
||||
&& !github.event.pull_request.draft
|
||||
&& (github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'run-build') || github.event.label.name == 'run-build')
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2.13
|
||||
- name: Configure OS
|
||||
shell: bash
|
||||
env:
|
||||
CONTINUOUS_INTEGRATION: true
|
||||
run: |
|
||||
./acore.sh install-deps
|
||||
- name: Build
|
||||
shell: bash
|
||||
run: |
|
||||
export CTOOLS_BUILD=all
|
||||
./acore.sh compiler build
|
||||
Reference in New Issue
Block a user