--- kind: pipeline type: docker name: EQEmulator Server Linux CI # Limits how many of these builds can run on the drone runner at a time, this isn't about cores concurrency: limit: 1 volumes: - name: cache host: path: /var/lib/cache-debug steps: - name: server-build # Source build script https://github.com/Akkadius/akk-stack/blob/master/containers/eqemu-server/Dockerfile#L20 image: akkadius/eqemu-server:v11 commands: - sudo chown eqemu:eqemu /drone/src/ * -R - sudo chown eqemu:eqemu /home/eqemu/.ccache/ * -R - git submodule init && git submodule update && mkdir -p build && cd build && cmake -DEQEMU_BUILD_TESTS=ON -DEQEMU_BUILD_LOGIN=ON -DEQEMU_BUILD_LUA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="-O0 -g -DNDEBUG" -G 'Unix Makefiles' .. && make -j$((`nproc`-4)) - curl https://raw.githubusercontent.com/Akkadius/eqemu-install-v2/master/eqemu_config.json --output eqemu_config.json - ./bin/tests volumes: - name: cache path: /home/eqemu/.ccache/ # remove this when merge trigger: branch: - noop event: - push --- kind: pipeline type: docker name: Check If Release # Limits how many of these builds can run on the drone runner at a time, this isn't about cores concurrency: limit: 1 steps: - name: Init image: akkadius/eqemu-server:v11 commands: - if [ $(curl -s "https://api.github.com/repos/eqemu/server/tags" | jq -r '.[0].name' | sed 's/v//') = $(cat package.json | jq -r '.version') ]; then echo "Version tag is same as latest release exiting build"; exit 1; else echo "Local version different from remote, building..."; fi trigger: branch: - akkadius/build-test event: - push --- kind: pipeline type: docker name: Build Linux Binaries # Limits how many of these builds can run on the drone runner at a time, this isn't about cores concurrency: limit: 1 volumes: - name: cache host: path: /var/lib/cache-release steps: - name: Init image: akkadius/eqemu-server:v11 commands: - sudo chown eqemu:eqemu /drone/src/ * -R - sudo chown eqemu:eqemu /home/eqemu/.ccache/ * -R - git submodule init && git submodule update volumes: - name: cache path: /home/eqemu/.ccache/ - name: Linux x64 image: akkadius/eqemu-server:v11 commands: - mkdir -p build && cd build && cmake -DEQEMU_BUILD_TESTS=ON -DEQEMU_BUILD_LOGIN=ON -DEQEMU_BUILD_LUA=ON -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="-Os" -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -G 'Unix Makefiles' .. && make -j$((`nproc`-4)) - curl https://raw.githubusercontent.com/Akkadius/eqemu-install-v2/master/eqemu_config.json --output eqemu_config.json - ./bin/tests volumes: - name: cache path: /home/eqemu/.ccache/ - name: Package Artifact image: akkadius/eqemu-server:v11 commands: - rm ./build/bin/*.a - zip -j eqemu-server-linux-x64.zip ./build/bin/* - ls -lsh | grep zip volumes: - name: cache path: /home/eqemu/.ccache/ - name: Upload Artifact image: akkadius/eqemu-build-releaser:v2 environment: RCLONE_CONFIG_REMOTE_TYPE: ftp RCLONE_FTP_HOST: drone.akkadius.com RCLONE_FTP_USER: artifacts RCLONE_FTP_PASS: from_secret: RCLONE_FTP_PASS commands: - rclone config create remote ftp env_auth true > /dev/null - | rclone copy eqemu-server-linux-x64.zip remote: - | rclone ls remote: trigger: branch: - akkadius/build-test event: - push depends_on: - Check If Release --- kind: pipeline type: exec name: Build Windows Binaries platform: os: windows arch: amd64 steps: - name: init commands: - git submodule init - git submodule update - name: Windows x64 commands: - utils/scripts/build/windows-build.ps1 - name: Package Artifact commands: - utils/scripts/build/package-artifacts.ps1 - dir *.zip - name: Upload Artifact environment: RCLONE_CONFIG_REMOTE_TYPE: ftp RCLONE_FTP_HOST: drone.akkadius.com RCLONE_FTP_USER: artifacts RCLONE_FTP_PASS: from_secret: RCLONE_FTP_PASS commands: - rclone config create remote ftp env_auth true - | rclone copy eqemu-server-windows-x64.zip remote: - | rclone ls remote: trigger: branch: - akkadius/build-test event: - push depends_on: - Check If Release --- kind: pipeline type: docker name: Publish Artifacts to Github steps: - name: Upload Artifacts image: akkadius/eqemu-build-releaser:v3 environment: RCLONE_CONFIG_REMOTE_TYPE: ftp RCLONE_FTP_HOST: drone.akkadius.com RCLONE_FTP_USER: artifacts RCLONE_FTP_PASS: from_secret: RCLONE_FTP_PASS GH_RELEASE_GITHUB_API_TOKEN: from_secret: GH_RELEASE_GITHUB_API_TOKEN commands: - rclone config create remote ftp env_auth true > /dev/null - | rclone copy remote: --include "eqemu-server*.zip" . - gh-release --assets=eqemu-server-linux-x64.zip,eqemu-server-windows-x64.zip -y - | rclone delete remote: --include "eqemu-server*.zip" depends_on: - Check If Release - Build Windows Binaries - Build Linux Binaries trigger: branch: - akkadius/build-test event: - push