Gitlab CI рд░рдирд░ рдХреЗ рдЕрдВрджрд░ Docker рдХреЛ Systemd рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реВрдХреНрд╖реНрдо рдиреЛрдЯред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реЛ рдФрд░ рдпрджрд┐ рдЖрдк рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред
рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛Gitlab Runner рдХреЛ Docker рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рд╕рдВрдХрд▓рди рдЪрд░рдг рдФрд░ рдСрдЯреЛрдЯреИрд╕реНрдЯ рдХреЗ рдмрд╛рдж рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреЛрд╕реНрдЯрдЧреНрд░реИрд╕реАрдХреНрдпреВ рдФрд░ рдЯреЙрдордХреИрдЯ) рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ред рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд┐рд╕реНрдЯрдордб рдХреЗ рд╕рд╛рде рдбреЗрдмрд┐рдпрди рдЫрд╡рд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЬрдм рд░рдирд░ рдХреЗ рдЕрдВрджрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рд╢реБрд░реВ рд╣реЛ рдЧрдИрдВред рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдХрджрдо рдХреЛрдб рдерд╛, рдЪрд▓реЛ рдпрд╣ рдХрд╣рддреЗ рд╣реИрдВ:
run-autotests: image: debian/systemd before_script: - cp backend.jar /opt/ - cd /opt script: - java -jar autotests.jar
рд╕рдм рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдХрджрдо рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ ID 1 рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ systemd рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдпрд╛ рд╢рд╛рдпрдж рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рдпрд╣ рд╣реЛрдЧреА рдХрд┐ systemd рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА?
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛ - рдЧреАрддрд╛рд▓рд╛рдм рдкрд░ рдПрдХ рддрд╛рдЬрд╛ рдореБрджреНрджреЗ рдкрд░, рдореИрдВ рдХреЗрд╡рд▓ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рдерд╛ред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдЧрд┐рдЯрд▓реИрдм рдзрд╛рд╡рдХ рд╣рдореЗрд╢рд╛ рд╕реАрдПрдордбреА рдХрдорд╛рдВрдб рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИ:
docker run --cmd /bin/bash ...
рдФрд░ рдЧрд┐рдЯрд▓реИрдм рд╕реАрдПрдордбреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЖрдк рдХреЗрд╡рд▓ ci рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдиреГрддреНрдп рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖред
рд╕рднреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдЕрдгреБ рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЧрд┐рддрд▓рдм рд░рдирд░ рдХреЗ рдЕрдВрджрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдХреНрдпреЛрдВ рди рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рд░рдирд░ рдХреЗ рдЕрдВрджрд░ рд╕рд┐рд╕реНрдЯрдордб рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬреА * рдореЛрд░, рдмреЗрд╢рдХ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рдореЗрд░реЗ рд▓рд┐рдП рдХрдард┐рдирд╛рдЗрдпреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛ред рдбреЙрдХрдЯрд░ рдХрдорд╛рдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рдХреЗрд╡рд▓ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдХрд┐рд╕реА рднреА рддрд░рд╣ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдиреБрдорд╛рдирд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╣рд╛рде рд╕реЗ рдмрдирд╛ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ рд╕рд┐рд░реНрдл рдХрдВрдЯреЗрдирд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧрд╛, рдЖрд╡рд╢реНрдпрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВред рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЖрджреЗрд╢реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред
тЖТ рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ:
GitHubрдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
cd <path-with-code> pip install virtualenv virtualenv venv source venv/bin/activate pip install -r requirements.txt python main.py \ --image dramaturg/docker-debian-systemd
[] рдореЗрдВ рдХрдорд╛рдВрдб рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВред рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ {bash} рдореИрдХреНрд░реЛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ls -la рдФрд░ рдЕрдиреНрдпред рдпрд╣ рд░рдирдЯрд╛рдЗрдо рдкрд░
/ bin / bash -c "рдХрдорд╛рдВрдб" рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдбрд╛рдВрдЯрдирд╛ рдирд╣реАрдВред рд╢рд╛рдпрдж рдХреЛрдб рдореЗрдВ рдпрд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА, рдореИрдВ рдЗрд╕реЗ рдЬрд▓реНрджреА рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░рд▓ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рддреЛ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред
рдирд╛рдЯрдХреАрдпрддрд╛ / docker-debian-systemd рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЫрд╡рд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВрдЗрд╕ рдЫрд╡рд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рдереА рдЬреЛ рдореЗрдЬрдмрд╛рди рдорд╢реАрди рдХреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреЙрдк рдЕрдк рд╣реБрдИ рдереА, рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдХреБрдЫ рдлрд╛рдЗрд▓реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВред Nginx рд╕реЗрд╡рд╛ рдореЗрдВ рдРрд╕реА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди рд╡реЗ PostgreSQL рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдПред рд╕рдорд╛рдзрд╛рди "VOLUME [" / sys / fs / cgroup "," / run "," / run / lock "," / tmp "] рдмреНрд▓реЙрдХ рдХреЛ рд╣рдЯрд╛рдирд╛ рдерд╛, рдЙрд╕рдХреЗ рдмрд╛рдж рд╕рдм рдХреБрдЫ рдПрдХ рдШрдбрд╝реА рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ред