version: 2 jobs: codestyle_and_sql: docker: - image: trinitycore/circle-ci:cata_classic-base-22.04 auth: username: $DOCKERHUB_USERNAME password: $DOCKERHUB_PASSWORD - image: cimg/mysql:8.0 auth: username: $DOCKERHUB_USERNAME password: $DOCKERHUB_PASSWORD environment: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_ROOT_PASSWORD: '' MYSQL_DATABASE: test_mysql steps: - run: name: Checkout command: | /scripts/checkout.sh - run: name: Codestyle checks command: | chmod +x contrib/check_codestyle.sh ./contrib/check_codestyle.sh - run: name: SQL checks command: | chmod +x contrib/check_updates.sh dockerize -wait tcp://127.0.0.1:3306 -timeout 120s mysql -h 127.0.0.1 -uroot < sql/create/create_mysql.sql mysql -h 127.0.0.1 -uroot auth < sql/base/auth_database.sql ./contrib/check_updates.sh auth cata_classic auth 127.0.0.1 mysql -h 127.0.0.1 -uroot characters < sql/base/characters_database.sql ./contrib/check_updates.sh characters cata_classic characters 127.0.0.1 echo "Importing world database structure" mysql -h 127.0.0.1 -uroot world < sql/base/dev/world_database.sql echo "Importing hotfixes database structure" mysql -h 127.0.0.1 -uroot hotfixes < sql/base/dev/hotfixes_database.sql echo "Importing world database updates" cat sql/updates/world/cata_classic/*.sql | mysql -h 127.0.0.1 -uroot world echo "Importing hotfixes database updates" cat sql/updates/hotfixes/cata_classic/*.sql | mysql -h 127.0.0.1 -uroot hotfixes pch: docker: - image: trinitycore/circle-ci:cata_classic-base-22.04 auth: username: $DOCKERHUB_USERNAME password: $DOCKERHUB_PASSWORD steps: - run: name: Checkout command: | /scripts/checkout.sh - run: name: Setup command: | if [ "$DOCKERHUB_PUSH_IMAGES" == "TRUE" ]; then export CMAKE_BUILD_TYPE=Release else export CMAKE_BUILD_TYPE=Debug fi cmake -S . -B ./bin -DWITH_WARNINGS=1 -DWITH_WARNINGS_AS_ERRORS=1 -DWITH_COREDEBUG=0 -DUSE_COREPCH=1 -DUSE_SCRIPTPCH=1 -DTOOLS=1 -DSCRIPTS=static -DSERVERS=1 -DNOJEM=0 -DCMAKE_C_FLAGS_DEBUG="-DNDEBUG" -DCMAKE_CXX_FLAGS_DEBUG="-DNDEBUG" -DCMAKE_INSTALL_PREFIX=bin/check_install -DCMAKE_INSTALL_RPATH=\$ORIGIN/../lib -DBUILD_TESTING=1 - run: name: Build command: | cd bin make -j 4 -k && make install - run: name: Unit tests command: | cd bin make test - run: name: Check executables command: | cd bin/check_install/bin ./bnetserver --version ./worldserver --version - setup_remote_docker: version: default - run: name: Create docker images command: | cd bin/check_install cp -r ../../contrib/Docker/* . cp -r ../../sql ./sql image_prefix=$(echo $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME | tr '[:upper:]' '[:lower:]') echo $image_prefix docker build --file Dockerfile --force-rm --tag $image_prefix:$CIRCLE_SHA1 --tag $image_prefix:$(echo $CIRCLE_BRANCH | tr '/' '-' | tr '[:upper:]' '[:lower:]') . docker save $image_prefix | gzip > ../../docker.tar.gz if [ "$DOCKERHUB_PUSH_IMAGES" == "TRUE" ]; then if [ "$CIRCLE_BRANCH" == "3.3.5" ] || [ "$CIRCLE_BRANCH" == "master" ] || [ "$CIRCLE_BRANCH" == "wotlk_classic" ] || [ "$CIRCLE_BRANCH" == "cata_classic" ]; then docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD echo "Pushing docker image to dockerhub" docker push --all-tags $image_prefix fi fi - store_artifacts: path: docker.tar.gz nopch: docker: - image: trinitycore/circle-ci:cata_classic-base-22.04 auth: username: $DOCKERHUB_USERNAME password: $DOCKERHUB_PASSWORD steps: - run: name: Requirements command: | sudo mkdir -p /root/.ccache sudo chown -Rv circleci:circleci /root - run: name: Checkout command: | /scripts/checkout.sh - restore_cache: keys: - cata_classic-nopch-{{ .Branch }}-{{ .Revision }} - cata_classic-nopch-{{ .Branch }} - cata_classic-nopch-cata_classic - run: name: Setup command: | export CCACHE_MAXSIZE="1G" export CC="ccache clang" export CXX="ccache clang++" export CMAKE_BUILD_TYPE=Debug export CCACHE_CPP2=yes export USE_CCACHE=1 export PATH=/usr/lib/ccache:$PATH export CCACHE_DIR=$HOME/.ccache ccache -z ccache -s git config user.email "circleci@build.bot" && git config user.name "Circle CI" $CXX --version cmake -S . -B ./bin -DWITH_WARNINGS=1 -DWITH_WARNINGS_AS_ERRORS=1 -DWITH_COREDEBUG=0 -DUSE_COREPCH=0 -DUSE_SCRIPTPCH=0 -DTOOLS=1 -DSCRIPTS=dynamic -DSERVERS=1 -DNOJEM=0 -DCMAKE_C_FLAGS_DEBUG="-DNDEBUG" -DCMAKE_CXX_FLAGS_DEBUG="-DNDEBUG" -DCMAKE_INSTALL_PREFIX=bin/check_install - run: name: Build command: | cd bin make -j 4 -k && make install ccache -s cd check_install/bin ./bnetserver --version ./worldserver --version - save_cache: key: cata_classic-nopch-{{ .Branch }}-{{ .Revision }} paths: - /home/circleci/.ccache workflows: version: 2 build_all: jobs: - codestyle_and_sql - pch - nopch