stages: - build - deploy - publish cache: key: ${CI_COMMIT_REF_SLUG} variables: DEBIAN_FRONTEND: noninteractive before_script: - echo Current working directory is $(pwd) build linux x86_64: image: ubuntu:18.04 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 -o bass.zip - cp x64/libbass.so ../lib - curl http://www.un4seen.com/files/bassmidi24-linux.zip -o bassmidi.zip - unzip -o bassmidi.zip - cp x64/libbassmidi.so ../lib - curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip - unzip -o 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 -o 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 QtApng - git clone https://github.com/Skycoder42/QtApng - cd QtApng - qmake -spec linux-clang # Don't make examples - they're not compatible with Qt 5.9 - make -j4 sub-src #- make sub-src-install_subtargets - cp plugins/imageformats/libqapng.so ../lib - cd .. # Build - qmake -spec linux-clang "DEFINES += DISCORD" - make -j4 # Post-processing - upx --lzma -9 --force bin/Attorney_Online artifacts: paths: - lib/ - 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 -o bass.zip - cp bass.dll ../lib - curl http://www.un4seen.com/files/bassmidi24.zip -o bassmidi.zip - unzip -o bassmidi.zip - cp bassmidi.dll ../lib - curl http://www.un4seen.com/files/bassopus24.zip -o bassopus.zip - unzip -o 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" - make -j4 # Post-processing - upx --lzma -9 --force bin/Attorney_Online.exe artifacts: paths: - lib/ - bin/ # Base folder .deploy_base: &deploy_base | cp -a ../base/ base/ rm -rf base/themes/_Unadapted/ rm base/themes/.gitattributes base/themes/.git # 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