feat: Add dependency phase for easier caching
This commit is contained in:
		
							parent
							
								
									c6c1cb1afe
								
							
						
					
					
						commit
						ae7803a6c3
					
				
					 1 changed files with 34 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
stages:
 | 
			
		||||
  - dependencies
 | 
			
		||||
  - test
 | 
			
		||||
  - deploy_tags
 | 
			
		||||
  - deploy
 | 
			
		||||
| 
						 | 
				
			
			@ -12,9 +13,37 @@ variables:
 | 
			
		|||
  DOCKER_HOST: tcp://docker:2376
 | 
			
		||||
  GIT_STRATEGY: fetch
 | 
			
		||||
 | 
			
		||||
fetch_application_dependencies:
 | 
			
		||||
  stage: dependencies
 | 
			
		||||
  image: "elixir:1.10"
 | 
			
		||||
  cache:
 | 
			
		||||
    key:
 | 
			
		||||
      files:
 | 
			
		||||
        - mix.lock
 | 
			
		||||
    paths:
 | 
			
		||||
      - _build/
 | 
			
		||||
      - deps/
 | 
			
		||||
  script:
 | 
			
		||||
    - mix deps.get
 | 
			
		||||
 | 
			
		||||
fetch_asset_dependencies:
 | 
			
		||||
  stage: dependencies
 | 
			
		||||
  image: "node:15.0"
 | 
			
		||||
  only:
 | 
			
		||||
    - master
 | 
			
		||||
  cache:
 | 
			
		||||
    key:
 | 
			
		||||
      files:
 | 
			
		||||
        - apps/app/assets/package-lock.json
 | 
			
		||||
    paths:
 | 
			
		||||
      - apps/app/assets/node_modules/
 | 
			
		||||
  script:
 | 
			
		||||
    - cd apps/app/assets/ && npm install
 | 
			
		||||
 | 
			
		||||
test:
 | 
			
		||||
  stage: test
 | 
			
		||||
  needs: []
 | 
			
		||||
  needs:
 | 
			
		||||
    - fetch_application_dependencies
 | 
			
		||||
  image: "elixir:1.10"
 | 
			
		||||
  services:
 | 
			
		||||
  - name: postgres:12
 | 
			
		||||
| 
						 | 
				
			
			@ -29,26 +58,20 @@ test:
 | 
			
		|||
 | 
			
		||||
build_image_for_commit:
 | 
			
		||||
  stage: test
 | 
			
		||||
  needs: []
 | 
			
		||||
  needs:
 | 
			
		||||
    - fetch_asset_dependencies
 | 
			
		||||
    - fetch_application_dependencies
 | 
			
		||||
  image: "docker:19.03.12"
 | 
			
		||||
  only:
 | 
			
		||||
    - master
 | 
			
		||||
  services:
 | 
			
		||||
    - name: docker:19.03.12-dind
 | 
			
		||||
  cache:
 | 
			
		||||
    key:
 | 
			
		||||
      files:
 | 
			
		||||
        - mix.lock
 | 
			
		||||
        - apps/app/assets/package-lock.json
 | 
			
		||||
    paths:
 | 
			
		||||
      - _build/
 | 
			
		||||
      - deps/
 | 
			
		||||
      - apps/app/assets/node_modules/
 | 
			
		||||
  script:
 | 
			
		||||
    - docker login "https://${CI_REGISTRY}" -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
 | 
			
		||||
    - docker pull $CI_REGISTRY_IMAGE:latest || true
 | 
			
		||||
    - docker build --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
 | 
			
		||||
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
 | 
			
		||||
    - docker cp $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA:
 | 
			
		||||
 | 
			
		||||
deploy_to_tags:
 | 
			
		||||
  stage: deploy_tags
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue