169 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
| version: 2.1
 | |
| 
 | |
| 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: docker:latest
 | |
|   alpine:
 | |
|     working_directory: /tmp/workspace
 | |
|     docker:
 | |
|       - image: alpine:latest
 | |
| 
 | |
| jobs:
 | |
|   ok:
 | |
|     executor: alpine
 | |
|     steps:
 | |
|       - run:
 | |
|           name: OK
 | |
|           command: |
 | |
|             echo -e '\033[0;32mOK\033[0;39m'            
 | |
| 
 | |
|   build:
 | |
|     executor: default
 | |
|     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-
 | |
|       - run:
 | |
|           name: Install Dependencies
 | |
|           command: |
 | |
|             npm install
 | |
|             npm prune            
 | |
|       - run:
 | |
|           name: Configure
 | |
|           command: |
 | |
|             cp .circleci/misskey/default.yml .config
 | |
|             cp .circleci/misskey/test.yml .config            
 | |
|       - run:
 | |
|           name: Build
 | |
|           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                  
 | |
|       - run:
 | |
|           name: Test
 | |
|           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
 | |
|     steps:
 | |
|       - checkout
 | |
|       - setup_remote_docker
 | |
|       - run:
 | |
|           name: Build
 | |
|           command: |
 | |
|             docker build -t misskey/misskey .            
 | |
|       - when:
 | |
|           condition: <<parameters.with_deploy>>
 | |
|           steps:
 | |
|             - run:
 | |
|                 name: Deploy
 | |
|                 command: |
 | |
|                   if [ "$DOCKERHUB_USERNAME$DOCKERHUB_PASSWORD" ]
 | |
|                    then
 | |
|                     apk update && apk add jq
 | |
|                     docker tag misskey/misskey misskey/misskey:$(cat package.json | jq -r .version)
 | |
|                     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                  
 | |
| 
 | |
| workflows:
 | |
|   version: 2
 | |
|   build-and-test:
 | |
|     jobs:
 | |
|       - ok:
 | |
|           filters:
 | |
|             branches:
 | |
|               only:
 | |
|                 - l10n_develop
 | |
|                 - imgbot
 | |
|       - build:
 | |
|           filters:
 | |
|             branches:
 | |
|               ignore:
 | |
|                 - l10n_develop
 | |
|                 - imgbot
 | |
|       - test:
 | |
|           requires:
 | |
|             - build
 | |
|           filters:
 | |
|             branches:
 | |
|               ignore:
 | |
| #                - master
 | |
|                 - l10n_develop
 | |
|                 - imgbot
 | |
|       - test:
 | |
|           without_redis: "true"
 | |
|           requires:
 | |
|             - build
 | |
|           filters:
 | |
|             branches:
 | |
|               only: master
 | |
| #      - docker:
 | |
| #          filters:
 | |
| #            branches:
 | |
| #              ignore: master
 | |
|       - docker:
 | |
|           with_deploy: "true"
 | |
|           filters:
 | |
|             branches:
 | |
|               only: master
 |