рдЕрдм рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдБ рдХрд┐ рдПрдХрддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдЫреЛрдЯреА gamedev рдХрдВрдкрдиреА рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ рдФрд░ рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрднреА рднреА, 2020 рдпрд╛рд░реНрдб рдореЗрдВ рд╣реИ, рдпрд╣ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдбреНрд░рд╛рдЗрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ ...
рдорд╛рдЙрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдпрд╣ рдРрд╕рд╛ рдордЬрд╛рдХ рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рддрдХ, рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЧреЗрдо рдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рдереА:
рдПрдВрдбреНрд░реЙрдпрдб
- рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ
- Android рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛ рд░рд╣рд╛ рд╣реИ
- Google рдбрд┐рд╕реНрдХ рдкрд░ рдПрдХ рд╕рд╛рдЭрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рддрд╛ рд╣реИ
- рдкрд░реАрдХреНрд╖рдХ рдирд╡реАрдирддрдо рдмрд┐рд▓реНрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ
- Redmine рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдХрд╛рд░реНрдп рдлреЗрдВрдХрддрд╛ рд╣реИ
- рдЧреЛрдЯреЛ: рдЪрд░рдг 1
IOS рд╕рдВрд╕реНрдХрд░рдг рдереЛрдбрд╝рд╛ рдкреЗрдЪреАрджрд╛ рд╣реИ:
рдЖрдИрдУрдПрд╕
- рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ
- Xcode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ
- рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдЗрд╕рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг, рдПрд╕рдбреАрдХреЗ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИ
- рд╕рдВрдХрд▓рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛
- рд╕рдВрдЧреНрд░рд╣реАрдд
- IPA рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдпрд╣ рд╕рдм рдмрд╣реБрдд рдЬрд▓реНрджреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд╣рд╛рд╣рд╛)
- рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк Google рдбреНрд░рд╛рдЗрд╡ рдкрд░ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЖрдИрдкреАрдП рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
- рдпрд╛ TestFlight рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдЖрдк рдХреБрдЫ рджрд┐рдиреЛрдВ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
- рдкрд░реАрдХреНрд╖рдХ рдирд╡реАрдирддрдо IPA рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ
- рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддрд╛ рд╣реИ
- Redmine рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдХрд╛рд░реНрдп рдлреЗрдВрдХрддрд╛ рд╣реИ
- рдЧреЛрдЯреЛ: рдЪрд░рдг 1
рдпрд╣рд╛рдБ рдРрд╕рд╛ рджреБрдГрдЦ рд╣реИред рдФрд░ рдЕрдЧрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрднреА рднреА рдХрд┐рд╕реА рддрд░рд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп (рдирд╣реАрдВ) рд╣реИ, рддреЛ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП - рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд▓рдВрдмрд╛, рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЧрд▓рдд рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдзрд┐рдХрд╛рдВрд╢ рдСрдкрд░реЗрд╢рди рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдбреЗрд╡рд▓рдкрд░ (рдпрд╣рд╛рдВ рдорд╛рдЙрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ) рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЬреЛ рд╕рдордп рд╡рд┐рдХрд╛рд╕ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрддрд╛ рд╣реИ, рдПрдХреНрд╕рдХреЛрдб рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдпрд╣ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рд░ рдХреЛрдИ рдПрдХ рд╣реА рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдЗрд╕ рд╕рдВрдкреВрд░реНрдг рдирд╛рд░рдХреАрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдк рдХреБрдЫ рдкреВрдЫрдиреЗ / рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЖ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧреЗрдо рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ :)
рдФрд░ рдпрд╣рд╛рдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ,
рд▓рд┐рдпреЛрдкреЛрдЯрдо рдХреЗ рджрд╛рдЦрд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рд╕рд╛рдЗрдХрд┐рд▓
рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдПрдХ рдФрд░ рдкреНрд░реЗрдореА рдФрд░ рд╕рдм рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди, рдореИрдВрдиреЗ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдо рдПрдХ BASH рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ:
- GIT рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдирд╡реАрдирддрдо рдкрд░рд┐рд╡рд░реНрддрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
- рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ
- рдПрдВрдбреНрд░реЙрдпрдб рдХреЗ рд▓рд┐рдП рдПрдкреАрдХреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг, рд╡рд┐рдХрд╛рд╕ рдФрд░ рд░рд┐рд▓реАрдЬ рдореЗрдВ
- IOS Xcode рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдбреЗрд╡рд▓рдк рдФрд░ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ
- рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ
- рдкреБрд░рд╛рд▓реЗрдЦ рдФрд░ рдирд┐рд░реНрдпрд╛рдд IPA
- рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрдЯреАрдХрд░рдг рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ
- рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HTML рдкреГрд╖реНрда рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ
- Sshpass рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдпрд╣ рд╕рдм рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ
- рд╕рднреА рд▓реЙрдЧ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЗрдВ
- рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕реВрдЪрдирд╛ рднреЗрдЬреЗрдВ
рдФрд░ рдпрд╣ рд╕рдм рдПрдХ рдмрдЯрди рдХреЗ рд╕реНрдкрд░реНрд╢ рдореЗрдВред рдПрдХрддрд╛ рдФрд░ Xcode рд╢реБрд░реВ рдХрд┐рдП рдмрд┐рдирд╛ред рдХрд┐рд╕реА рддрд░рд╣ рдЕрдзрд┐рдХ рдордЬрд╝рд╛, рд╣реБрд╣?

