atrooney-online-2/.gitlab-ci.yml
2020-05-22 19:35:49 -05:00

246 lines
5.9 KiB
YAML

stages:
- build
- deploy
- publish
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- lib/
variables:
DEBIAN_FRONTEND: noninteractive
before_script:
- echo Current working directory is $(pwd)
build linux x86_64:
image: ubuntu
stage: build
tags:
- docker
- linux
script:
# Install dependencies
- apt-get update
- >
apt-get install --no-install-recommends -y qt5-default qtmultimedia5-dev
clang make git sudo curl ca-certificates pkg-config upx unzip xz-utils
- git submodule init
- git submodule update
# Print versions
- qmake --version
- clang --version
# Extract BASS
#- mkdir bass
#- cd bass
#- curl http://www.un4seen.com/files/bass24-linux.zip -o bass.zip
#- unzip bass.zip
#- cp x64/libbass.so ../lib
#- curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip
#- unzip bassopus.zip
#- cp x64/libbassopus.so ../lib
#- cd ..
# Extract Discord RPC
- mkdir discord-rpc
- cd discord-rpc
- curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-linux.zip -o discord_rpc_linux.zip
- unzip discord_rpc_linux.zip
- cp discord-rpc/linux-dynamic/lib/libdiscord-rpc.so ../lib
- cd ..
# Extract QtApng
- mkdir qtapng
- cd qtapng
- curl -L https://github.com/Skycoder42/QtApng/releases/download/1.1.0-5/build_gcc_64_5.12.0.tar.xz -o apng.tar.xz
- tar -xvf apng.tar.xz
- cp gcc_64/plugins/imageformats/libqapng.so ../lib
- cd ..
# Build
- qmake -spec linux-clang "DEFINES += DISCORD QTAUDIO"
- make -j4
# Post-processing
- upx --lzma -9 --force bin/Attorney_Online
artifacts:
paths:
- bin/
build windows i686:
image: ${CI_REGISTRY_IMAGE}/builder-windows-i686
stage: build
tags:
- docker
- linux
script:
# Install dependencies
- apt-get update
- apt-get install --no-install-recommends -y make curl ca-certificates upx unzip
- git submodule init
- git submodule update
# Print versions
- /opt/mxe/usr/${TARGET_SPEC}/qt5/bin/qmake --version
# Extract BASS
- mkdir bass
- cd bass
- curl http://www.un4seen.com/files/bass24.zip -o bass.zip
- unzip bass.zip
- cp bass.dll ../lib
- curl http://www.un4seen.com/files/bassopus24.zip -o bassopus.zip
- unzip bassopus.zip
- cp bassopus.dll ../lib
- cd ..
# Extract QtApng
# - mkdir qtapng
# - cd qtapng
# - curl -L https://github.com/Skycoder42/QtApng/releases/download/1.1.2-2/qtapng_mingw73_32_5.13.0.zip -o apng.zip
# - unzip apng.zip
# - mkdir ../lib/imageformats
# - cp mingw73_32/plugins/imageformats/qapng.dll ../lib/imageformats/
# - cd ..
- ls lib
# Build
- /opt/mxe/usr/${TARGET_SPEC}/qt5/bin/qmake "DEFINES += DISCORD BASSAUDIO"
- make -j4
# Post-processing
- upx --lzma -9 --force bin/Attorney_Online.exe
artifacts:
paths:
- bin/
# Base folder
.deploy_base: &deploy_base |
mkdir base
mkdir base/themes
cp -a ../base/themes/default base/themes/
cp -a ../base/config.ini base/config.sample.ini
cp -a ../base/serverlist.txt base/serverlist.sample.txt
# Miscellaneous files
.deploy_misc: &deploy_misc |
cp -a ../README.md README.md.txt
cp -a ../LICENSE.MIT LICENSE.txt
deploy linux x86_64:
stage: deploy
dependencies:
- build linux x86_64
tags:
- docker
- linux
script:
- mkdir artifact
- cd artifact
- *deploy_base
- *deploy_misc
# Platform-specific
- cp -a ../lib/* .
- cp -a ../bin/Attorney_Online .
- echo "#!/bin/sh" >> ./run.sh
- echo "LD_LIBRARY_PATH=.:\$LD_LIBRARY_PATH ./Attorney_Online" >> ./run.sh
- chmod +x ./run.sh
# Zipping
# zip -r -9 -l Attorney_Online_$(git describe --tags)_linux_x86_64.zip .
- mkdir ../zip
- tar cavf ../zip/Attorney_Online_$(git describe --tags)_linux_x64.tar.xz *
- sha1sum ../zip/*
artifacts:
paths:
- zip/
deploy windows i686:
image: ubuntu
stage: deploy
dependencies:
- build windows i686
tags:
- docker
- linux
script:
- apt-get update
- apt-get install --no-install-recommends -y zip git
- mkdir artifact
- cd artifact
- *deploy_base
- *deploy_misc
# Platform-specific
- cp -a ../lib/*.dll .
- mkdir imageformats
- 'cp -a ../lib/imageformats/*.dll imageformats/ || :'
- cp -a ../bin/Attorney_Online.exe .
# Zipping
# -r: recursive; -9: max compression; -l: convert to CR LF
- mkdir ../zip
- zip -r -9 -l ../zip/Attorney_Online_$(git describe --tags)_windows_x86.zip .
- sha1sum ../zip/*
artifacts:
paths:
- zip/
# How to publish to S3/Wasabi:
# - Ensure the following variables have been populated in the CI/CD settings:
# - S3_ACCESS_KEY, S3_SECRET_KEY
# - S3_MANIFESTS, S3_ARCHIVES
# - Select "Run Pipeline" on the Pipelines menu on GitLab.
# - Select the version you want to release.
# - Set the following variables:
# - MANIFEST: program_winnt_i386.json
# - ARCHIVE_FULL: ao-X.Y.Z-win32.zip
# - VERSION: X.Y.Z
# - EXECUTABLE: Attorney_Online_X.Y.Z.exe
# - Run the pipeline to completion.
# (See scripts/wasabi.sh)
publish linux x86_64:
image: ubuntu
stage: publish
dependencies:
- deploy linux x86_64
when: manual
script:
- apt-get update
- apt-get install --no-install-recommends -y git nodejs npm awscli
- cd scripts
- npm install
- cd ..
- cd zip
- ../scripts/wasabi_program.sh
variables:
MANIFEST: program_linux_x86_64.json
ARTIFACT_SUFFIX: linux_x64.tar.xz
publish windows i686:
image: ubuntu
stage: publish
dependencies:
- deploy windows i686
when: manual
script:
- apt-get update
- apt-get install --no-install-recommends -y git nodejs npm awscli
- cd scripts
- npm install
- cd ..
- cd zip
- ../scripts/wasabi_program.sh
variables:
MANIFEST: program_winnt_i386.json
ARTIFACT_SUFFIX: windows_x86.zip