рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рд╕реАрдЖрдИрд╕реАрдбреА: рдХреМрди рд╕реЗ рдЙрдкрдХрд░рдг рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдмрдбрд╝реА рдФрд░ рдкреНрд░рд╕рд┐рджреНрдз рдХрдВрдкрдирд┐рдпрд╛рдВ рд╣реА рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ

рд╕реАрдЖрдИрд╕реАрдбреА рдЯреВрд▓ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдХреНрд╕рд░ рдмрдбрд╝реА рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ - рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ, рдУрдХреБрд▓рд╕, рд░реЗрдб рд╣реИрдЯ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдлреЗрд░рд╛рд░реА рдФрд░ рдирд╛рд╕рд╛ред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рдмреНрд░рд╛рдВрдб рдХреЗрд╡рд▓ рдорд╣рдВрдЧреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдПрдХ рдбрд┐рдЬрд╛рдЗрдирд░ рд╡рд╛рд▓рд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡рд╣рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди рдЯреВрд▓ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдЫреЛрдЯреА рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред

рд╣рдо рдЖрдкрдХреЛ рдиреАрдЪреЗ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдЖрдк рдХрд┐рди рдмрд╛рддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рд╕реАрдЖрдИрд╕реАрдбреА: рдХреМрди рд╕реЗ рдЙрдкрдХрд░рдг рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдмрдбрд╝реА рдФрд░ рдкреНрд░рд╕рд┐рджреНрдз рдХрдВрдкрдирд┐рдпрд╛рдВ рд╣реА рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ
- рд╕реАрд╕рд╛рдмрд╛ рдмрд╛рд▓рд╛рдЬрд╝ - рдЕрдирд╕реНрдкреНрд▓реИрд╢

рдкреАрдПрдЪрдкреА рд╕реЗрдВрд╕рд░

рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╕реАрдЖрдИ рд╕рд░реНрд╡рд░ рдЬреЛ PHP рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдХрд╛рдВрдЯрд╛ рд╣реИ рдкреАрдПрдЪрдкреАрд╕реАрдЖрдИ. PHPCI рд╕реНрд╡рдпрдВ рдЕрднреА рднреА рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдирд╣реАрдВред

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"

рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИрд╡рд╣ PHP рд╕реЗрдВрд╕рд░ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╣реЛрд╕реНрдЯ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рд╕реНрд╡рдпрдВ-рд╣реЛрд╕реНрдЯреЗрдб)ред рдпрд╣ рдХрд╛рд░реНрдп рдХрд╛рдлреА рд╡рд┐рд╕реНрддреГрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ GitHub рдкрд░ рд╣реИ.

рд░реЗрдХреНрд╕

рд░реЗрдХреНрд╕ рд░рд┐рдореЛрдЯ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрд╢рди рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬреАрдирд┐рдпрд░ рдлрд╝реЗрд░реЗрдиреНрдХ рдПрд░реНрдХреА рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд░реЗрдХреНрд╕ рдкрд░реНрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рднрд╛рд╖рд╛ рдХреЛ рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ - рдЕрдзрд┐рдХрд╛рдВрд╢ рдСрдкрд░реЗрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛) рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдХреНрд╕рд░ рджрд╕ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреА рд╣реИрдВред рдпрд╣рд╛рдВ рдПрдХрд╛рдзрд┐рдХ рд╕рд░реНрд╡рд░реЛрдВ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдФрд░ рдЕрдкрдЯрд╛рдЗрдо рдЪрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

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;
};

рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЯреВрд▓ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ ╨╕ рдИ-рдкреБрд╕реНрддрдХрдЬреЛ рдлрд┐рд▓рд╣рд╛рд▓ рдкреВрд░рд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ.

рдУрдкрди рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд┐рд╕ (рдУрдмреАрдПрд╕)

