рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ gitlab CI рдФрд░ рдХрд┐рд░рд╛рдП рдкрд░ VPS рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ редрдкреГрд╖реНрдарднреВрдорд┐
рдХрд╛рдо рдкрд░, рдпреВ.рд╡реА. DevOps'y рдиреЗ рдореБрдЭреЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ ( рдореИрдВ рдЧреЛ-рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ )ред рдореЗрд░реА рдЕрдкрдиреА рдкрд╛рд▓рддреВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ - рдФрд░ рдореИрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдкрдирд╛ рдЧреАрддрд╛рд▓рд╛рдм рдЙрдард╛рдиреЗ рдХреА рдмрд╣реБрдд рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ (VPS рд╡реИрд╕реЗ рднреА рд░рдмрд░ рдирд╣реАрдВ рд╣реИ)редрдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрдВрдХрдбрд╝реЗ
рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдмрдирд╛рдПрдВ
рд╣рдо рдЙрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВредрдореИрдВрдиреЗ nginx рдХреЗ рд╕рд╛рде docker рдХреЛ рдмрдврд╝рд╛рдиреЗ рдФрд░ html рдкреГрд╖реНрда рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛редрд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╕рдВрд░рдЪрдирд╛:DockerfileFROM nginx:latest
COPY html /var/www/html
COPY nginx.conf /etc/nginx/nginx.conf
nginx.confevents {}
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