mirror of
https://github.com/koreader/koreader
synced 2024-11-10 01:10:34 +00:00
166 lines
3.8 KiB
YAML
166 lines
3.8 KiB
YAML
version: "2.1"
|
|
|
|
# Parameters. {{{
|
|
|
|
parameters:
|
|
|
|
# Bump this to reset all caches.
|
|
cache_epoch:
|
|
type: integer
|
|
default: 1
|
|
|
|
# }}}
|
|
|
|
# Executors. {{{
|
|
|
|
executors:
|
|
|
|
base:
|
|
docker:
|
|
- image: koreader/kobase:0.3.4-20.04
|
|
auth:
|
|
username: $DOCKER_USERNAME
|
|
password: $DOCKER_PASSWORD
|
|
|
|
# }}}
|
|
|
|
# Jobs. {{{
|
|
|
|
jobs:
|
|
|
|
# Build. {{{
|
|
|
|
build:
|
|
executor: base
|
|
resource_class: medium
|
|
environment:
|
|
BASH_ENV: "~/.bashrc"
|
|
CCACHE_MAXSIZE: "128M"
|
|
CLICOLOR_FORCE: "1"
|
|
EMULATE_READER: "1"
|
|
MAKEFLAGS: "OUTPUT_DIR=build INSTALL_DIR=install"
|
|
parallelism: 2
|
|
steps:
|
|
# Checkout / fetch. {{{
|
|
- checkout
|
|
- run:
|
|
name: Fetch
|
|
command: .ci/fetch.sh
|
|
# }}}
|
|
# Check.
|
|
- run:
|
|
name: Check
|
|
command: .ci/check.sh
|
|
# Restore / setup caches. {{{
|
|
- run:
|
|
name: Generate cache key
|
|
command: make TARGET= cache-key
|
|
- restore_cache:
|
|
name: Restore build directory
|
|
keys:
|
|
- &CACHE_KEY_BUILD_DIR '<< pipeline.parameters.cache_epoch >>-{{ .Environment.CIRCLE_JOB }}-build-{{ arch }}-{{ checksum "cache-key" }}'
|
|
- restore_cache:
|
|
name: Restore build cache
|
|
keys:
|
|
- &CACHE_KEY_BUILD_CACHE '<< pipeline.parameters.cache_epoch >>-{{ .Environment.CIRCLE_JOB }}-ccache-{{ arch }}-{{ checksum "cache-key" }}'
|
|
- '<< pipeline.parameters.cache_epoch >>-{{ .Environment.CIRCLE_JOB }}-ccache-{{ arch }}-'
|
|
- run:
|
|
name: Setup build cache
|
|
command: |
|
|
set -x
|
|
which ccache
|
|
ccache --version
|
|
ccache --zero-stats
|
|
ccache --show-config
|
|
# }}}
|
|
# Build.
|
|
- run:
|
|
name: Build
|
|
command: .ci/build.sh
|
|
# Clean / save caches. {{{
|
|
# We want to save cache prior to testing so we don't have to clean it up.
|
|
- run:
|
|
name: Clean caches
|
|
when: always
|
|
command: |
|
|
set -x
|
|
# Trim the build directory.
|
|
rm -rf build/{cmake,staging,thirdparty}
|
|
ccache --cleanup >/dev/null
|
|
ccache --show-stats --verbose
|
|
- save_cache:
|
|
name: Save build cache
|
|
key: *CACHE_KEY_BUILD_CACHE
|
|
paths:
|
|
- /home/ko/.ccache
|
|
- save_cache:
|
|
name: Save build directory
|
|
key: *CACHE_KEY_BUILD_DIR
|
|
paths:
|
|
- build
|
|
# }}}
|
|
# Tests / coverage. {{{
|
|
# Our lovely unit tests.
|
|
- run:
|
|
name: Test
|
|
command: .ci/test.sh
|
|
# Docs, coverage, and test timing (can we use two outputs at once?); master branch only.
|
|
- run:
|
|
name: Coverage
|
|
command: .ci/after_success.sh
|
|
# By storing the test results CircleCI automatically distributes tests based on execution time.
|
|
- store_test_results:
|
|
path: &TESTS_XML install/koreader/junit-test-results.xml
|
|
# CircleCI doesn't make the test results available as artifacts (October 2017).
|
|
- store_artifacts:
|
|
path: *TESTS_XML
|
|
# }}}
|
|
|
|
# }}}
|
|
|
|
# Docs. {{{
|
|
|
|
docs:
|
|
executor: base
|
|
resource_class: small
|
|
environment:
|
|
BASH_ENV: "~/.bashrc"
|
|
parallelism: 1
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: fetch
|
|
command: .ci/fetch.sh
|
|
# docs, coverage, and test timing (can we use two outputs at once?); master branch only
|
|
- run:
|
|
name: docs-and-translation
|
|
command: .ci/after_success_docs_translation.sh
|
|
|
|
# }}}
|
|
|
|
# }}}
|
|
|
|
# Workflows. {{{
|
|
|
|
workflows:
|
|
|
|
version: 2
|
|
|
|
build:
|
|
|
|
jobs:
|
|
|
|
- build
|
|
|
|
- docs:
|
|
context: koreader-vars
|
|
filters:
|
|
branches:
|
|
only: master
|
|
requires:
|
|
- build
|
|
|
|
# }}}
|
|
|
|
# vim: foldmethod=marker foldlevel=0
|