рдпрд╣ рд╡рд┐рддрд░рдг рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдордВрдЪ рд╣реИред рдЗрд╕рдХрд╛ рдХреЛрдб рдЦреБрд▓рд╛ рд╣реИ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реИ GitHub. рдЯреВрд▓ рдХреА рд▓реЗрдЦрдХ рдХрдВрдкрдиреА рд╣реИ рдиреЛрд╡реЗрд▓. рдЙрдиреНрд╣реЛрдВрдиреЗ SuSE рд╡рд┐рддрд░рдг рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рдФрд░ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╢реБрд░реВ рдореЗрдВ рдУрдкрдиSUSE рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд┐рд╕ рдХрд╣рд╛ рдЧрдпрд╛ред рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдУрдкрди рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд┐рд╕ рдкреНрд░рдпреБрдХреНрдд рдУрдкрдирдПрд╕рдпреВрдПрд╕рдИ, рдЯрд┐рдЬрд╝реЗрди рдФрд░ рд╡реАрдбрд┐рдпреЛрд▓реИрди рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдПред рдбреЗрд▓, рдПрд╕рдЬреАрдЖрдИ рдФрд░ рдЗрдВрдЯреЗрд▓ рднреА рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЫреЛрдЯреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рднреА рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдирдХреЗ рд▓рд┐рдП, рд▓реЗрдЦрдХреЛрдВ рдиреЗ рд╕рдВрдЧреНрд░рд╣ рдХрд┐рдпрд╛ (рдкреЗрдЬ 10) рдкреВрд░реНрд╡ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкреИрдХреЗрдЬ. рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рдпрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореБрдлрд╝реНрдд рд╣реИ - рдЗрд╕реЗ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдкреИрд╕рд╛ рдЦрд░реНрдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдкреВрд░реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ, рдЙрдкрдХрд░рдг рдиреЗ рдХрднреА рднреА рд╡реНрдпрд╛рдкрдХ рд╕рдореБрджрд╛рдп рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╣ рдерд╛ рд▓рд┐рдирдХреНрд╕ рдбреЗрд╡рд▓рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛, рдЦреБрд▓реЗ рдУрдПрд╕ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ред рдпрд╣ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд╡рд┐рд╖рдпрдЧрдд рдордВрдЪреЛрдВ рдкрд░ рдЕрдкрдиреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдЦреЛрдЬреЗрдВред рд▓реЗрдХрд┐рди Quora рдирд┐рд╡рд╛рд╕рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдЖрдИрдЖрд░рд╕реА рдЪреИрдЯ рдлрд╝реНрд░реАрдиреЛрдб рдкрд░, рд╕рдореБрджрд╛рдп рдХреЗ рд╕рджрд╕реНрдп рдХрд╛рдлреА рддрддреНрдкрд░рддрд╛ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддреЗ рд╣реИрдВред рдПрдХ рдЫреЛрдЯреЗ рд╕рдореБрджрд╛рдп рдХреА рд╕рдорд╕реНрдпрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ (рдкреАрдбреАрдПрдл рдФрд░ рдИрдкреАрдпреВрдмреА)ред рд╡рд╣реА. рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдУрдмреАрдПрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ (рдЙрджрд╛рд╣рд░рдг рдФрд░ рдорд╛рдорд▓реЗ рд╣реИрдВ)ред

рд░реБрдВрдбреЗрдХ

рдЯреВрд▓ рдЦреЛрд▓реЗрдВ (GitHub), рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░ рдФрд░ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд░реНрд╡рд░ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд░реБрдВрдбреЗрдХ рдХрдВрдЯреНрд░реЛрд▓рдЯрд┐рдпрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рдмрдВрдзрди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреА "рдмреЗрдЯреА" рд╣реИред рд░реБрдВрдбреЗрдХ 2010 рдореЗрдВ рдЗрд╕рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЧрдпрд╛ рдФрд░ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд▓реА - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрдкреЗрдЯ, рд╢реЗрдл, рдЧрд┐рдЯ рдФрд░ рдЬреЗрдирдХрд┐рдВрд╕ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдгред

рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡реЙрд▓реНрдЯ рдбрд┐рдЬреНрдиреА рдХрдВрдкрдиреА, Salesforce ╨╕ рдЯрд┐рдХрдЯрдорд╛рд╕реНрдЯрд░. рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкреНрд╕ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░рдВрдбреЗрдХ рдХреЛ Apache v2.0 рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред

рдПрдХ рд░реЗрдбрд┐рдЯ рдирд┐рд╡рд╛рд╕реА рдЬрд┐рд╕рдиреЗ рд░рдВрдбреЗрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛, рд╡рд╣ рдмреЛрд▓рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдореИрдВрдиреЗ рд╕реНрд╡рдпрдВ рд╣реА рдХрд░ рд▓рд┐рдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рдореЗрдВ рдЙрдирдХреА рдорджрдж рдХреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдФрд░ рдИ-рдкреБрд╕реНрддрдХреЗрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХрд╛рд╢рд┐рддред

рдЖрдк рдЯреВрд▓ рдХреЛ рдСрдирд▓рд╛рдЗрди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛рдПрдБ рднреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

