Sharkey/.circleci/config.yml

146 lines
4.7 KiB
YAML
Raw Normal View History

version: 2.1
2018-10-29 14:48:35 +02:00
general:
branches:
ignore:
- l10n_develop
- imgbot
2018-10-29 14:48:35 +02:00
executors:
default:
working_directory: /tmp/workspace
docker:
- image: misskey/ci:latest
- image: circleci/mongo:latest
- image: circleci/redis:latest
docker:
working_directory: /tmp/workspace
2018-10-26 21:46:48 +03:00
docker:
- image: docker:latest
jobs:
build:
executor: default
2018-10-26 21:46:48 +03:00
steps:
- checkout
- run:
name: Ensure package-lock.json
command: |
[ ! -e package-lock.json ] && echo '{}' > package-lock.json
- restore_cache:
name: Restore npm package caches
keys:
- npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "package-lock.json" }}-
- npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-
- npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-
- npm-v1-arch-{{ arch }}-
- npm-v1-
2018-10-26 21:46:48 +03:00
- run:
name: Install Dependencies
2018-10-26 21:46:48 +03:00
command: |
npm install
npm prune
2018-10-26 21:46:48 +03:00
- run:
name: Configure
2018-10-26 21:46:48 +03:00
command: |
cp .ci/default.yml .config
cp .ci/test.yml .config
2018-10-26 21:46:48 +03:00
- run:
name: Build
2018-10-26 21:46:48 +03:00
command: |
npm run build || (echo -e '\033[0;34mRebuild modules\033[0;39m' && ls -1A node_modules | grep '^[^@]' | xargs npm rebuild && ls -1A node_modules | grep '^@' | xargs -I%1 sh -c 'ls -1A node_modules/'%1' | xargs -P0 -I%2 npm rebuild node_modules/'%1'/%2' && npm run build)
ls -1ARl node_modules > ls
- save_cache:
name: Cache npm packages
key: npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "package-lock.json" }}-ls-{{ checksum "ls" }}
paths:
- node_modules
# - store_artifacts:
# path: built
- persist_to_workspace:
root: .
paths:
- .
test:
parameters:
without_redis:
type: string
default: ""
executor: default
steps:
- attach_workspace:
at: /tmp/workspace
- when:
condition: <<parameters.without_redis>>
steps:
- run:
name: Configure
command: |
mv .config/test.yml .config/test_redis.yml
touch .config/test.yml
cat .config/test_redis.yml | while IFS= read line; do if [[ "$line" = '# __REDIS__' ]]; then break; else echo "$line" >> .config/test.yml; fi; done
2018-10-26 21:46:48 +03:00
- run:
name: Test
2018-10-26 21:46:48 +03:00
command: |
npm run test || (npm rebuild && npm run test) || ((node-gyp configure && node-gyp build && npm run build || (echo -e '\033[0;34mRebuild modules\033[0;39m' && ls -1A node_modules | grep '^[^@]' | xargs npm rebuild && ls -1A node_modules | grep '^@' | xargs -I%1 sh -c 'ls -1A node_modules/'%1' | xargs -P0 -I%2 npm rebuild node_modules/'%1'/%2' && npm run build)) && npm run test)
ls -1ARl node_modules > ls
- save_cache:
name: Cache npm packages
key: npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "package-lock.json" }}-ls-{{ checksum "ls" }}
paths:
- node_modules
docker:
parameters:
with_deploy:
type: string
default: ""
executor: docker
2018-10-26 21:46:48 +03:00
steps:
- checkout
- setup_remote_docker
- run:
name: Build
2018-10-26 21:46:48 +03:00
command: |
2018-10-31 15:00:21 +02:00
docker build . | tee docker.log
- when:
condition: <<parameters.with_deploy>>
steps:
- run:
name: Deploy
command: |
2018-10-31 15:00:21 +02:00
if [ "$DOCKERHUB_USERNAME$DOCKERHUB_PASSWORD" ]
then
tail -n 1 docker.log | read __Successfully __built tag
2018-10-31 15:00:21 +02:00
docker tag $tag misskey/misskey
docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
docker push misskey/misskey
else
echo -e '\033[0;33mAborted deploying to Docker Hub\033[0;39m'
fi
2018-10-26 21:46:48 +03:00
workflows:
version: 2
build-and-test:
2018-10-26 21:46:48 +03:00
jobs:
- build
- test:
requires:
- build
- test:
without_redis: "true"
requires:
- build
filters:
branches:
only: master
# - docker:
# filters:
# branches:
# ignore: master
- docker:
with_deploy: "true"
filters:
branches:
only: master