Skip to content
Snippets Groups Projects
.gitlab-ci.yml 2.11 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jonas Leder's avatar
    Jonas Leder committed
    image: docker
    
    services:
      - docker:dind
    
    stages:
    
      - build
    
      - build-release
    
    Jonas Leder's avatar
    Jonas Leder committed
      - deploy
    
    
    Jonas Leder's avatar
    Jonas Leder committed
    build-release: #This will be executed if you oush on master, it makes a new release (latest) image
    
      stage: build
    
      script:
    
    Jonas Leder's avatar
    Jonas Leder committed
        - echo "building for branch $CI_COMMIT_REF_NAME"
        - sudo docker image prune -f #Delete old unused images
        - sudo docker build -t gitlab.jonasled.de/jonasled/url_shorter_docker . #Build the image with the name already set to push
        - sudo docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY #Login to docker registry, username and password will be filled while executing
        - sudo docker push gitlab.jonasled.de/jonasled/url_shorter_docker #Push the image onto the Docker registry.
    
    Jonas Leder's avatar
    Jonas Leder committed
    build: #This will be executed on every push. With this script the beta image will be build
    
      stage: build
      script:
    
    Jonas Leder's avatar
    Jonas Leder committed
        - echo "building for branch $CI_COMMIT_REF_NAME"
        - sudo docker image prune -f #Delete old unused images
        - sudo docker build -t gitlab.jonasled.de/jonasled/url_shorter_docker:beta . #Build the image with the name already set to push
        - sudo docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY #Login to docker registry, username and password will be filled while executing
        - sudo docker push gitlab.jonasled.de/jonasled/url_shorter_docker:beta #Push the image onto the Docker registry.
    
    Jonas Leder's avatar
    Jonas Leder committed
    deploy:
    
    Jonas Leder's avatar
    Jonas Leder committed
      stage: deploy
      only:
        - master
      script:
    
    Jonas Leder's avatar
    Jonas Leder committed
        - sudo apt-get install -y python-pip #install pip, this is needed to install docker-compose in the next step
        - sudo pip install docker-compose #Install docker-compose with pip
        - replace "5000:5000" "5003:5000" -- docker-compose.yml #replace in docker-compose some settings. Variables will be replaced on execute.
        - replace "domains=" "$domains" -- docker-compose.yml #The domains I use for my url shorter
        - replace "recaptcha_private=" "$recaptcha_private" -- docker-compose.yml #Recaptcha keys for protecting the create form from attacks
    
        - replace "recaptcha_public=" "$recaptcha_public" -- docker-compose.yml
    
    Jonas Leder's avatar
    Jonas Leder committed
        - sudo docker-compose up -d #Start the new container
    
    Jonas Leder's avatar
    Jonas Leder committed
      environment: master