рдЧреЛрд╕реАрдбреА

рдЯреВрд▓ рдЦреЛрд▓реЗрдВ (GitHub) рдХреЛрдб рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ред рдЗрд╕реЗ рдХрдВрдкрдиреА рдиреЗ 2007 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдерд╛ рд╡рд┐рдЪрд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ тАФ рддрдм рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо рдХреНрд░реВрдЬрд╝ рдерд╛ред

GoCD рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдирд▓рд╛рдЗрди рдХрд╛рд░ рдмрд┐рдХреНрд░реА рд╕рд╛рдЗрдЯ рдСрдЯреЛрдЯреНрд░реЗрдбрд░, рд╡рдВрд╢рд╛рд╡рд▓реА рд╕реЗрд╡рд╛ рд╡рдВрд╢рд╛рд╡рд▓реА рдФрд░ рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдб рдкреНрд░рджрд╛рддрд╛ рдмрд╛рд░реНрдХрд▓реЗрдХрд╛рд░реНрдб рдХреЗ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рдЪреМрдерд╛рдИ рдЯреВрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓рдШреБ рд╡реНрдпрд╡рд╕рд╛рдп рдХрд╛ рдЧрдарди рдХрд░рддрд╛ рд╣реИ.

рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкреНрд╕ рдХреЗ рдмреАрдЪ рд╕реЗрд╡рд╛ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЛ рдЗрд╕рдХреЗ рдЦреБрд▓реЗрдкрди рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕реЗ Apache v2.0 рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣реАрдВ, рдЬреАрдУрд╕реАрдбреА рдпрд╣ рд╣реИ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ - рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдХреНрд▓рд╛рдЙрдб рд╕рдорд╛рдзрд╛рдиред рд╕рдЪреНрдЪреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ - рдЗрд╕рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдСрдкрд░реЗрдЯрд░ рдФрд░ рдЯреАрдореЗрдВ рд╣реИрдВред рд╕рд╛рде рд╣реА, рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд░рд╛рдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддреЗ рд╣реИрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдЬреЗрдВрдЯреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред

рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рд╕реАрдЖрдИрд╕реАрдбреА: рдХреМрди рд╕реЗ рдЙрдкрдХрд░рдг рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдмрдбрд╝реА рдФрд░ рдкреНрд░рд╕рд┐рджреНрдз рдХрдВрдкрдирд┐рдпрд╛рдВ рд╣реА рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ
- рдореИрдЯ рд╡рд╛рдЗрд▓реНрдбрдмреЛрд░ - рдЕрдирд╕реНрдкреНрд▓реИрд╢

рдпрджрд┐ рдЖрдк GoCD рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ. рдЗрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ GoCD рдбреЗрд╡рд▓рдкрд░ рдмреНрд▓реЙрдЧ рдореИрдиреБрдЕрд▓ рдХреЗ рд╕рд╛рде рд╕реЗрдЯрдЕрдк рдкрд░.

рдЬреЗрдирдХреАрдВрд╕

рдЬреЗрдирдХрд┐рдВрд╕ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рд╕реАрдЖрдИрд╕реАрдбреА рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рдирдХ - рдмреЗрд╢рдХ, рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдЪрдпрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рдЯреВрд▓ 2011 рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрдпрд╛, рдмрдирдиреЗ рдУрд░реЗрдХрд▓ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣рдбрд╕рди рдХрд╛ рдПрдХ рдХрд╛рдВрдЯрд╛ред

