рд╕реАрдЖрдИрд╕реАрдбреА рдЯреВрд▓ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдХреНрд╕рд░ рдмрдбрд╝реА рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ - рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ, рдУрдХреБрд▓рд╕, рд░реЗрдб рд╣реИрдЯ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдлреЗрд░рд╛рд░реА рдФрд░ рдирд╛рд╕рд╛ред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рдмреНрд░рд╛рдВрдб рдХреЗрд╡рд▓ рдорд╣рдВрдЧреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдПрдХ рдбрд┐рдЬрд╛рдЗрдирд░ рд╡рд╛рд▓рд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡рд╣рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди рдЯреВрд▓ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдЫреЛрдЯреА рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред
рд╣рдо рдЖрдкрдХреЛ рдиреАрдЪреЗ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдЖрдк рдХрд┐рди рдмрд╛рддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВред
-
рдкреАрдПрдЪрдкреА рд╕реЗрдВрд╕рд░
рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╕реАрдЖрдИ рд╕рд░реНрд╡рд░ рдЬреЛ PHP рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдХрд╛рдВрдЯрд╛ рд╣реИ
PHP рд╕реЗрдВрд╕рд░ GitHub, GitLab, Mercurial рдФрд░ рдХрдИ рдЕрдиреНрдп рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯреВрд▓ рдПрдЯреМрдо, рдкреАрдПрдЪрдкреА рд╕реНрдкреЗрдХ, рдмреЗрд╣рдЯ, рдХреЛрдбрд╕реЗрдкреНрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ
test:
atoum:
args: "command line arguments go here"
config: "path to config file"
directory: "directory to run tests"
executable: "path to atoum executable"
рд░реЗрдХреНрд╕
рд░реЗрдХреНрд╕ рд░рд┐рдореЛрдЯ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрд╢рди рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬреАрдирд┐рдпрд░ рдлрд╝реЗрд░реЗрдиреНрдХ рдПрд░реНрдХреА рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд░реЗрдХреНрд╕ рдкрд░реНрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рднрд╛рд╖рд╛ рдХреЛ рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ - рдЕрдзрд┐рдХрд╛рдВрд╢ рдСрдкрд░реЗрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛) рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдХреНрд╕рд░ рджрд╕ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреА рд╣реИрдВред рдпрд╣рд╛рдВ рдПрдХрд╛рдзрд┐рдХ рд╕рд░реНрд╡рд░реЛрдВ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдФрд░ рдЕрдкрдЯрд╛рдЗрдо рдЪрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
use Rex -feature => ['1.3'];
user "my-user";
password "my-password";
group myservers => "mywebserver", "mymailserver", "myfileserver";
desc "Get the uptime of all servers";
task "uptime", group => "myservers", sub {
my $output = run "uptime";
say $output;
};
рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЯреВрд▓ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ
рдУрдкрди рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд┐рд╕ (рдУрдмреАрдПрд╕)
рдпрд╣ рд╡рд┐рддрд░рдг рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдордВрдЪ рд╣реИред рдЗрд╕рдХрд╛ рдХреЛрдб рдЦреБрд▓рд╛ рд╣реИ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реИ
рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдкреВрд░реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ, рдЙрдкрдХрд░рдг рдиреЗ рдХрднреА рднреА рд╡реНрдпрд╛рдкрдХ рд╕рдореБрджрд╛рдп рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐
рд░реБрдВрдбреЗрдХ
рдЯреВрд▓ рдЦреЛрд▓реЗрдВ (
рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╡реЙрд▓реНрдЯ рдбрд┐рдЬреНрдиреА рдХрдВрдкрдиреА ,Salesforce ╨╕рдЯрд┐рдХрдЯрдорд╛рд╕реНрдЯрд░ . рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкреНрд╕ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░рдВрдбреЗрдХ рдХреЛ Apache v2.0 рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред
рдПрдХ рд░реЗрдбрд┐рдЯ рдирд┐рд╡рд╛рд╕реА рдЬрд┐рд╕рдиреЗ рд░рдВрдбреЗрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛,
рдЖрдк рдЯреВрд▓ рдХреЛ рдСрдирд▓рд╛рдЗрди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛рдПрдБ рднреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
рдЪрд░рдг рджрд░ рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛: рд░рдВрдбреЗрдХ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдиреМрдХрд░рд┐рдпрд╛рдБ рдкреИрджрд╛ рдХрд░рдиреЗ рдХреЗ рдкрд╛рдБрдЪ рдЪрд░рдг
рдЧреЛрд╕реАрдбреА
рдЯреВрд▓ рдЦреЛрд▓реЗрдВ (
GoCD рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдирд▓рд╛рдЗрди рдХрд╛рд░ рдмрд┐рдХреНрд░реА рд╕рд╛рдЗрдЯ рдСрдЯреЛрдЯреНрд░реЗрдбрд░, рд╡рдВрд╢рд╛рд╡рд▓реА рд╕реЗрд╡рд╛ рд╡рдВрд╢рд╛рд╡рд▓реА рдФрд░ рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдб рдкреНрд░рджрд╛рддрд╛ рдмрд╛рд░реНрдХрд▓реЗрдХрд╛рд░реНрдб рдХреЗ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рдЪреМрдерд╛рдИ рдЯреВрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкреНрд╕ рдХреЗ рдмреАрдЪ рд╕реЗрд╡рд╛ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЛ рдЗрд╕рдХреЗ рдЦреБрд▓реЗрдкрди рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕реЗ Apache v2.0 рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣реАрдВ, рдЬреАрдУрд╕реАрдбреА
-
рдпрджрд┐ рдЖрдк GoCD рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рдЬреЗрдирдХреАрдВрд╕
рдЬреЗрдирдХрд┐рдВрд╕ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░
рдЖрдЬ рдЬреЗрдирдХреАрдВрд╕ рдХреЗ рд╕рд╛рде
рдЙрдкрдХрд░рдг рдХреЗ рдкреВрд░реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рджреМрд░рд╛рди, рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдмрдбрд╝рд╛ рд╕рдореБрджрд╛рдп рдмрди рдЧрдпрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рд╕рдВрдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ
рдЬреЗрдирдХреАрдВрд╕ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛: рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЧрд╛рдЗрдб ;рдЬреЗрдирдХреАрдВрд╕ рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ ;- рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ
рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рдЬреЗрдирдХреАрдВрд╕ - рдмреНрд░реЗрдВрдЯ рд▓рд╕реНрдЯрд░ рдХреА рдХрд┐рддрд╛рдм
рдЬреЗрдирдХрд┐рдВрд╕ 2. рдЖрдЗрдП рд╢реБрд░реВ рдХрд░реЗрдВ "; - рд░рдлрд╛рд▓ рд▓реЗрд╢реНрдХреЛ рдХреА рдкреБрд╕реНрддрдХ "
рдбреЙрдХрд░ рдФрд░ рдЬреЗрдирдХреАрдВрд╕ рдХреЗ рд╕рд╛рде рдирд┐рд░рдВрддрд░ рдбрд┐рд▓реАрд╡рд░реА: рд╕реНрдХреЗрд▓реЗрдмрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ '.
рдЬреЗрдирдХреАрдВрд╕ рдХреЗ рдкрд╛рд╕ рдХрдИ рдЙрдкрдпреЛрдЧреА рд╕рд╛рдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИрдВред рдкрд╣рд▓рд╛ рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реИ
рдмрд┐рд▓реНрдбрдмреЛрдЯ
рдпрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрдХреНрд░ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддрдд рдПрдХреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╣реИред рдЬрдм рднреА рдЗрд╕рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдб рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред
рдЯреВрд▓ рдХреЗ рд▓реЗрдЦрдХ рдЗрдВрдЬреАрдирд┐рдпрд░ рдмреНрд░рд╛рдпрди рд╡рд╛рд░реНрдирд░ рдереЗред рдЖрдЬ рд╡рд╣ рдбреНрдпреВрдЯреА рдкрд░ рд╣реИ
рдмрд┐рд▓реНрдбрдмреЛрдЯ
рдмреЗрд╢рдХ, рд╡рд╣ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рд╣реИрдВ DevOps рдЙрдкрдХрд░рдг рдЬрд┐рди рдкрд░ рдЫреЛрдЯреЗ рд╕рдВрдЧрдардиреЛрдВ рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЛ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЯреВрд▓ рджреЗрдВ, рдФрд░ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
рд╣рдо рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдмреНрд▓реЙрдЧ рдореЗрдВ рдХреНрдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
рдкреНрд░рд╡реЗрд╢ рдкрд░реАрдХреНрд╖рдг - рдмрд╛рд╣реНрдп рд╕реБрд░рдХреНрд╖рд╛ рд▓реЗрдЦрд╛рдкрд░реАрдХреНрд╖рд╛ рдиреЗрдЯрдПрдк рдореИрдХреНрд╕ рдбреЗрдЯрд╛: рд╕рдорд╛рдзрд╛рди рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЗрддрд┐рд╣рд╛рд╕: рдЪреЗрд░реВрдЯ рд╕реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рддрдХ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ DDoS рд╕реБрд░рдХреНрд╖рд╛
рд╕реНрд░реЛрдд: www.habr.com