Gitlab.com CI рдФрд░ VPS рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛

рдЫрд╡рд┐
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ gitlab CI рдФрд░ рдХрд┐рд░рд╛рдП рдкрд░ VPS рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ ред

рдкреГрд╖реНрдарднреВрдорд┐


рдХрд╛рдо рдкрд░, рдпреВ.рд╡реА. DevOps'y рдиреЗ рдореБрдЭреЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ ( рдореИрдВ рдЧреЛ-рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ )ред рдореЗрд░реА рдЕрдкрдиреА рдкрд╛рд▓рддреВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ - рдФрд░ рдореИрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдкрдирд╛ рдЧреАрддрд╛рд▓рд╛рдм рдЙрдард╛рдиреЗ рдХреА рдмрд╣реБрдд рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ (VPS рд╡реИрд╕реЗ рднреА рд░рдмрд░ рдирд╣реАрдВ рд╣реИ)ред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрдВрдХрдбрд╝реЗ


  • рдЦрд╛рддрд╛ https://gitlab.com/
  • Ubuntu 18.04 рдХреЗ рд╕рд╛рде VPS рд╕рд░реНрд╡рд░

рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдмрдирд╛рдПрдВ


рд╣рдо рдЙрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ nginx рдХреЗ рд╕рд╛рде docker рдХреЛ рдмрдврд╝рд╛рдиреЗ рдФрд░ html рдкреГрд╖реНрда рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╕рдВрд░рдЪрдирд╛:

  • Dockerfile
    FROM nginx:latest
    COPY html /var/www/html
    COPY nginx.conf /etc/nginx/nginx.conf


  • nginx.conf
    events {}
    http {
    server {
        listen 80;
        location / {
                root /var/www/html;
        }
    }
    }


  • рдПрдЪрдЯреАрдПрдордПрд▓
    • index.html
      <html>
      <h1>Hello, Runner!</h1>
      </html>


  • .gitlab-ci.yml
    
    image: docker:19.03.8
    
    before_script:
      - docker info
    
    build:
      stage: build
      script:
        - docker build -t hellorunner .
    
    deploy:
      stage: deploy
      script:
        - docker ps --filter name=hellorunner --quiet |  xargs --no-run-if-empty docker stop | xargs --no-run-if-empty  docker rm
        - docker run -d --restart=always --name hellorunner -p 8090:80 hellorunner
              
    after_script:
        - docker system prune -f
    


рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╕реЗрдЯрдЕрдк


рдЦреБрд▓реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ -> CI

рдЫрд╡рд┐

рдлрд┐рд░, рдзрд╛рд╡рдХреЛрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВред
рдЫрд╡рд┐

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдзрд╛рд╡рдХреЛрдВ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ - рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдзрд╛рд╡рдХреЛрдВ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ

рдЫрд╡рд┐

, рдлрд┐рд░ рд╣рдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ - "рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдзрд╛рд╡рдХ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ"

рдЫрд╡рд┐

рд╣рдо рдЯреЛрдХрди рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╡реАрдкреАрдПрд╕ рддреИрдпрд╛рд░реА


рдХрд░реНрддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ред Gitlab-runner

рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ред рдПрдХ рдирдпрд╛ рдзрд╛рд╡рдХ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред ! рдирд┐рд╖реНрдкрд╛рджрдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдбреЙрдХрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдбреЙрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ! рдЯреЛрдХрди рдлрд╝реАрд▓реНрдб рдореЗрдВ, рдЯреЛрдХрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЧрд┐рдЯрд▓реИрдм рд╕реЗ рдпрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛







gitlab-runner register

рдЫрд╡рд┐

рдЕрдм, рдЖрдкрдХреЛ рдзрд╛рд╡рдХ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

nano /etc/gitlab-runner/config.toml

рдЦреЗрдд

volumes = ["/cache"]

рдореЗрдВ рдмрджрд▓реЛ

volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]

рдЫрд╡рд┐

рдбреЗрдореЙрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛

gitlab-runner restart

рд╡рд╛рдкрд╕ gitlab / рд╕реЗрдЯрд┐рдВрдЧреНрд╕ / CI / рдзрд╛рд╡рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗред

рдПрдХ рд╕рдХреНрд░рд┐рдп рдзрд╛рд╡рдХ рдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЫрд╡рд┐

рджрдмрд╛рдХрд░ рдзрд╛рд╡рдХ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред

рдЫрд╡рд┐

рдмрд┐рдирд╛ рдЯреИрдЧ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред

рдЫрд╡рд┐

рдЕрдм рдкреБрд╢ рдХрдорд┐рдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдиреМрдХрд░рд┐рдпреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред

рдЫрд╡рд┐

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓реЗрдВред рдкреАрдПрд╕

рдЫрд╡рд┐

рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ

: рдореИрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдорд┐рд▓рд╛ - рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдЫрд╡рд┐ рдереА рдЬрд┐рд╕рдореЗрдВ рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рд╕рдорд╛рдзрд╛рди рд╣реИред рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ /etc/docker/daemon.json :

{
    "dns": ["8.8.4.4", "8.8.8.8"]
}

 service docker restart

All Articles