рдЖрдЬ рдЬреЗрдирдХреАрдВрд╕ рдХреЗ рд╕рд╛рде ╤А╨░╨▒╨╛╤В╨░╤О╤В рдирд╛рд╕рд╛, рдирд┐рдирдЯреЗрдВрдбреЛ рдФрд░ рдЕрдиреНрдп рдмрдбрд╝реЗ рд╕рдВрдЧрдардиреЛрдВ рдореЗрдВред рддрдерд╛рдкрд┐ рдЕрдзрд┐рдХ 8% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджрд╕ рд▓реЛрдЧреЛрдВ рддрдХ рдХреА рдЫреЛрдЯреА рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЦрд╛рддреЗ рд╣реИрдВред рдЙрддреНрдкрд╛рдж рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореБрдлрд╝реНрдд рдФрд░ рд╡рд┐рддрд░рд┐рдд рд╣реИ рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд. рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ рдЬреЗрдирдХреАрдВрд╕ рдХреЛ рд╕реНрд╡рдпрдВ рд╣реЛрд╕реНрдЯ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд░реНрдкрд┐рдд рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЙрдкрдХрд░рдг рдХреЗ рдкреВрд░реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рджреМрд░рд╛рди, рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдмрдбрд╝рд╛ рд╕рдореБрджрд╛рдп рдмрди рдЧрдпрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рд╕рдВрдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рд░реЗрдбрд┐рдЯ ╨╕ Google рд╕рдореВрд╣. рдЬреЗрдирдХреАрдВрд╕ рдкрд░ рд╕рд╛рдордЧреНрд░реА рд╣реЗрдмреНрд░реЗ рдкрд░ рднреА рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдпрджрд┐ рдЖрдк рд╕рдореБрджрд╛рдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЬреЗрдирдХрд┐рдВрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдРрд╕рд╛ рд╣реИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ ╨╕ рдбреЗрд╡рд▓рдкрд░ рдЧрд╛рдЗрдб. рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛рдУрдВ рдФрд░ рдкреБрд╕реНрддрдХреЛрдВ рдХреА рднреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ:

рдЬреЗрдирдХреАрдВрд╕ рдХреЗ рдкрд╛рд╕ рдХрдИ рдЙрдкрдпреЛрдЧреА рд╕рд╛рдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИрдВред рдкрд╣рд▓рд╛ рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реИ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди. рдпрд╣ рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЬреЗрдирдХреАрдВрд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЯреВрд▓ рдХреЗ рдЧрд╣рди рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ рднреА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рд╣реИ рд╕рд┐рд╕реНрдЯрдо рдЬреЗрдирдХрд┐рдВрд╕ рдПрдХреНрд╕ рдмрд╛рджрд▓ рдХреЗ рд▓рд┐рдП. рдпрд╣ рдХреБрдЫ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдХреЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЖрдИрдЯреА рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдкрд░ рддреИрдирд╛рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдбрд┐рд▓реАрд╡рд░реА рдХреЛ рддреЗрдЬ рдХрд░рддрд╛ рд╣реИред

рдмрд┐рд▓реНрдбрдмреЛрдЯ

рдпрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрдХреНрд░ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддрдд рдПрдХреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╣реИред рдЬрдм рднреА рдЗрд╕рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдб рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред

рдЯреВрд▓ рдХреЗ рд▓реЗрдЦрдХ рдЗрдВрдЬреАрдирд┐рдпрд░ рдмреНрд░рд╛рдпрди рд╡рд╛рд░реНрдирд░ рдереЗред рдЖрдЬ рд╡рд╣ рдбреНрдпреВрдЯреА рдкрд░ рд╣реИ рдмрджрд▓рд╛ рд╣реБрдЖ рдмрд┐рд▓реНрдбрдмреЙрдЯ рдУрд╡рд░рд╕рд╛рдЗрдЯ рдХрдореЗрдЯреА рдкрд╣рд▓ рд╕рдореВрд╣, рдЬрд┐рд╕рдореЗрдВ рдЫрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдмрд┐рд▓реНрдбрдмреЛрдЯ рдкреНрд░рдпреБрдХреНрдд рдПрд▓рдПрд▓рд╡реАрдПрдо, рдорд╛рд░рд┐рдпрд╛рдбреАрдмреА, рдмреНрд▓реЗрдВрдбрд░ рдФрд░ рдбреЙ.рд╡реЗрдм рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ wxWidgets рдФрд░ Flathub рдЬреИрд╕реА рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рд╕рднреА рдЖрдзреБрдирд┐рдХ рд╡реАрд╕реАрдПрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рдЪреАрд▓реА рдирд┐рд░реНрдорд╛рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд░рдЦрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдЙрди рд╕рднреА рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рддреГрддреАрдп-рдкрдХреНрд╖ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ рдЖрдИрдмреАрдПрдо рдореИрдиреБрдЕрд▓.

рдмреЗрд╢рдХ, рд╡рд╣ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рд╣реИрдВ DevOps рдЙрдкрдХрд░рдг рдЬрд┐рди рдкрд░ рдЫреЛрдЯреЗ рд╕рдВрдЧрдардиреЛрдВ рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЛ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЯреВрд▓ рджреЗрдВ, рдФрд░ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред

рд╣рдо рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдмреНрд▓реЙрдЧ рдореЗрдВ рдХреНрдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