diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml new file mode 100644 index 00000000000..3486f44ea68 --- /dev/null +++ b/.github/workflows/c-cpp.yml @@ -0,0 +1,82 @@ +name: C/C++ CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + compiler: [gcc-8, g++-8] + + services: + mariadb: + image: mariadb:latest + ports: + - 3306 + env: + MYSQL_USER: ragnarok + MYSQL_PASSWORD: ragnarok + MYSQL_DATABASE: ragnarok + MYSQL_ROOT_PASSWORD: ragnarok + options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=5 + + env: + DB_ROOT: root + DB_HOST: 127.0.0.1 + DB_NAME: ragnarok + DB_USER: ragnarok + DB_PASS: ragnarok + + steps: + - uses: actions/checkout@v2 + + - run: | + sudo apt update + sudo apt install gcc-8 g++-8 + shell: bash + + - name: start mysql + run: | + sudo /etc/init.d/mysql start + + - name: uname -a + run: uname -a + + - name: sql import + run: ./tools/ci/sql.sh + env: + DB_ROOT: ${{ env.DB_ROOT }} + DB_NAME: ${{ env.DB_NAME }} + DB_USER: ${{ env.DB_USER }} + DB_PASS: ${{ env.DB_PASS }} + + - name: configure + run: ./configure --enable-prere=no --enable-vip=no --enable-buildbot=yes + env: + CC: gcc-8 + CXX: g++-8 + + - name: npc setup + run: ./tools/ci/npc.sh + + - name: make clean + run: make clean + + - name: make server + run: make server + + - name: login server + run: ./login-server --run-once + + - name: char server + run: ./char-server --run-once + + - name: map server + run: ./map-server --run-once diff --git a/tools/ci/sql.sh b/tools/ci/sql.sh index d0f0918c91b..0339e3b9709 100755 --- a/tools/ci/sql.sh +++ b/tools/ci/sql.sh @@ -5,28 +5,28 @@ function aborterror { exit 1 } -mysql -u $DB_ROOT -e "CREATE DATABASE $DB_NAME;" || aborterror "Unable to create database." -mysql -u $DB_ROOT $DB_NAME < sql-files/main.sql || aborterror "Unable to import main database." -mysql -u $DB_ROOT $DB_NAME < sql-files/logs.sql || aborterror "Unable to import logs database." -mysql -u $DB_ROOT $DB_NAME < sql-files/item_cash_db.sql || aborterror "Unable to import cash item table." -mysql -u $DB_ROOT $DB_NAME < sql-files/item_cash_db2.sql || aborterror "Unable to import cash item 2 table." -mysql -u $DB_ROOT $DB_NAME < sql-files/item_db.sql || aborterror "Unable to import pre-renewal item table structure." -mysql -u $DB_ROOT $DB_NAME < sql-files/item_db_usable.sql || aborterror "Unable to import pre-renewal usable item table." -mysql -u $DB_ROOT $DB_NAME < sql-files/item_db_equip.sql || aborterror "Unable to import pre-renewal equip item table." -mysql -u $DB_ROOT $DB_NAME < sql-files/item_db_etc.sql || aborterror "Unable to import pre-renewal etc item table." -mysql -u $DB_ROOT $DB_NAME < sql-files/item_db2.sql || aborterror "Unable to import pre-renewal item 2 table." -mysql -u $DB_ROOT $DB_NAME < sql-files/item_db_re.sql || aborterror "Unable to import renewal item table structure." -mysql -u $DB_ROOT $DB_NAME < sql-files/item_db_re_usable.sql || aborterror "Unable to import renewal usable item table." -mysql -u $DB_ROOT $DB_NAME < sql-files/item_db_re_equip.sql || aborterror "Unable to import renewal equip item table." -mysql -u $DB_ROOT $DB_NAME < sql-files/item_db_re_etc.sql || aborterror "Unable to import renewal etc item table." -mysql -u $DB_ROOT $DB_NAME < sql-files/item_db2_re.sql || aborterror "Unable to import renewal item 2 table." -mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db.sql || aborterror "Unable to import pre-renewal monster table." -mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db2.sql || aborterror "Unable to import pre-renewal monster 2 table." -mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db_re.sql || aborterror "Unable to import renewal monster table." -mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db2_re.sql || aborterror "Unable to import renewal monster 2 table." -mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db.sql || aborterror "Unable to import pre-renewal monster skill table." -mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db2.sql || aborterror "Unable to import pre-renewal monster skill 2 table." -mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db_re.sql || aborterror "Unable to import renewal monster skill table." -mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db2_re.sql || aborterror "Unable to import renewal monster skill 2 table." -mysql -u $DB_ROOT $DB_NAME < sql-files/roulette_default_data.sql || aborterror "Unable to import roulette table." -mysql -u $DB_ROOT -e "GRANT SELECT,INSERT,UPDATE,DELETE ON $DB_NAME.* TO '$DB_USER'@'$DB_HOST' IDENTIFIED BY '$DB_PASS';" +mysql -h 127.0.0.1 -u $DB_ROOT -e "CREATE DATABASE $DB_NAME;" || aborterror "Unable to create database $DB_NAME." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/main.sql || aborterror "Unable to import main database." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/logs.sql || aborterror "Unable to import logs database." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/item_cash_db.sql || aborterror "Unable to import cash item table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/item_cash_db2.sql || aborterror "Unable to import cash item 2 table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/item_db.sql || aborterror "Unable to import pre-renewal item table structure." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/item_db_usable.sql || aborterror "Unable to import pre-renewal usable item table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/item_db_equip.sql || aborterror "Unable to import pre-renewal equip item table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/item_db_etc.sql || aborterror "Unable to import pre-renewal etc item table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/item_db2.sql || aborterror "Unable to import pre-renewal item 2 table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/item_db_re.sql || aborterror "Unable to import renewal item table structure." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/item_db_re_usable.sql || aborterror "Unable to import renewal usable item table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/item_db_re_equip.sql || aborterror "Unable to import renewal equip item table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/item_db_re_etc.sql || aborterror "Unable to import renewal etc item table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/item_db2_re.sql || aborterror "Unable to import renewal item 2 table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/mob_db.sql || aborterror "Unable to import pre-renewal monster table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/mob_db2.sql || aborterror "Unable to import pre-renewal monster 2 table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/mob_db_re.sql || aborterror "Unable to import renewal monster table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/mob_db2_re.sql || aborterror "Unable to import renewal monster 2 table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db.sql || aborterror "Unable to import pre-renewal monster skill table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db2.sql || aborterror "Unable to import pre-renewal monster skill 2 table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db_re.sql || aborterror "Unable to import renewal monster skill table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db2_re.sql || aborterror "Unable to import renewal monster skill 2 table." +mysql -h 127.0.0.1 -u $DB_ROOT $DB_NAME < sql-files/roulette_default_data.sql || aborterror "Unable to import roulette table." +mysql -h 127.0.0.1 -u $DB_ROOT -e "GRANT SELECT,INSERT,UPDATE,DELETE ON $DB_NAME.* TO '$DB_USER'@'$DB_HOST' IDENTIFIED BY '$DB_PASS';"