summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAcid Chicken (硫酸鶏) <root@acid-chicken.com>2018-10-30 12:36:14 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2018-10-30 12:36:14 +0900
commit6f979c8275e3c8eeff99135f736c5d93462007a2 (patch)
treee5ee7925101945582ae73535b64d2b2824a2b743
parentRefactor (diff)
downloadsharkey-6f979c8275e3c8eeff99135f736c5d93462007a2.tar.gz
sharkey-6f979c8275e3c8eeff99135f736c5d93462007a2.tar.bz2
sharkey-6f979c8275e3c8eeff99135f736c5d93462007a2.zip
Configure CI (#3037)
* Update config.yml * Configure CI * Use Vesion 2.1 * Fix error * Ensure binary builds * Ensure misskey builds * Store artifacts * Ensure node-gyp builds * Fix typo * Fix typo * Ensure binary builds * Update working directory * Cache test npm packages * Revert "Update working directory" * Ensure misskey builds * Ensure node-gyp builds * Fix missing configurations * Configure deploy filters * Use latest npm in Docker
-rw-r--r--.ci/default.yml (renamed from .travis/default.yml)0
-rw-r--r--.ci/test.yml (renamed from .travis/test.yml)0
-rw-r--r--.circleci/config.yml137
-rw-r--r--.travis.yml4
-rw-r--r--Dockerfile11
5 files changed, 111 insertions, 41 deletions
diff --git a/.travis/default.yml b/.ci/default.yml
index e0738edf66..e0738edf66 100644
--- a/.travis/default.yml
+++ b/.ci/default.yml
diff --git a/.travis/test.yml b/.ci/test.yml
index 0775a19cce..0775a19cce 100644
--- a/.travis/test.yml
+++ b/.ci/test.yml
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 630a7eebb6..422f6fdc22 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -1,60 +1,129 @@
-version: 2
+version: 2.1
general:
branches:
ignore:
- l10n_develop
+ - imgbot
-jobs:
- webpack-build:
- working_directory: /misskey
+executors:
+ default:
+ working_directory: /tmp/workspace
+ docker:
+ - image: misskey/ci:latest
+ - image: circleci/mongo:latest
+ - image: circleci/redis:latest
+ docker:
+ working_directory: /tmp/workspace
docker:
- - image: yukimochi/misskey-builder:latest
+ - image: docker:latest
+
+jobs:
+ build:
+ executor: default
steps:
- checkout
+ - 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-
- run:
- name: Setup Dependencies
- command: |
- yarn install
- yarn global add web-push
- - run:
- name: Import default.yml
+ name: Install Dependencies
command: |
- echo ${IMPORT_DEFAULT_YML} | base64 -d | gzip -d > .config/default.yml
+ npm install
- run:
- name: Build Webpack
+ name: Configure
command: |
- yarn run build
+ cp .ci/default.yml .config
+ cp .ci/test.yml .config
- run:
- name: Compress clients
+ name: Build
command: |
- find ./built/client -name "*.js" -or -name "*.js.map" -or -name "*.css" -or -name "*.svg" -or -name "*.html" -or -name "*.json" | xargs -t gzip -k -9
- find ./built/client -name "*.js" -or -name "*.js.map" -or -name "*.css" -or -name "*.svg" -or -name "*.html" -or -name "*.json" | xargs -t brotli -q 10
- tar cfz ~/built-${CIRCLE_SHA1}.tar.gz built
+ 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
- run:
- name: Send built s3
+ name: Test
command: |
- mc config host add ykmc ${s3_endpoint} ${s3_accesskey} ${s3_secretkey}
- mc cp ~/built-${CIRCLE_SHA1}.tar.gz ${backet}/${CIRCLE_BRANCH}/
- docker-build:
- docker:
- - image: docker:17-git
+ 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
steps:
- checkout
- setup_remote_docker
- run:
- name: build docker image
+ name: Build
command: |
- docker build -t misskey:latest .
- - run:
- name: upload image to docker hub.
- command: |
- docker login --username=${DOCKER_USER} --password=${DOCKER_PASS}
- docker push ${DOCKER_USER}/misskey:latest
+ docker build .
+ - when:
+ condition: <<parameters.with_deploy>>
+ steps:
+ - run:
+ name: Deploy
+ command: |
+ docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD && docker push misskey/misskey
workflows:
version: 2
- build:
+ build-and-test:
jobs:
- - webpack-build
- - docker-build
+ - build
+ - test:
+ requires:
+ - build
+ - test:
+ without_redis: "true"
+ requires:
+ - build
+ - docker:
+ filters:
+ branches:
+ ignore: master
+ - docker:
+ with_deploy: "true"
+ filters:
+ branches:
+ only: master
diff --git a/.travis.yml b/.travis.yml
index bf00d28daf..80ecb236c0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -35,7 +35,7 @@ before_script:
- npm install
# 設定ファイルを配置
- - cp ./.travis/default.yml ./.config
- - cp ./.travis/test.yml ./.config
+ - cp ./.ci/default.yml ./.config
+ - cp ./.ci/test.yml ./.config
- travis_wait npm run build
diff --git a/Dockerfile b/Dockerfile
index a95789c01d..e31af0099b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -21,11 +21,12 @@ RUN apk add --no-cache \
pkgconfig \
libtool \
zlib-dev
-RUN npm install \
- && npm install -g node-gyp \
- && node-gyp configure \
- && node-gyp build \
- && npm run build
+RUN npm i -g npm@latest \
+ && npm i \
+ && npm i -g node-gyp \
+ && node-gyp configure \
+ && node-gyp build \
+ && npm run build
FROM base AS runner