Add build config
This commit is contained in:
		| @@ -1,13 +1,55 @@ | ||||
| version: 2.1 | ||||
|  | ||||
| jobs: | ||||
|   build: | ||||
|   build_server: | ||||
|     docker: | ||||
|       - image: docker:19.03.4 | ||||
|       - image: alpine:3.10.3 | ||||
|     steps: | ||||
|       - setup_remote_docker | ||||
|       - checkout | ||||
|       - run: apk add -u make zip git curl | ||||
|       - run: pwd; ls -la; make install | ||||
|       - run: pwd; ls -la; tools/shards install | ||||
|       - run: pwd; ls -la; make spec | ||||
|       - run: pwd; ls -la; make build | ||||
|       - run: ./docker/provide-crystal-alpine | ||||
|       - run: shards install | ||||
|       - run: make spec STAGE=prod | ||||
|       - run: make build STAGE=prod | ||||
|       - persist_to_workspace: | ||||
|           root: build | ||||
|           paths: ['*'] | ||||
|  | ||||
|   build_assets: | ||||
|     docker: | ||||
|       - image: circleci/node:12.13 | ||||
|     steps: | ||||
|       - checkout | ||||
|       - run: npm ci | ||||
|       - run: npm run-script build-prod | ||||
|       - run: ls -la ./public/assets | ||||
|       - persist_to_workspace: | ||||
|           root: public/assets | ||||
|           paths: ['*'] | ||||
|  | ||||
|   build_docker_image: | ||||
|     docker: | ||||
|       - image: docker:19.03 | ||||
|     steps: | ||||
|       - attach_workspace: | ||||
|           at: /tmp/data | ||||
|       - run: ls -la /tmp/data | ||||
|       - checkout | ||||
|       - run: mkdir -p ./build/ | ||||
|       - run: cp /tmp/data/dayoff ./build/dayoff | ||||
|       - run: mkdir -p ./public/assets/ | ||||
|       - run: cp /tmp/data/main.css /tmp/data/main.js ./public/assets/ | ||||
|       - setup_remote_docker | ||||
|       - run: docker build --file ./docker/Dockerfile.prod --tag anwinged/dayoff . | ||||
|       - run: docker login --username "$DOCKER_REG_USERNAME" --password "$DOCKER_REG_PASSWORD" | ||||
|       - run: docker push anwinged/dayoff | ||||
|  | ||||
| workflows: | ||||
|   version: 2 | ||||
|   test_and_build: | ||||
|     jobs: | ||||
|       - build_server | ||||
|       - build_assets | ||||
|       - build_docker_image: | ||||
|           requires: | ||||
|             - build_server | ||||
|             - build_assets | ||||
|   | ||||
| @@ -1,3 +1,5 @@ | ||||
| /.crystal/ | ||||
| /.shards/ | ||||
| /coverage/ | ||||
| /node_modules/ | ||||
| /var/ | ||||
							
								
								
									
										8
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,11 +1,13 @@ | ||||
| PATH := tools:$(PATH) | ||||
| ifneq ($(STAGE), prod) | ||||
| 	PATH := tools:$(PATH) | ||||
| endif | ||||
|  | ||||
| APP_NAME := dayoff | ||||
| ENTRY_POINT = ./src/$(APP_NAME).cr | ||||
|  | ||||
| .PHONY: build-docker | ||||
| build-docker: | ||||
| 	docker pull alpine:edge | ||||
| 	docker build -t $(APP_NAME)-crystal . | ||||
| 	docker build --file docker/Dockerfile.dev --tag $(APP_NAME)-crystal --tag anwinged/$(APP_NAME)-crystal . | ||||
|  | ||||
| install-shards: | ||||
| 	shards install | ||||
|   | ||||
							
								
								
									
										6
									
								
								docker/Dockerfile.dev
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								docker/Dockerfile.dev
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| FROM alpine:3.10.3 as builder | ||||
|  | ||||
| COPY ./docker/provide-crystal-alpine /opt/provision/provide-crystal-alpine | ||||
|  | ||||
| # Install crystal and dev libs | ||||
| RUN /opt/provision/provide-crystal-alpine | ||||
							
								
								
									
										14
									
								
								docker/Dockerfile.prod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								docker/Dockerfile.prod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| FROM alpine:3.10.3 | ||||
|  | ||||
| ENV BASE_PATH /opt/dayoff | ||||
|  | ||||
| RUN apk add -u tzdata | ||||
|  | ||||
| COPY ./build/dayoff /app/ | ||||
| COPY ./public /app/public/ | ||||
|  | ||||
| WORKDIR /app | ||||
|  | ||||
| EXPOSE 3000 | ||||
|  | ||||
| CMD ["/app/dayoff"] | ||||
							
								
								
									
										4
									
								
								Dockerfile → docker/provide-crystal-alpine
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										4
									
								
								Dockerfile → docker/provide-crystal-alpine
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @@ -1,7 +1,7 @@ | ||||
| FROM alpine:3.10.3 as builder | ||||
| #!/usr/bin/env sh | ||||
| 
 | ||||
| # Install crystal and dev libs | ||||
| RUN apk add -u \ | ||||
| apk add -u \ | ||||
| 	make  \ | ||||
| 	crystal \ | ||||
| 	shards \ | ||||
		Reference in New Issue
	
	Block a user