misskey/.circleci/config.yml

195 lines
5.3 KiB
YAML
Raw Normal View History

version: 2.1
2018-10-29 21:48:35 +09:00
executors:
default:
working_directory: /tmp/workspace
docker:
- image: misskey/ci:latest
- image: circleci/mongo:latest
with-redis:
working_directory: /tmp/workspace
docker:
- image: misskey/ci:latest
- image: circleci/mongo:latest
- image: circleci/redis:latest
docker:
working_directory: /tmp/workspace
2018-10-27 03:46:48 +09:00
docker:
- image: docker:latest
jobs:
build:
executor: default
2018-10-27 03:46:48 +09:00
steps:
- checkout
2019-01-27 20:19:24 +09:00
- run:
name: Ensure yarn.lock
command: |
touch yarn.lock
- restore_cache:
name: Restore npm package caches
keys:
2019-01-27 20:13:06 +09:00
- yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "yarn.lock" }}
- yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-
- yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-
- yarn-v1-arch-{{ arch }}-
- yarn-v1-
2018-10-27 03:46:48 +09:00
- run:
name: Install Dependencies
2018-10-27 03:46:48 +09:00
command: |
2019-02-03 16:57:36 +09:00
yarn install
2018-10-27 03:46:48 +09:00
- run:
name: Configure
2018-10-27 03:46:48 +09:00
command: |
2018-11-06 06:12:51 +09:00
cp .circleci/misskey/default.yml .config
cp .circleci/misskey/test.yml .config
2018-10-27 03:46:48 +09:00
- run:
name: Build
2018-10-27 03:46:48 +09:00
command: |
2019-01-27 20:13:06 +09:00
yarn build
2019-01-27 20:19:24 +09:00
touch yarn.lock
- save_cache:
name: Cache npm packages
2019-01-27 20:13:06 +09:00
key: yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "yarn.lock" }}
paths:
- node_modules
- persist_to_workspace:
root: .
paths:
- .
test:
parameters:
executor:
type: string
default: "default"
without_redis:
type: boolean
default: false
executor: <<parameters.executor>>
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-27 03:46:48 +09:00
- run:
name: Test
2018-10-27 03:46:48 +09:00
command: |
2019-01-27 20:13:06 +09:00
yarn test
2019-01-27 20:19:24 +09:00
touch yarn.lock
- save_cache:
name: Cache npm packages
2019-01-27 20:13:06 +09:00
key: yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "yarn.lock" }}
paths:
- node_modules
docker:
parameters:
with_deploy:
type: boolean
default: false
executor: docker
2018-10-27 03:46:48 +09:00
steps:
- checkout
- setup_remote_docker
- run:
name: Build
2018-10-27 03:46:48 +09:00
command: |
2018-11-07 02:06:32 +09:00
docker build -t misskey/misskey .
- when:
condition: <<parameters.with_deploy>>
steps:
- run:
name: Deploy
command: |
2018-10-31 22:00:21 +09:00
if [ "$DOCKERHUB_USERNAME$DOCKERHUB_PASSWORD" ]
then
2018-11-11 21:34:50 +09:00
apk update && apk add jq
docker tag misskey/misskey misskey/misskey:$(cat package.json | jq -r .version)
2018-10-31 22:00:21 +09:00
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-27 03:46:48 +09:00
workflows:
version: 2
nodejs:
2018-10-27 03:46:48 +09:00
jobs:
2019-02-16 11:10:06 +09:00
- hold:
name: manual-build-trigger
2019-02-16 11:10:06 +09:00
type: approval
filters:
branches:
ignore: master
- build:
name: manual-build
2019-02-16 11:10:06 +09:00
requires:
- manual-build-trigger
filters:
branches:
ignore: master
- build:
name: auto-build
filters:
branches:
only: master
- test:
name: manual-test-with-redis
executor: with-redis
requires:
- manual-build
filters:
branches:
ignore: master
- test:
name: auto-test-without-redis
executor: with-redis
requires:
- auto-build
filters:
branches:
only: master
- test:
name: manual-test-with-redis
without_redis: true
requires:
- manual-build
2019-02-16 17:05:56 +09:00
filters:
branches:
ignore: master
- test:
name: auto-test-without-redis
without_redis: true
requires:
- auto-build
filters:
branches:
only: master
docker:
jobs:
- hold:
name: manual-build-trigger
type: approval
filters:
branches:
ignore: master
- docker:
name: manual-build
requires:
- manual-build-trigger
filters:
branches:
ignore: master
- docker:
name: auto-build
with_deploy: true
filters:
branches:
only: master