Clementine-audio-player-Mac.../.circleci/config.yml

779 lines
20 KiB
YAML
Raw Normal View History

2019-10-02 16:27:54 +02:00
version: 2.1
2019-10-02 16:26:30 +02:00
commands:
2019-10-03 12:45:39 +02:00
cmake:
description: Configure build
steps:
- run:
name: cmake
command: cmake ..
working_directory: bin
build_source_tarball:
description: Build source tarball
steps:
- run:
name: Build source tarball
command: ../dist/maketarball.sh
working_directory: bin
build_rpm:
description: Build RPM
steps:
- run:
name: Create rpmbuild directory
command: mkdir -p ~/rpmbuild/SOURCES
- run:
name: Move source tarball
command: mv clementine-*.tar.xz ~/rpmbuild/SOURCES
working_directory: bin
- run:
name: Build RPM
command: rpmbuild -ba ../dist/clementine.spec
working_directory: bin
2019-10-02 16:26:30 +02:00
cmake_debian:
description: Configure build
parameters:
distribution:
type: string
default: xenial
arch:
type: string
default: amd64
steps:
- run:
name: cmake
command: >
cmake ..
-DWITH_DEBIAN=ON
-DDEB_ARCH=<< parameters.arch >>
-DDEB_DIST=<< parameters.distribution >>
-DFORCE_GIT_VERSION=
-DENABLE_SPOTIFY_BLOB=OFF
working_directory: bin
make_deb:
description: Build deb
steps:
- run:
name: make deb
command: make -j2 deb
2019-10-02 16:26:30 +02:00
working_directory: bin
copy_artifacts:
description: Copy build artifacts
2019-10-02 17:56:37 +02:00
parameters:
build:
type: string
default: ubuntu-xenial
steps:
- run:
2019-10-02 18:17:06 +02:00
name: Create artifact output directory
2019-10-02 19:03:49 +02:00
command: mkdir -p /tmp/artifacts/<< parameters.build >>
2019-10-02 17:56:37 +02:00
- run:
2019-10-02 18:17:06 +02:00
name: Copy deb to artifacts directory
command: cp bin/clementine_*.deb /tmp/artifacts/<< parameters.build >>/
- persist_to_workspace:
2019-10-04 14:55:52 +02:00
root: /tmp/artifacts
paths:
2019-10-04 14:55:52 +02:00
- << parameters.build >>/*
- store_artifacts:
path: /tmp/artifacts/<< parameters.build >>
2019-10-03 12:45:39 +02:00
copy_rpm_artifacts:
description: Copy build artifcats
parameters:
build:
type: string
default: fedora-29
steps:
- run:
name: Create artifact output directory
command: mkdir -p /tmp/artifacts/<< parameters.build >>
- run:
name: Copy RPM to artifacts directory
command: cp ~/rpmbuild/RPMS/*/clementine-*.rpm /tmp/artifacts/<< parameters.build >>
- persist_to_workspace:
2019-10-04 14:55:52 +02:00
root: /tmp/artifacts
2019-10-03 12:45:39 +02:00
paths:
2019-10-04 14:55:52 +02:00
- << parameters.build >>/*
2019-10-03 12:45:39 +02:00
- store_artifacts:
path: /tmp/artifacts/<< parameters.build >>
2019-10-02 16:56:18 +02:00
install_bionic_dependencies:
description: Install Bionic dependencies
steps:
2019-11-13 20:09:06 +01:00
- run:
name: Use AWS Ubuntu mirror
command: >
sed -i /etc/apt/sources.list
-e 's#archive.ubuntu.com#us-east-2.ec2.archive.ubuntu.com#'
2019-10-02 16:56:18 +02:00
- run:
name: Install Dependencies
command: >
apt-get update && apt-get install -y
2019-10-04 18:23:59 +02:00
build-essential
2019-10-02 16:56:18 +02:00
cmake
gettext
git
2019-10-03 04:25:42 +02:00
libasound2-dev
2019-10-02 16:56:18 +02:00
libboost-dev
libcdio-dev
libchromaprint-dev
2019-10-03 04:25:42 +02:00
libdbus-1-dev
2019-10-02 16:56:18 +02:00
libfftw3-dev
libglew1.5-dev
2019-10-04 18:23:59 +02:00
libglib2.0-dev
2019-10-02 16:56:18 +02:00
libgpod-dev
libgstreamer-plugins-base1.0-dev
libgstreamer1.0-dev
libmtp-dev
libprotobuf-dev
libpulse-dev
2019-10-04 18:23:59 +02:00
libqt5x11extras5-dev
2019-10-02 16:56:18 +02:00
libsqlite3-dev
libtag1-dev
2019-10-04 18:23:59 +02:00
pkg-config
2019-10-02 16:56:18 +02:00
protobuf-compiler
2019-10-04 18:23:59 +02:00
qtbase5-dev
qttools5-dev-tools
qttools5-dev
libsparsehash-dev
2019-10-02 16:56:18 +02:00
ssh
2019-10-02 16:54:52 +02:00
install_disco_dependencies:
description: Install Disco dependencies
steps:
2019-11-11 23:11:47 +01:00
- run:
name: Setup ENV
command: |
echo 'export DEBIAN_FRONTEND=noninteractive' >> $BASH_ENV
source $BASH_ENV
2019-11-13 22:43:57 +01:00
- run:
name: Use AWS Ubuntu mirror
command: >
sed -i /etc/apt/sources.list
-e 's#archive.ubuntu.com#us-east-2.ec2.archive.ubuntu.com#'
2019-10-02 16:54:52 +02:00
- run:
name: Install Dependencies
command: >
apt-get update && apt-get install -y
cmake
fakeroot
gettext
git
2019-10-03 04:25:42 +02:00
libasound2-dev
2019-10-02 16:54:52 +02:00
libboost-dev
libboost-serialization-dev
libcdio-cdda2
libcdio-dev
libchromaprint-dev
libcrypto++-dev
2019-10-03 04:25:42 +02:00
libdbus-1-dev
2019-10-02 16:54:52 +02:00
libfftw3-dev
libglew1.5-dev
libgpod-dev
libgstreamer-plugins-base1.0-dev
libgstreamer1.0-dev
liblastfm-dev
libmtp-dev
libmygpo-qt-dev
libplist-dev
libprotobuf-dev
libpulse-dev
libqca2-dev
2019-10-02 17:29:44 +02:00
libqca2-plugins
2019-11-11 22:24:37 +01:00
libqt5x11extras5-dev
2019-10-02 16:54:52 +02:00
libqtwebkit-dev
libsparsehash-dev
libsqlite3-dev
libtag1-dev
libusbmuxd-dev
protobuf-compiler
2019-11-11 22:24:37 +01:00
qtbase5-dev
qttools5-dev-tools
qttools5-dev
2019-10-02 16:54:52 +02:00
ssh
2019-10-02 16:26:30 +02:00
2019-11-12 01:35:33 +01:00
install_eoan_dependencies:
description: Install Eoan dependencies
steps:
- run:
name: Setup ENV
command: |
echo 'export DEBIAN_FRONTEND=noninteractive' >> $BASH_ENV
source $BASH_ENV
2019-11-13 22:43:57 +01:00
- run:
name: Use AWS Ubuntu mirror
command: >
sed -i /etc/apt/sources.list
-e 's#archive.ubuntu.com#us-east-2.ec2.archive.ubuntu.com#'
2019-11-12 01:35:33 +01:00
- run:
name: Install Dependencies
command: >
apt-get update && apt-get install -y
cmake
fakeroot
gettext
git
libasound2-dev
libboost-dev
libboost-serialization-dev
libcdio-cdda2
libcdio-dev
libchromaprint-dev
libcrypto++-dev
libdbus-1-dev
libfftw3-dev
libglew1.5-dev
libgpod-dev
libgstreamer-plugins-base1.0-dev
libgstreamer1.0-dev
liblastfm5-dev
libmtp-dev
libmygpo-qt-dev
libplist-dev
libprotobuf-dev
libpulse-dev
libqca-qt5-2-dev
libqca-qt5-2-plugins
libqt5x11extras5-dev
libsparsehash-dev
libsqlite3-dev
libtag1-dev
libusbmuxd-dev
protobuf-compiler
qtbase5-dev
qttools5-dev-tools
qttools5-dev
ssh
2019-10-03 12:45:39 +02:00
install_fedora_dependencies:
description: Install Fedora Dependencies
steps:
- run:
name: Install Dependencies
command: >
dnf install --assumeyes
@development-tools
2019-11-11 22:40:17 +01:00
alsa-lib-devel
2019-10-03 12:45:39 +02:00
boost-devel
cmake
cryptopp-devel
2019-11-11 22:40:17 +01:00
dbus-devel
2019-10-03 12:45:39 +02:00
desktop-file-utils
fftw-devel
gcc-c++
gettext
git
glew-devel
gstreamer1-devel
gstreamer1-plugins-base-devel
2019-11-11 22:29:24 +01:00
hicolor-icon-theme
libappstream-glib
2019-10-03 12:45:39 +02:00
libcdio-devel
libchromaprint-devel
libgpod-devel
2019-11-11 22:29:24 +01:00
liblastfm-qt5-devel
2019-10-03 12:45:39 +02:00
libmtp-devel
2019-11-11 22:40:17 +01:00
libnotify-devel
2019-10-03 12:45:39 +02:00
openssh
2019-11-11 22:29:24 +01:00
pkgconfig
2019-10-03 12:45:39 +02:00
protobuf-compiler
protobuf-devel
pulseaudio-libs-devel
2019-11-11 22:24:37 +01:00
qca-qt5-devel
qca-qt5-ossl
qt5-devel
2019-10-03 12:45:39 +02:00
rpmdevtools
sha2-devel
sparsehash-devel
sqlite-devel
taglib-devel
tar
2019-10-04 14:39:00 +02:00
install_debian_dependencies:
description: Install Debian dependencies
2019-10-04 13:30:07 +02:00
steps:
- run:
name: Install Dependencies
command: >
apt-get update && apt-get install -y
build-essential
cmake
gettext
git
libasound2-dev
libboost-dev
libcdio-dev
libchromaprint-dev
libcrypto++-dev
libdbus-1-dev
libfftw3-dev
libglew1.5-dev
libglib2.0-dev
libgpod-dev
libgstreamer-plugins-base1.0-dev
libgstreamer1.0-dev
liblastfm-dev
libmtp-dev
libmygpo-qt-dev
libprotobuf-dev
libpulse-dev
2019-11-11 22:24:37 +01:00
libqt5x11extras5-dev
2019-10-04 13:30:07 +02:00
libsparsehash-dev
libsqlite3-dev
libtag1-dev
pkg-config
protobuf-compiler
2019-11-11 22:24:37 +01:00
qtbase5-dev
qttools5-dev-tools
qttools5-dev
2019-10-04 13:30:07 +02:00
ssh
2019-10-02 16:26:30 +02:00
jobs:
2019-10-02 16:42:20 +02:00
build_disco_64:
docker:
- image: ubuntu:disco
steps:
2019-10-02 16:54:52 +02:00
- install_disco_dependencies
2019-10-02 16:42:20 +02:00
- checkout
- cmake_debian:
distribution: disco
arch: amd64
- make_deb
- copy_artifacts:
build: ubuntu-disco
2019-10-02 16:42:20 +02:00
build_disco_32:
docker:
- image: i386/ubuntu:disco
steps:
2019-10-02 16:54:52 +02:00
- install_disco_dependencies
2019-10-02 16:42:20 +02:00
- checkout
- cmake_debian:
distribution: disco
arch: i386
- make_deb
- copy_artifacts:
build: ubuntu-disco
2019-10-02 16:42:20 +02:00
build_bionic_64:
docker:
- image: ubuntu:bionic
steps:
2019-10-02 16:56:18 +02:00
- install_bionic_dependencies
2019-10-02 16:42:20 +02:00
- checkout
- cmake_debian:
distribution: bionic
arch: amd64
- make_deb
- copy_artifacts:
build: ubuntu-bionic
2019-10-02 16:42:20 +02:00
build_bionic_32:
docker:
- image: i386/ubuntu:bionic
steps:
2019-10-02 16:56:18 +02:00
- install_bionic_dependencies
2019-10-02 16:42:20 +02:00
- checkout
- cmake_debian:
distribution: bionic
arch: i386
- make_deb
- copy_artifacts:
build: ubuntu-bionic
2019-10-02 16:42:20 +02:00
2019-11-12 01:35:33 +01:00
build_eoan_64:
docker:
- image: ubuntu:eoan
steps:
- install_eoan_dependencies
- checkout
- cmake_debian:
distribution: eoan
arch: amd64
- make_deb
- copy_artifacts:
build: ubuntu-eoan
build_eoan_32:
docker:
- image: i386/ubuntu:eoan
steps:
- install_eoan_dependencies
- checkout
- cmake_debian:
distribution: eoan
arch: i386
- make_deb
- copy_artifacts:
build: ubuntu-eoan
2019-10-04 13:30:07 +02:00
build_buster_64:
docker:
- image: debian:buster
steps:
2019-10-04 14:39:00 +02:00
- install_debian_dependencies
2019-10-04 13:30:07 +02:00
- checkout
- cmake_debian:
distribution: buster
arch: amd64
- make_deb
- copy_artifacts:
build: debian-buster
2019-10-04 14:39:00 +02:00
build_stretch_64:
docker:
- image: debian:stretch
steps:
- install_debian_dependencies
- checkout
- cmake_debian:
distribution: stretch
arch: amd64
- make_deb
- copy_artifacts:
build: debian-stretch
2019-10-03 02:25:54 +02:00
build_fedora_29_64:
docker:
- image: fedora:29
2019-10-03 03:48:17 +02:00
environment:
RPM_BUILD_NCPUS: "2"
2019-10-03 02:25:54 +02:00
steps:
2019-10-03 12:45:39 +02:00
- install_fedora_dependencies
2019-10-03 02:42:09 +02:00
- checkout
2019-10-03 12:45:39 +02:00
- cmake
- build_source_tarball
- build_rpm
- copy_rpm_artifacts:
2019-10-03 15:45:56 +02:00
build: fedora-29
2019-10-03 12:45:39 +02:00
build_fedora_30_64:
docker:
- image: fedora:30
environment:
RPM_BUILD_NCPUS: "2"
2019-10-03 12:45:39 +02:00
steps:
- install_fedora_dependencies
- checkout
- cmake
- build_source_tarball
- build_rpm
- copy_rpm_artifacts:
2019-10-03 15:45:56 +02:00
build: fedora-30
2019-10-03 02:25:54 +02:00
2019-11-12 01:37:15 +01:00
build_fedora_31_64:
docker:
- image: fedora:31
environment:
RPM_BUILD_NCPUS: "1"
steps:
- install_fedora_dependencies
- checkout
- cmake
- build_source_tarball
- build_rpm
- copy_rpm_artifacts:
build: fedora-31
2019-11-14 21:58:55 +01:00
build_mingw:
docker:
- image: eu.gcr.io/clementine-data/mingw-w64:latest
environment:
PKG_CONFIG_PATH: /target/lib/pkgconfig
steps:
- checkout
- run:
name: CMake
working_directory: bin
command: >
cmake ..
-DCMAKE_TOOLCHAIN_FILE=../Toolchain-mingw32.cmake
-DCMAKE_BUILD_TYPE=Release
- run:
name: Make
working_directory: bin
command: make -j2
2019-11-14 23:32:05 +01:00
- run:
name: Copy output exes
working_directory: dist/windows
command: cp ../../bin/*.exe .
- run:
name: Copy base runtime DLLs
command: >
cp
/usr/lib/gcc/i686-w64-mingw32/*-posix/libgcc_s_sjlj-1.dll
/usr/lib/gcc/i686-w64-mingw32/*-posix/libstdc++-6.dll
$CIRCLE_WORKING_DIRECTORY/dist/windows
- run:
name: Copy DLL dependencies
working_directory: /target/bin
command: >
cp
glew32.dll
libcdio-16.dll
libchromaprint.dll
libeay32.dll
libfaad.dll
libffi-6.dll
libfftw3-3.dll
libFLAC-8.dll
libgcrypt-20.dll
libgio-2.0-0.dll
libglib-2.0-0.dll
libgmodule-2.0-0.dll
libgmp-10.dll
libgnutls-30.dll
libgobject-2.0-0.dll
libgpg-error-0.dll
libgpod.dll
libgstapp-1.0-0.dll
libgstaudio-1.0-0.dll
libgstbase-1.0-0.dll
libgstcontroller-1.0-0.dll
libgstfft-1.0-0.dll
libgstnet-1.0-0.dll
libgstpbutils-1.0-0.dll
libgstreamer-1.0-0.dll
libgstriff-1.0-0.dll
libgstrtp-1.0-0.dll
libgstrtsp-1.0-0.dll
libgstsdp-1.0-0.dll
libgsttag-1.0-0.dll
libgstvideo-1.0-0.dll
libgthread-1.0-0.dll
libhogweed-4.dll
libiconv-2.dll
libid3tag.dll
libintl-8.dll
liblastfm.dll
libmad.dll
libmms-0.dll
libmp3lame-0.dll
libnettle-6.dll
libogg-0.dll
liboil-0.3-0.dll
liborc-0.4-0.dll
liborc-test-0.4-0.dll
libp11-kit-0.dll
libplist.dll
libpsl-5.dll
libprotobuf-9.dll
libsoup-2.4-1.dll
libspeex-1.dll
libspotify.dll
libsqlite3-0.dll
libstdc++-6.dll
libtag.dll
libtasn1-6.dll
libvorbis-0.dll
libvorbisenc-2.dll
libxml2-2.dll
Qt5Concurrent.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Network.dll
Qt5NetworkAuth.dll
Qt5OpenGL.dll
Qt5Sql.dll
Qt5Widgets.dll
Qt5WinExtras.dll
Qt5Xml.dll
Qt5XmlPatterns.dll
ssleay32.dll
zlib1.dll
$CIRCLE_WORKING_DIRECTORY/dist/windows
- run: mkdir dist/windows/imageformats
- run:
name: Copy Qt plugin DLLs
working_directory: /target/plugins
command: >
cp
imageformats/qgif.dll
imageformats/qjpeg.dll
$CIRCLE_WORKING_DIRECTORY/dist/windows/imageformats
- run: mkdir dist/windows/gio-modules
- run:
name: Copy GIO modules
command: cp /target/lib/gio/modules/libgiognutls.dll dist/windows/gio-modules
- run: mkdir dist/windows/gstreamer-plugins
- run:
name: Copy gstreamer plugins
working_directory: /target/lib/gstreamer-1.0
command: >
cp
libgstapetag.dll
libgstapp.dll
libgstasf.dll
libgstaudioconvert.dll
libgstaudioparsers.dll
libgstaudioresample.dll
libgstaudiotestsrc.dll
libgstcdio.dll
libgstcorelements.dll
libgstequalizer.dll
libgstfaad.dll
libgstflac.dll
libgstgdp.dll
libgstgio.dll
libgsticydemux.dll
libgstid3demux.dll
libgstisomp4.dll
libgstlame.dll
libgstlibav.dll
libgstmad.dll
libgstmms.dll
libgstogg.dll
libgstplayback.dll
libgstreplaygain.dll
libgstsouphttpsrc.dll
libgstspectrum.dll
libgstspeex.dll
libgsttaglib.dll
libgsttcp.dll
libgsttypefindfunctions.dll
libgstudp.dll
libgstvolume.dll
libgstvorbis.dll
libgstwaveparse.dll
$CIRCLE_WORKING_DIRECTORY/dist/windows/gstreamer-plugins
- run:
name: Build windows installer
working_directory: dist/windows
command: makensis clementine.nsi
2019-11-14 21:58:55 +01:00
2019-10-03 01:19:45 +02:00
build_mac:
macos:
xcode: "11.0.0"
steps:
- run:
name: Setup PATH
command: |
2019-10-16 20:42:21 +02:00
echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig' >> $BASH_ENV
echo 'export Qt5_DIR=/usr/local/opt/qt5/lib/cmake/Qt5' >> $BASH_ENV
echo 'export Qt5LinguistTools_DIR=/usr/local/opt/qt5/lib/cmake/Qt5LinguistTools' >> $BASH_ENV
echo 'export GST_SCANNER_PATH=/usr/local/opt/gstreamer/libexec/gstreamer-1.0/gst-plugin-scanner' >> $BASH_ENV
2019-10-03 01:24:32 +02:00
echo 'export GST_PLUGIN_PATH=/usr/local/lib/gstreamer-1.0' >> $BASH_ENV
2019-10-03 01:19:45 +02:00
source $BASH_ENV
- run:
name: Install dependencies from homebrew
command: >
brew install
boost
chromaprint
cmake
cryptopp
2019-10-16 20:42:21 +02:00
fftw
2019-10-03 01:19:45 +02:00
gettext
2019-10-16 20:42:21 +02:00
glew
2019-10-03 01:19:45 +02:00
glib
2019-10-16 20:42:21 +02:00
google-sparsehash
gst-libav
gst-plugins-bad
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
gstreamer
2019-10-03 01:19:45 +02:00
pkgconfig
protobuf
protobuf-c
qt
2019-10-16 20:42:21 +02:00
sqlite
2019-10-03 01:19:45 +02:00
- checkout
- run:
name: cmake
2019-10-16 20:42:21 +02:00
command: >
cmake
..
-Wno-dev
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_OSX_ARCHITECTURES=x86_64
-DGETTEXT_MSGMERGE_EXECUTABLE=/usr/local/opt/gettext/bin/msgmerge
-DGETTEXT_MSGFMT_EXECUTABLE=/usr/local/opt/gettext/bin/msgfmt
-DGETTEXT_XGETTEXT_EXECUTABLE=/usr/local/opt/gettext/bin/xgettext
2019-10-03 01:19:45 +02:00
working_directory: bin
- run:
name: make
command: make -j4
2019-10-03 01:19:45 +02:00
working_directory: bin
2019-10-03 01:22:14 +02:00
- run:
name: Copy icon file and resources
command: make install
working_directory: bin
2019-10-03 01:19:45 +02:00
- run:
name: Build DMG
command: make dmg
working_directory: bin
- run:
name: Create artifact output directory
command: mkdir -p /tmp/artifacts/mac
- run:
name: Copy dmg to artifacts directory
command: cp bin/clementine*.dmg /tmp/artifacts/mac
- persist_to_workspace:
2019-10-04 14:55:52 +02:00
root: /tmp/artifacts
2019-10-03 01:19:45 +02:00
paths:
2019-10-04 14:55:52 +02:00
- mac/*
2019-10-16 22:07:00 +02:00
- store_artifacts:
path: bin/CMakeCache.txt
- store_artifacts:
path: bin/src/CMakeFiles/clementine.dir
2019-10-03 01:19:45 +02:00
- store_artifacts:
path: /tmp/artifacts/mac
2019-10-02 18:17:06 +02:00
upload_artifacts:
docker:
- image: google/cloud-sdk
steps:
- run:
name: Google Cloud Auth
command: |
2019-10-03 01:00:28 +02:00
echo $GCLOUD_SERVICE_KEY | gcloud auth activate-service-account circleci-uploader@clementine-data.iam.gserviceaccount.com --key-file=-
2019-10-02 18:17:06 +02:00
gcloud --quiet config set project clementine-data
- attach_workspace:
at: /tmp/artifacts
2019-10-02 18:17:06 +02:00
- run:
name: Upload Artifact to Google Cloud
command: gsutil rsync -r /tmp/artifacts gs://builds.clementine-player.org/
2019-10-02 16:26:30 +02:00
workflows:
version: 2
build_all:
jobs:
- build_eoan_64
- build_eoan_32
- build_disco_64
- build_disco_32
- build_bionic_64
- build_bionic_32
- build_buster_64
- build_stretch_64
- build_fedora_29_64
- build_fedora_30_64
- build_fedora_31_64
2019-11-14 22:14:48 +01:00
- build_mingw
- build_mac:
filters:
branches:
only: master
- upload_artifacts:
context: gcp
requires:
- build_eoan_64
- build_eoan_32
- build_disco_64
- build_disco_32
- build_bionic_64
- build_bionic_32
- build_buster_64
- build_stretch_64
- build_fedora_29_64
- build_fedora_30_64
- build_fedora_31_64
- build_mac
filters:
branches:
only: master