eqemu-server/.drone.yml
2023-01-20 14:24:25 -06:00

205 lines
5.2 KiB
YAML

---
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