diff options
-rw-r--r-- | .gitmodules | 6 | ||||
-rw-r--r-- | .travis.yml | 32 | ||||
-rw-r--r-- | conf/.gitignore | 1 | ||||
-rw-r--r-- | conf/monitor_athena.conf | 82 | ||||
-rw-r--r-- | conf/monitor_local.conf.example | 1 | ||||
-rw-r--r-- | conf/tmwa-monitor.conf | 6 | ||||
-rwxr-xr-x | git/hooks/post-merge | 17 |
7 files changed, 145 insertions, 0 deletions
diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..4e0e37ab --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "client-data"] + path = client-data + url = git://github.com/themanaworld/tmwa-client-data.git +[submodule "tools"] + path = tools + url = git://github.com/themanaworld/tmw-tools.git diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..a2cea500 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,32 @@ +sudo: false +dist: trusty +language: c +compiler: clang + +addons: + apt: + packages: + - zlibc + +env: + - UPDATE_DIR=../../../public UPDATE_HTTP=none + +script: + - mkdir public + - make updates + - make news + - cp -v world/map/news.txt public/ + - cp -v world/map/news.html public/ + - cp -v world/map/news.rss public/ + - cp -v world/map/news.json public/ + - echo '<title>static update server</title><a href="TMW.zip">TMW.zip</a><br><a href="TMW-music.zip">TMW-music.zip</a><br><a href="news.txt">news.txt</a><br><a href="resources.xml">resources.xml</a>' > public/index.html + +deploy: + provider: pages + skip-cleanup: true + github-token: $GITHUB_TOKEN # Set in travis-ci.org dashboard, marked secure + keep-history: false + local-dir: public + target-branch: gh-pages + on: + branch: stable diff --git a/conf/.gitignore b/conf/.gitignore new file mode 100644 index 00000000..2c43e911 --- /dev/null +++ b/conf/.gitignore @@ -0,0 +1 @@ +/*_local.conf diff --git a/conf/monitor_athena.conf b/conf/monitor_athena.conf new file mode 100644 index 00000000..68fe65f6 --- /dev/null +++ b/conf/monitor_athena.conf @@ -0,0 +1,82 @@ +// Athena Monitor configuration file. + +////////////////////////////////////////////////////////////////////// +// Some notes about the existence of this file: +// +// tmwa-monitor is unused in its current form, but plans are +// to resurrect it in *some* form. See below for what we do use. +// However, an alternative possibility would be to just install config +// files to integrate with some existing daemon-monitoring tool. +// +// THAT SAID, blindly restarting a server that exited in an unknown +// way is a really great way to get unrecoverable savefile corruption. +// For this reason, we only auto-restart the map server, which only +// persists some unimportant global variables such as high scores. +// Besides, the other servers are stable enough that they rarely crash. +// +// This monitor names three "server"s, but they are just arbitrary. +// This is not enough for the case of multiple worlds, +// and is too much for the case of worlds running as different users. +// +// Currently the server variables are pointing to local shell scripts +// (which are themselves deprecated and print a flashing message), +// which is necessary because the actual servers need to be run inside +// the appropriate dir to read conf and read/write savefiles from/to +// the correct location. This will get better once savefiles get put +// in $localstatedir (i.e. /var), but it's not yet known how that +// should interact with multiple worlds running at the same time. +// +// Likely, however, this will depend on the ability to pass a config +// file as an argument to the servers. +// +// The workdir setting would make a lot more sense if this file was +// installed in $sysconfdir (i.e. /etc) by tmwa's `make install`, +// which is still planned but hasn't happened yet, but makes *less* +// sense if the servers install their config there. +// +// And regardless, we need to allow per-server workdirs, including +// multiple instances, and possible pre/post scripts and exit/signal +// status handlers. But all that seems complicated, leading back to +// "shouldn't we just use an existing daemon manager?". +// +// Alternatively, we could act like an XDG application, which is +// admittedly somewhat odd if you're a daemon, but would at least +// clarify what happens if you run the servers as a user (which we +// do always. When an init script is written, it should run as +// somebody other than root!). +// +////////////////////////////////////////////////////////////////////// +// +// What we actually use instead of tmwa-monitor: +// +// On the main server, we run a tmux session, with one window +// for each server and for each bot. The servers are run directly +// from inside the appropriate directory. +// +// The test server is like the main server without bots, but instead +// of running `tmwa-map` directly, we use the tmwa-map-wrapper script +// from tools/, which restarts the server whenever it exits and merges +// tagged patches from github, except that it does no merges if the +// server exited too quickly after the restart. +// +// On local dev machines, we usually use the `./run-all` script from +// this repo. +// +////////////////////////////////////////////////////////////////////// + + +// Binary to use with message "forked login server". +login_server: ./login-server + +// Binary to use with message "forked char server". +char_server: ./char-server + +// Binary to use with message "forked map server". +map_server: ./map-server + +// Directory in which to run the servers. +// If never set, dynamically computed as $HOME/tmwserver +//workdir: /path/to/tmwa-server-data + +// local settings for this nonserver in this file +import: conf/monitor_local.conf diff --git a/conf/monitor_local.conf.example b/conf/monitor_local.conf.example new file mode 100644 index 00000000..32d168db --- /dev/null +++ b/conf/monitor_local.conf.example @@ -0,0 +1 @@ +// Athena Monitor local configuration file. diff --git a/conf/tmwa-monitor.conf b/conf/tmwa-monitor.conf new file mode 100644 index 00000000..db630d47 --- /dev/null +++ b/conf/tmwa-monitor.conf @@ -0,0 +1,6 @@ +// Master config file for The Mana World Athena (monitor component) +// This file is used since version 14.x.y, but major changes in 15.x.y + +// tmwa-monitor is deprecated, see comments in the below file + +monitor_conf: conf/monitor_athena.conf diff --git a/git/hooks/post-merge b/git/hooks/post-merge new file mode 100755 index 00000000..8a8b6bfc --- /dev/null +++ b/git/hooks/post-merge @@ -0,0 +1,17 @@ +#!/bin/sh +# Copy or symlink this into your .git/hooks directory. +# E.g., from the top: +# ln -s ../../git/hooks/post-merge .git/hooks +# or cp git/hooks/post-merge .git/hooks +# It may also be beneficial to install as a post-checkout hook + +# If we have local changes in the submodule, rebase or merge them +# (rebase is better but dangerous in some circumstances) +# git submodule update --rebase +git submodule update --merge +make news + +# WARNING: to people with push access. +# it is essential that changes to the client data be pushed before changes to server data +# Also, you may find this useful: (you should always clone using the git:// url) +# git config --global url.git@github.com:.pushInsteadOf git://github.com |