рдЕрдм, рдЬрдм рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдХ рдХреЛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреЛ рд▓рд┐рдВрдХ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдЙрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рд╕реАрдзреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред рдпрд╣ рдЖрдИрдУрдПрд╕ рдХреЗ рддрд╣рдд рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, BASH рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдлреЗрдВрдЧрд╢реБрдИ рдореЗрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдиреАрдЪреЗ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рджрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ:
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдордВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХрддрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ
рдореИрдиреБрдЕрд▓ рдЙрди рд╕рднреА рддрд░реНрдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд┐рд▓реНрдб APK рдЪрд▓рд╛рдПрдВ:
$UNITY -batchmode -quit -projectPath "$PATH" -executeMethod Game.BuildActions.AndroidDevelopment -buildTarget android -logFile "$LOGS_PATH/android_development.log"
рдпрд╣рд╛рдБ
-buildTarget рдмрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ -
executeMethod рдПрдХрддрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рджрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
static void AndroidDevelopment () { PlayerSettings.SetScriptingBackend (BuildTargetGroup.Android, ScriptingImplementation.IL2CPP); PlayerSettings.SetScriptingDefineSymbolsForGroup (BuildTargetGroup.Android, "DEV"); EditorUserBuildSettings.SwitchActiveBuildTarget (BuildTargetGroup.Android, BuildTarget.Android); EditorUserBuildSettings.development = true; EditorUserBuildSettings.androidETC2Fallback = AndroidETC2Fallback.Quality32Bit; BuildReport report = BuildPipeline.BuildPlayer (GetScenes (), ANDROID_DEVELOPMENT_FILE, BuildTarget.Android, BuildOptions.None); int code = (report.summary.result == BuildResult.Succeeded) ? 0 : 1; EditorApplication.Exit (code); }
рдпрд╣рд╛рдБ рдЖрдк рдмрд┐рд▓реНрдб, рдХрдВрдбреАрд╢рди рдЗрддреНрдпрд╛рджрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдо BASH рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред
Xcode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреИрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ
рдПрдХрддрд╛ рдиреЗ Xcode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ IPA рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд, рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
xcodebuild -project "$IOS_PATH/Unity-iPhone.xcodeproj" -quiet > "$LOGS_PATH/ios_build_release.log" 2>&1
xcodebuild -project "$IOS_PATH/Unity-iPhone.xcodeproj" -scheme "Unity-iPhone" archive -archivePath "$IOS_RELEASE/Unity-iPhone.xcarchive" -quiet > "$LOGS_PATH/ios_archive_release.log" 2>&1
xcodebuild -exportArchive -archivePath "$IOS_RELEASE/Unity-iPhone.xcarchive" -exportOptionsPlist "$IOS_RELEASE/options.plist" -exportPath $IOS_RELEASE -allowProvisioningUpdates -quiet > "$LOGS_PATH/ios_export_release.log" 2>&1
рдпрд╣рд╛рдВ Options.plist рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрдЯ рд╣реИ рдЬреЛ рдирд┐рд░реНрдпрд╛рдд рд╡рд┐рдзрд┐, рдЯреАрдордЖрдИрдбреА рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рднреА рдЙрдкрд▓рдмреНрдз рдкреИрд░рд╛рдореАрдЯрд░ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
xcodebuild -help
рдЗрди рд╕рднреА рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рд╕рд╛рде,
рдПрдХрддрд╛ рдПрдХрддрд╛- iPhone.xcodeproj рдЬреЛ рдПрдХрддрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕
xcworkspace рд╣реИ , рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
BASH рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдкрд░ рд╕рдВрджреЗрд╢ рдХреИрд╕реЗ рднреЗрдЬреЗрдВ
рдЖрдкрдХреЛ
рдмреЙрдЯрдлрд╝рд╛рджрд░ рдмреЙрдЯ рдЦреЛрдЬрдиреЗ рдХреА
рдЬрд╝рд░реВрд░рдд рд╣реИ , рдЙрд╕реЗ рд▓рд┐рдЦреЗрдВ / рд╢реБрд░реВ рдХрд░реЗрдВ, рдпрд╛ / рдиреНрдпреВрдмреЙрдЯ, рдЦреЗрддреЛрдВ рдореЗрдВ рднрд░реЗрдВ рдФрд░ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдмреЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
curl $BOT_PROXY https://api.telegram.org/bot$BOT_TOKEN/sendMessage -m 60 -s -X POST -d chat_id=$CHAT_ID -d text="$1" > "$LOGS_PATH/bot.log" 2>&1
рдпрд╣рд╛рдБ
CHAT_ID рдЪреИрдЯ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ рд╣реИ рдЬрд╣рд╛рдБ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрд╕ рд╕рдореВрд╣ рдореЗрдВ рдмреЙрдЯ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдХ рдмреИрдареЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕рдВрджреЗрд╢ рдкрдврд╝рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рджреЗрддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
https://api.telegram.org/bot[BOT_TOKEN]/getUpdates
рдФрд░ рдЙрд╕ рд╕рдореВрд╣ рдХреА рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕рджрд╕реНрдпред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕рдореВрд╣ рдХреА рдЖрдИрдбреА рдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рджрд╕реНрдп рдХреЛ рднреЗрдЬреЗрдВ рдХрд┐ рдХрд┐рд╕рдХреЛ рднреЗрдЬрдирд╛ рд╣реИред рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрдиреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рдВрд╕, рдкреИрдЪ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ HTML
рд╕реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
sshpass рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред
рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛ рдЬрд▓реНрджреА рд╕реЗ рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
рдбреЗрдореЛ рдФрд░ рд╕реНрд░реЛрдд
рдмреЗрд╢рдХ, рдпрд╣ рд╕рдм рдПрдХ рд╣реА Gitlab CI / CD рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдпрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ, рд░рдирд░реНрд╕, рдмрд┐рд▓реНрдб рдФрд░ рдЯреЗрд╕реНрдЯред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рддреИрдпрд╛рд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдФрд░ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рд╣рдо рдЗрд╕ рдкрд░ рдЖрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдпрд╣ рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд▓реНрджреА рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд▓рд┐рдЦреА рдЧрдИ рдереАред
2020 рдореЗрдВ рд╕рднреА рд╕реНрд╡рдЪрд╛рд▓рди! рд░реЛрдмреЛрдЯ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЖрджрдореА рдирд╣реАрдВред