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

631 lines
16 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-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:
2019-11-12 01:35:33 +01:00
- build_eoan_64
- build_eoan_32
2019-11-11 22:24:37 +01:00
- build_disco_64
- build_disco_32
2019-10-02 16:43:31 +02:00
- build_bionic_64
2019-11-11 22:24:37 +01:00
- build_bionic_32
- build_buster_64
- build_stretch_64
- build_fedora_29_64
- build_fedora_30_64
2019-11-12 01:37:15 +01:00
- build_fedora_31_64
- build_mac:
filters:
branches:
only: master
2019-10-16 23:45:10 +02:00
- upload_artifacts:
context: gcp
requires:
2019-11-12 01:35:33 +01:00
- build_eoan_64
- build_eoan_32
2019-11-11 22:24:37 +01:00
- build_disco_64
- build_disco_32
2019-10-16 23:45:10 +02:00
- build_bionic_64
2019-11-11 22:24:37 +01:00
- build_bionic_32
- build_buster_64
- build_stretch_64
- build_fedora_29_64
- build_fedora_30_64
2019-11-12 01:37:15 +01:00
- build_fedora_31_64
2019-10-16 23:45:10 +02:00
- build_mac
filters:
branches:
only: master