рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдиреА рдкрдбрд╝рддреА рд╣реИред рдХрднреА-рдХрднреА рдпрд╣ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реЛрддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдпрд╣ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреА рдХреБрдЫ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ рдФрд░ рдЯреАрдорд╕рд┐рдЯреА рд╕реЗ рдЧрд┐рдЯрд╣рдм рдПрдХреНрд╢рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдФрд░ рдЗрд╕рд╕реЗ рдпрд╣реА рдкрд░рд┐рдгрд╛рдо рдирд┐рдХрд▓рд╛ред
рд╣рдо рдХреНрдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВрдЧреЗ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЖрдЗрдП рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ/рдЬрд╛рд╡рд╛ 11/рдорд╛рд╡реЗрди рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реЛрдЧреА; рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг REST API рдирд┐рдпрдВрддреНрд░рдХ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред
рдЖрдк рдпрд╣рд╛рдВ рд╕реНрд░реЛрдд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
рдЬрд┐рд░рд╛ рдФрд░ рдпреЛрдЬрдирд╛
рдпрд╣ рдХрд╣рдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рд╣рдо рдЖрдорддреМрд░ рдкрд░ JIRA рдХреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЯреНрд░реИрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдЗрдП рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдмреЛрд░реНрдб рдмрдирд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рдкрд╣рд▓реЗ рдЕрдВрдХ рдЬреЛрдбрд╝реЗрдВ:
рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗ рдХрд┐ JIRA рдФрд░ GitHub рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХреМрди рд╕реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬрд╝реЗрдВ рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
рд╣рдорд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдорд╛рд╡реЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдмрдирд╛рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рд╣рдореЗрдВ рдмрд╕ рдПрдорд╡реАрдПрди рдХреНрд▓реАрди рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Github Actions рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд yml рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдореБрдЭреЗ "yml рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ" рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╣рдо рдЗрд╕реЗ .github/ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ/ рдлрд╝рд╛рдЗрд▓ build.yml рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдмрдирд╛рддреЗ рд╕рдордп рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ:
name: Build
on:
pull_request:
branches:
- '*'
push:
branches:
- 'master'
jobs:
build:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.11
- name: Maven Package
run: mvn -B clean package -DskipTests
on тАФ рдпрд╣ рдЙрд╕ рдЗрд╡реЗрдВрдЯ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛рдПрдЧреАред
рдЪрд╛рд▓реВ: рдкреБрд▓_рдЕрдиреБрд░реЛрдз/рдкреБрд╢ - рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рд╣рд░ рдмрд╛рд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рдорд╛рд╕реНрдЯрд░ рдХреЛ рдкреБрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИ (рдиреМрдХрд░рд┐рдпреЛрдВ) рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдЪрд░рдг (рдХрджрдо) рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдПред
рдЗрд╕рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд - рдпрд╣рд╛рдВ рд╣рдо рд▓рдХреНрд╖реНрдп рдУрдПрд╕ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ, рдЖрдк рдореИрдХ рдУрдПрд╕ рднреА рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирд┐рдЬреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд░ рдпрд╣ рдХрд╛рдлреА рдорд╣рдВрдЧрд╛ рд╣реИ (рд▓рд┐рдирдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ)ред
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЖрдкрдХреЛ рдЕрдиреНрдп рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд░рд┐рдпрд╛рдУрдВ/рд╕реЗрдЯрдЕрдк-рдЬрд╛рд╡рд╛ рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдЬрд╛рд╡рд╛ 11 рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рде рдореЗрдВ рд╣рдо рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╣рдо рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдпреЗ рд╡реЗ рддрд░реНрдХ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореЗрд╡реЗрди рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рдмрдЪрд╛ рд╣реИ рд╡рд╣ рд╣реИ: run: mvn -B clean package
рдЭрдВрдбрд╛ -B рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдЧреИрд░-рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рдореЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдорд╛рд╡реЗрди рдЕрдЪрд╛рдирдХ рд╣рдорд╕реЗ рдХреБрдЫ рди рдкреВрдЫрдирд╛ рдЪрд╛рд╣реЗ
рдорд╣рд╛рди! рдЕрдм, рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдорд╛рд╕реНрдЯрд░ рдХреЗ рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рд▓реЙрдиреНрдЪ
рдЕрд╕реЗрдВрдмрд▓реА рдЕрдЪреНрдЫреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕реЗрдВрдмрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд▓рд╛ рдХрджрдо рдкрд░реАрдХреНрд╖рдг рд░рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдЖрдк рдкреАрдЖрд░ рд╕рдореАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ - рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рднреА рдорд░реНрдЬ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреА рд╢рд╛рдЦрд╛ рдЪрд▓рд╛рдирд╛ рдирд╣реАрдВ рднреВрд▓рддрд╛ рд╣реИред
рд╣рдо рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдмрдирд╛рддреЗ рд╕рдордп рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВрдЧреЗ рдФрд░ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╕рд╛рде рд╣реА рд╣рдо рдХреЛрдб-рдХрд╡рд░реЗрдЬ рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред
name: Build
on:
pull_request:
branches:
- '*'
push:
branches:
- 'master'
jobs:
build:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.11
- name: Maven Verify
run: mvn -B clean verify
- name: Test Coverage
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЬреИрдХреЛрдХреЛ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдХреЛрдбрдХреЛрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдХреЛрдбрдХреЛрд╡ рдХреА рдЕрдкрдиреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
${{ secrets.CODECOV_TOKEN }}
- рд╣рдо рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рджреЗрдЦреЗрдВрдЧреЗ, рд░рд╣рд╕реНрдп GitHub рдореЗрдВ рд░рд╣рд╕реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реИ, рд╣рдо рд╡рд╣рд╛рдВ рдкрд╛рд╕рд╡рд░реНрдб/рдЯреЛрдХрди/рд╣реЛрд╕реНрдЯ/рдпреВрдЖрд░рдПрд▓ рдФрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдк GitHub рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд░рд╣рд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
рдЖрдк рдпрд╣рд╛рдВ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЬреИрдХреЛрдХреЛ рдкреНрд▓рдЧрдЗрди рдХреЛ POM рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.4</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<!-- attached to Maven test phase -->
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<reportFormat>plain</reportFormat>
<includes>
<include>**/*Test*.java</include>
<include>**/*IT*.java</include>
</includes>
</configuration>
</plugin>
рдЕрдм рдХреЛрдбрдХреЛрд╡ рдмреЙрдЯ рд╣рдорд╛рд░реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рдХрд╡рд░реЗрдЬ рдкрд░рд┐рд╡рд░реНрддрди рдЧреНрд░рд╛рдл рдЬреЛрдбрд╝ рджреЗрдЧрд╛:
рдЖрдЗрдП рдПрдХ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЬреЛрдбрд╝реЗрдВ
рдЕрдкрдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдореИрдВ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реЛрдирд╛рд░ рдХреНрд▓рд╛рдЙрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП GitHub Actions рдкрд░ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдХрджрдо рд╣реИред рдПрдХреНрд╢рди рдорд╛рд░реНрдХреЗрдЯ рдПрдХ рдЕрдЪреНрдЫреА рдЪреАрдЬрд╝ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдЗрд╕рдиреЗ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдирд┐рд░рд╛рд╢ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрджрдд рд╕реЗ рдореБрдЭреЗ рд╡рд╣ рдПрдХреНрд╢рди рдорд┐рд▓ рдЧрдпрд╛ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЬрд╝рд░реВрд░рдд рдереА рдФрд░ рдЗрд╕реЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕реЛрдирд╛рд░ рдорд╛рд╡реЗрди рдпрд╛ рдЧреНрд░реЗрдбреЗрд▓ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкрдврд╝рддрд╛ рдХреМрди рд╣реИ?!
рдпрд╣ рдХрд┐рд╕реА рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдПрдорд╡реАрдПрди рдкреНрд▓рдЧрдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░реЗрдВрдЧреЗ:
name: SonarCloud
on:
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
jobs:
sonarcloud:
runs-on: ubuntu-16.04
steps:
- uses: actions/checkout@v1
- name: Set up JDK
uses: actions/setup-java@v1
with:
java-version: 1.11
- name: Analyze with SonarCloud
# set environment variables:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
# run sonar maven plugin:
run: mvn -B verify sonar:sonar -Dsonar.projectKey=antkorwin_github-actions -Dsonar.organization=antkorwin-github -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=$SONAR_TOKEN -Dsonar.coverage.jacoco.xmlReportPaths=./target/site/jacoco/jacoco.xml
SONAR_TOKEN - рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
Dsonar.projectKey - рд╕реЛрдирд╛рд░ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо, рдЖрдк рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
Dsonar.рд╕рдВрдЧрдарди - GitHub рд╕реЗ рд╕рдВрдЧрдарди рдХрд╛ рдирд╛рдо.
рд╣рдо рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реЛрдирд╛рд░рдХреНрд▓рд╛рдЙрдб [рдмреЙрдЯ] рдХреЗ рдЖрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ:
рд░рд┐рд╣рд╛рдИ рдкреНрд░рдмрдВрдзрди
рдмрд┐рд▓реНрдб рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП рдЧрдП рд╣реИрдВ, рдФрд░ рд╣рдо рдПрдХ рд░рд┐рд▓реАрдЬрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ GitHub рдХреНрд░рд┐рдпрд╛рдПрдБ рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рдмрдВрдзрди рдХреЛ рдХреИрд╕реЗ рдЕрдзрд┐рдХ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреА рд╣реИрдВред
рдХрд╛рд░реНрдпрд╕реНрдерд▓ рдкрд░, рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдХреЛрдб рдмреЗрд╕ рдмрд┐рдЯрдмрдХреЗрдЯ рдореЗрдВ рд╣реИ (рд╕рдм рдХреБрдЫ рдЙрд╕ рдХрд╣рд╛рдиреА рдЬреИрд╕рд╛ рд╣реИ "рдореИрдВ рджрд┐рди рдХреЗ рджреМрд░рд╛рди рдмрд┐рдЯрдмрдХреЗрдЯ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рд░рд╛рдд рдореЗрдВ рдЧрд┐рдЯрд╣рдм рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реВрдВ")ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдмрд┐рдЯрдмрдХреЗрдЯ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рдВрдЧрдо рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдкреЗрдЬ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╡рд╣рд╛рдВ рдлреЗрдВрдХрдирд╛ рд╣реЛрдЧрд╛, рдорди рдХреЗ рдорд╣рд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬрдирд╛ рд╣реЛрдЧрд╛, рдЬреАрд░рд╛ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХрдорд┐рдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЧрд▓рддреА рдХрд░рдиреЗ рдХреА рдХрдИ рд╕рдВрднрд╛рд╡рдирд╛рдПрдБ рд╣реИрдВ, рдЖрдк рдХреБрдЫ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХреБрдЫ рдРрд╕рд╛ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдкрд╣рд▓реЗ рд╣реА рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХрднреА-рдХрднреА рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ рдХрд┐рд╕ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдП - рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдпрд╛ рдмрдЧ рдлрд┐рдХреНрд╕ рд╣реИ, рдпрд╛ рд╕рдВрдкрд╛рджрди рдкрд░реАрдХреНрд╖рдг рд╣реИ, рдпрд╛ рдХреБрдЫ рдврд╛рдВрдЪрд╛рдЧрддред
GitHub рдХреНрд░рд┐рдпрд╛рдПрдБ рд╣рдорд╛рд░реА рдХреИрд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИрдВ? рдПрдХ рдорд╣рд╛рди рдХрд╛рд░реНрдп рд╣реИ - рд░рд┐рд▓реАрдЬрд╝ рдбреНрд░рд╛рдлреНрдЯрд░, рдпрд╣ рдЖрдкрдХреЛ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯреНрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдореВрд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯреНрд╕ рдлрд╝рд╛рдЗрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
рд░рд┐рдкреЛрд░реНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдЯреЗрдореНрдкрд▓реЗрдЯ (.github/release-drafter.yml):
name-template: 'v$NEXT_PATCH_VERSION'
tag-template: 'v$NEXT_PATCH_VERSION'
categories:
- title: ' New Features'
labels:
- 'type:features'
# ╨▓ ╤Н╤В╤Г ╨║╨░╤В╨╡╨│╨╛╤А╨╕╤О ╤Б╨╛╨▒╨╕╤А╨░╨╡╨╝ ╨▓╤Б╨╡ PR ╤Б ╨╝╨╡╤В╨║╨╛╨╣ type:features
- title: ' Bugs Fixes'
labels:
- 'type:fix'
# ╨░╨╜╨░╨╗╨╛╨│╨╕╤З╨╜╨╛ ╨┤╨╗╤П ╨╝╨╡╤В╨║╨╕ type:fix ╨╕ ╤В.╨┤.
- title: ' Documentation'
labels:
- 'type:documentation'
- title: ' Configuration'
labels:
- 'type:config'
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
template: |
## Changes
$CHANGES
рдбреНрд░рд╛рдлреНрдЯ рд░рд┐рд▓реАрдЬрд╝ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВ (.github/workflows/release-draft.yml):
name: "Create draft release"
on:
push:
branches:
- master
jobs:
update_draft_release:
runs-on: ubuntu-18.04
steps:
- uses: release-drafter/release-drafter@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
рдЕрдм рд╕реЗ рд╕рднреА рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯреНрд╕ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ - рдЬрд╛рджреВ!
рдпрд╣рд╛рдВ рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддрд╛ рд╣реИ: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреАрдЖрд░ рдореЗрдВ рдЯреИрдЧ рд▓рдЧрд╛рдирд╛ рднреВрд▓ рдЬрд╛рдПрдВ? рдлрд┐рд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕ рд╢реНрд░реЗрдгреА рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдП, рдФрд░ рдлрд┐рд░ рд╕реЗ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреАрдЖрд░ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрдиреНрдп рдХреНрд░рд┐рдпрд╛ - рд▓реЗрдмрд▓ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдкрд░ рдЯреИрдЧ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХ рдЯреИрдЧ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЪреЗрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╣рдо рдЕрдкрдиреЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рджреЗрдЦреЗрдВрдЧреЗред
name: "Verify type labels"
on:
pull_request:
types: [opened, labeled, unlabeled, synchronize]
jobs:
triage:
runs-on: ubuntu-18.04
steps:
- uses: zwaldowski/match-label-action@v2
with:
allowed: 'type:fix, type:features, type:documentation, type:tests, type:config'
рдЕрдм рдХрд┐рд╕реА рднреА рдкреБрд▓-рдЕрдиреБрд░реЛрдз рдХреЛ рдХрд┐рд╕реА рдПрдХ рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдкреНрд░рдХрд╛рд░: рдареАрдХ рдХрд░реЗрдВ, рдкреНрд░рдХрд╛рд░: рд╕реБрд╡рд┐рдзрд╛рдПрдБ, рдкреНрд░рдХрд╛рд░: рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг, рдкреНрд░рдХрд╛рд░: рдкрд░реАрдХреНрд╖рдг, рдкреНрд░рдХрд╛рд░: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиред
рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдСрдЯреЛ-рдПрдиреЛрдЯреЗрд╢рди
рдЪреВрдБрдХрд┐ рд╣рдордиреЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рднрд╛рд╡реА рдХрд╛рд░реНрдп рдЬреИрд╕реЗ рд╡рд┐рд╖рдп рдкрд░ рдмрд╛рдд рдХреА рд╣реИ, рддреЛ рдпрд╣ рд▓реЗрдмрд▓рд░ рдЬреИрд╕реА рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ, рдпрд╣ рдкреАрдЖрд░ рдореЗрдВ рдЯреИрдЧ рдбрд╛рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╛рдЗрд▓реЗрдВ рдмрджрд▓реА рдЧрдИ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд┐рд╕реА рднреА рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ [рдмрд┐рд▓реНрдб] рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ .github/workflow
.
рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:
name: "Auto-assign themes to PR"
on:
- pull_request
jobs:
triage:
runs-on: ubuntu-18.04
steps:
- uses: actions/labeler@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
рд╣рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рдмреАрдЪ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
theme:build:
- ".github/**"
- "pom.xml"
- ".travis.yml"
- ".gitignore"
- "Dockerfile"
theme:code:
- "src/main/*"
theme:tests:
- "src/test/*"
theme:documentation:
- "docs/**"
theme:TRASH:
- ".idea/**"
- "target/**"
рдореИрдВ рдЙрд╕ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рд▓реЗрдмрд▓ рдХреЛ рдЙрд╕ рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреА рд╣реИ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд▓реЗрдмрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреА рд╣реИ; рдореИрдЪ-рд▓реЗрдмрд▓ рдмреЙрдЯ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП рд▓реЗрдмрд▓ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рджреЛрдиреЛрдВ рдЪрд░рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рд░реВрдк рдореЗрдВ рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ; рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдмрдирд╛рддреЗ рд╕рдордп рдЖрдкрдХреЛ рд╕реВрдЪреА рд╕реЗ рдПрдХ рд▓реЗрдмрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ
рдореИрдВрдиреЗ GitHub рдХреНрд░рд┐рдпрд╛рдУрдВ (ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, scp рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдФрд░ docker-hub рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдИ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЖрдкрдХреЛ рдмрд╛рдЗрдирд░реА рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛, рдЪрд╛рд╣реЗ рдЖрдкрдХреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд┐рддрдиреА рднреА рдЯреЗрдврд╝реА рдХреНрдпреЛрдВ рди рд╣реЛ рд╣реИред
рдореБрдЭреЗ рд╕рдВрдкреВрд░реНрдг рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдкрд╕рдВрдж рдЖрдпрд╛, рддреЛ рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ GitHub рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдХреИрд╕реЗ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдП (рдпрд╣ рдмрд╛рдЗрдирд░реА рд╕рд╛рдордЧреНрд░реА, рдПрдирдкреАрдПрдо, рдЬрд╛рд░, рдбреЙрдХрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рднрдВрдбрд╛рд░ рд╣реИ)ред
рдбреЙрдХрд░ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдФрд░ рдЙрд╕реЗ GitHub рдкреИрдХреЗрдЬ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
name: Deploy docker image
on:
push:
branches:
- 'master'
jobs:
build_docker_image:
runs-on: ubuntu-18.04
steps:
# Build JAR:
- uses: actions/checkout@v1
- name: set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.11
- name: Maven Package
run: mvn -B clean compile package -DskipTests
# Set global environment variables:
- name: set global env
id: global_env
run: |
echo "::set-output name=IMAGE_NAME::${GITHUB_REPOSITORY#*/}"
echo "::set-output name=DOCKERHUB_IMAGE_NAME::docker.pkg.github.com/${GITHUB_REPOSITORY}/${GITHUB_REPOSITORY#*/}"
# Build Docker image:
- name: Build and tag image
run: |
docker build -t "${{ steps.global_env.outputs.DOCKERHUB_IMAGE_NAME }}:latest" -t "${{ steps.global_env.outputs.DOCKERHUB_IMAGE_NAME }}:${GITHUB_SHA::8}" .
- name: Docker login
run: docker login docker.pkg.github.com -u $GITHUB_ACTOR -p ${{secrets.GITHUB_TOKEN}}
# Publish image to github package repository:
- name: Publish image
env:
IMAGE_NAME: $GITHUB_REPOSITORY
run: docker push "docker.pkg.github.com/$GITHUB_REPOSITORY/${{ steps.global_env.outputs.IMAGE_NAME }}"
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА JAR рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо GitHub docker рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рдкрде рдФрд░ рд╣рдорд╛рд░реА рдЫрд╡рд┐ рдХреЗ рдирд╛рдо рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдХреБрдЫ рддрд░рдХреАрдмреЗрдВ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рд╣рдо рдЕрднреА рддрдХ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ:
- рдПрдХ рдирд┐рд░реНрдорд╛рдг рдЬреИрд╕реЗ: echo "::set-output name=NAME::VALUE" рдЖрдкрдХреЛ рд╡рд░реНрддрдорд╛рди рдЪрд░рдг рдореЗрдВ рдПрдХ рдЪрд░ рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЗрд╕реЗ рдЕрдиреНрдп рд╕рднреА рдЪрд░рдгреЛрдВ рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХреЗред
- рдЖрдк рдЗрд╕ рдЪрд░рдг рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: ${{steps.global_env.outputs.DOCKERHUB_IMAGE_NAME }}
- рдорд╛рдирдХ GITHUB_REPOSITORY рд╡реИрд░рд┐рдПрдмрд▓ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рдЙрд╕рдХреЗ рдорд╛рд▓рд┐рдХ ("рдорд╛рд▓рд┐рдХ/рд░реЗрдкреЛ-рдирд╛рдо") рдХрд╛ рдирд╛рдо рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдирд╛рдо рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЗрд╕ рд▓рд╛рдЗрди рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд╛рдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмреИрд╢ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: ${GITHUB_REPOSITORY#*/}
рдЖрдЧреЗ рд╣рдореЗрдВ рдбреЙрдХрд░ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
docker build -t "docker.pkg.github.com/antkorwin/github-actions/github-actions:latest"
рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ:
docker login docker.pkg.github.com -u $GITHUB_ACTOR -p ${{secrets.GITHUB_TOKEN}}
рдФрд░ рдЫрд╡рд┐ рдХреЛ GitHub рдкреИрдХреЗрдЬ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ:
docker push "docker.pkg.github.com/antkorwin/github-actions/github-actions"
рдЫрд╡рд┐ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдорд┐рдЯ рдХреЗ SHA рд╣реИрд╢ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдВрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - GITHUB_SHA рдпрд╣рд╛рдВ рднреА рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рди рдХреЗрд╡рд▓ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рддреЗ рд╕рдордп, рдмрд▓реНрдХрд┐ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рднреА рдРрд╕рд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдШрдЯрдирд╛, рддреЛ SHA рдЙрд╕ рд╣реИрд╢ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЧрд┐рдЯ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкреАрдЖрд░ рдореЗрдВ рдЧрддрд┐рд░реЛрдз рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдпрд╛рдПрдВ/рдЪреЗрдХрдЖрдЙрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрд╢ рдмрдирд╛рддреА рд╣реИред
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рддреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкреИрдХреЗрдЬ рдЕрдиреБрднрд╛рдЧ (https://github.com/antkorwin/github-actions/packages) рдЦреЛрд▓рдиреЗ рдкрд░, рдЖрдкрдХреЛ рдПрдХ рдирдИ рдбреЙрдХрд░ рдЫрд╡рд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
рд╡рд╣рд╛рдВ рдЖрдк рдбреЙрдХрд░ рдЫрд╡рд┐ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдФрд░ рд╕реЗрд╡рд╛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИред рд╕рд┐рд╕реНрдЯрдордб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╢рд╛рдпрдж рдЕрдЧрд▓реА рдмрд╛рд░ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
рдирд┐рдЧрд░рд╛рдиреА
рдЖрдЗрдП GitHub Actions рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕ рдкрд░ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦреЗрдВред рд╣рдорд╛рд░реЗ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рдПрдХреНрдЪреБрдПрдЯрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд▓рд┐рдЦрдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рд╣рдордиреЗ рдЖрд▓рд╕реА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╣реА рд╕рдм рдХреБрдЫ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рд╣реЛрд╕реНрдЯ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ: SERVER-URL:PORT/actuator/health
$ curl -v 127.0.0.1:8080/actuator/health
> GET /actuator/health HTTP/1.1
> Host: 127.0.0.1:8080
> User-Agent: curl/7.61.1
> Accept: */*
< HTTP/1.1 200
< Content-Type: application/vnd.spring-boot.actuator.v3+json
< Transfer-Encoding: chunked
< Date: Thu, 04 Jun 2020 12:33:37 GMT
{"status":"UP"}
рд╣рдореЗрдВ рдмрд╕ рдХреНрд░реЙрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рд▓рд┐рдЦрдирд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЕрдЪрд╛рдирдХ рдпрд╣ рд╣рдореЗрдВ рдЙрддреНрддрд░ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬреЗрдВрдЧреЗред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдХреНрд░реЙрди рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреИрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдП:
on:
schedule:
- cron: '*/5 * * * *'
рдпрд╣ рд╕рд░рд▓ рд╣реИ, рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдЬреАрдердм рдореЗрдВ рдЖрдк рдРрд╕реЗ рдЗрд╡реЗрдВрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗрдмрд╣реБрдХ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╡рд┐рд╡рд░рдг рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╣реИрдВ:
рдЖрдЗрдП рдХрд░реНрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рд╕реНрдерд┐рддрд┐ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪреЗрдВ:
jobs:
ping:
runs-on: ubuntu-18.04
steps:
- name: curl actuator
id: ping
run: |
echo "::set-output name=status::$(curl ${{secrets.SERVER_HOST}}/api/actuator/health)"
- name: health check
run: |
if [[ ${{ steps.ping.outputs.status }} != *"UP"* ]]; then
echo "health check is failed"
exit 1
fi
echo "It's OK"
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдиреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдХреНрдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА рд╣реИ, рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдпреВрдкреА рд╣реИ рдФрд░, рдпрджрд┐ рдпрд╣ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ "рдЕрднрд┐рднреВрдд" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 1 - рдЙрдкрдпреБрдХреНрдд рд╣рдерд┐рдпрд╛рд░.
- name: send alert in telegram
if: ${{ failure() }}
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.TELEGRAM_TO }}
token: ${{ secrets.TELEGRAM_TOKEN }}
message: |
Health check of the:
${{secrets.SERVER_HOST}}/api/actuator/health
failed with the result:
${{ steps.ping.outputs.status }}
рд╣рдо рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рддрднреА рднреЗрдЬрддреЗ рд╣реИрдВ рдЬрдм рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдРрдкреНрдкрд▓рдмреЙрдп/рдЯреЗрд▓реАрдЧреНрд░рд╛рдо-рдПрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ; рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдмреЙрдЯ рдЯреЛрдХрди рдФрд░ рдЪреИрдЯ рдЖрдИрдбреА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ:
рдЬреАрдердм рдкрд░ рд░рд╣рд╕реНрдп рд▓рд┐рдЦрдирд╛ рди рднреВрд▓реЗрдВ: рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдпреВрдЖрд░рдПрд▓ рдФрд░ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрдиред
рдмреЛрдирд╕ рдЯреНрд░реИрдХ - рдЖрд▓рд╕реА рдХреЗ рд▓рд┐рдП JIRA
рдореИрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рд╣рдо JIRA рдореЗрдВ рд▓реМрдЯреЗрдВрдЧреЗ, рдФрд░ рд╣рдо рд╡рд╛рдкрд╕ рдЖ рдЧрдП рд╣реИрдВред рд╕реИрдХрдбрд╝реЛрдВ рдмрд╛рд░ рдореИрдВрдиреЗ рд╕реНрдЯреИрдВрдб-рдЕрдк рдкрд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рджреЗрдЦреА рд╣реИ рдЬрдм рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдПрдХ рдлреАрдЪрд░ рдмрдирд╛рдпрд╛, рдПрдХ рд╢рд╛рдЦрд╛ рдХрд╛ рд╡рд┐рд▓рдп рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореБрджреНрджреЗ рдХреЛ рдЬреЗрдЖрдИрдЖрд░рдП рдореЗрдВ рдЦреАрдВрдЪрдирд╛ рднреВрд▓ рдЧрдПред рдмреЗрд╢рдХ, рдЕрдЧрд░ рдпрд╣ рд╕рдм рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛, рддреЛ рдпрд╣ рдЖрд╕рд╛рди рд╣реЛрддрд╛, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рдЖрдИрдбреАрдИ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдмрд┐рдЯрдмрдХреЗрдЯ рдпрд╛ рдЧрд┐рдЯрд╣рдм рдореЗрдВ рдорд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬрд┐рд░рд╛ рдореЗрдВ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдирдИ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ , рдХрднреА-рдХрднреА рджреЛрдмрд╛рд░рд╛ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ рдЖрджрд┐ред рдЬрдм рдЖрдкрдХреЛ рдкреВрд░реА рддрд░рд╣ рдпрд╛рдж рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдмреЛрд░реНрдб рдХреЛ рджреЛрдмрд╛рд░рд╛ рдЦреЛрд▓рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕реБрдмрд╣ рд╕реНрдЯреИрдВрдбрдЕрдк рдкрд░ рдЖрдкрдХреЛ рдЯрд╛рд╕реНрдХ рдмреЛрд░реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
рдЗрд╕ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдп рдореЗрдВ GitHub рднреА рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧрд╛; рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдЬрдм рд╣рдо рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдореБрджреНрджреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдб_рд░рд┐рд╡реНрдпреВ рдХреЙрд▓рдо рдореЗрдВ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдмрд╕ рд╢рд╛рдЦрд╛ рдирд╛рдордХрд░рдг рдкрд░рдВрдкрд░рд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣реИ:
[╨╕╨╝╤П ╨┐╤А╨╛╨╡╨║╤В╨░]-[╨╜╨╛╨╝╨╡╤А ╤В╨░╤Б╨║╨░]-╨╜╨░╨╖╨▓╨░╨╜╨╕╨╡
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреБрдВрдЬреА "GitHub Actions" GA рд╣реИ, рддреЛ GA-8-jira-bot
GA-8 рдХрд╛рд░реНрдп рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдЦрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЬреЗрдЖрдИрдЖрд░рдП рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдПрдЯрд▓рд╕рд┐рдпрди рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╡реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИрдВ, рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЗрд╕ рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ JIRA рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛: рдПрдЯрд▓рд╕рд┐рдпрди/рдЧрдЬрд┐рд░рд╛-рд▓реЙрдЧрд┐рди
jobs:
build:
runs-on: ubuntu-latest
name: Jira Workflow
steps:
- name: Login
uses: atlassian/gajira-login@master
env:
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ JIRA рдореЗрдВ рдПрдХ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╣ рдХреИрд╕реЗ рдХрд░реЗрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рд╣рдо рд╢рд╛рдЦрд╛ рдирд╛рдо рд╕реЗ рдХрд╛рд░реНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ:
- name: Find Issue
id: find_issue
shell: bash
run: |
echo "::set-output name=ISSUE_ID::$(echo ${GITHUB_HEAD_REF} | egrep -o 'GA-[0-9]{1,4}')"
echo brach name: $GITHUB_HEAD_REF
echo extracted issue: ${GITHUB_HEAD_REF} | egrep -o 'GA-[0-9]{1,4}'
- name: Check Issue
shell: bash
run: |
if [[ "${{steps.find_issue.outputs.ISSUE_ID}}" == "" ]]; then
echo "Please name your branch according to the JIRA issue: [project_key]-[task_number]-branch_name"
exit 1
fi
echo succcessfully found JIRA issue: ${{steps.find_issue.outputs.ISSUE_ID}}
рдпрджрд┐ рдЖрдк GitHub рдмрд╛рдЬрд╝рд╛рд░ рдореЗрдВ рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╢рд╛рдЦрд╛ рдХреЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ grep рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╣реА рдЪреАрдЬрд╝ рд▓рд┐рдЦрдиреА рдкрдбрд╝реА, рдХреНрдпреЛрдВрдХрд┐ рдПрдЯрд▓рд╕рд┐рдпрди рдХреА рдпрд╣ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рдереА , рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдЧрд▓рдд рдерд╛ - рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд╡рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рд╕рдордпред
рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдмрдирд╛рддреЗ рд╕рдордп рдХрд╛рд░реНрдп рдХреЛ "рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛" рдХреЙрд▓рдо рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рдмрд╛рдХреА рд╣реИ:
- name: Transition issue
if: ${{ success() }}
uses: atlassian/gajira-transition@master
with:
issue: ${{ steps.find_issue.outputs.ISSUE_ID }}
transition: "Code review"
GitHub рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╕ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдЗрд╢реНрдпреВ рдЖрдИрдбреА рдФрд░ JIRA рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдордиреЗ рдКрдкрд░ рдХрд┐рдпрд╛ рдерд╛ред
рдЙрд╕реА рддрд░рд╣, рдЖрдк рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рддреЗ рд╕рдордп рдХрд╛рд░реНрдпреЛрдВ рдФрд░ GitHub рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╕реЗ рдЕрдиреНрдп рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдм рдЖрдкрдХреА рдХрд▓реНрдкрдирд╛ рдФрд░ рдирд┐рдпрдорд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрджрд┐ рдЖрдк рдХреНрд▓рд╛рд╕рд┐рдХ DEVOPS рдЖрд░реЗрдЦ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдордиреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд┐рдпрд╛ рд╣реИ, рд╢рд╛рдпрдж рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╣реЗрд▓реНрдк-рдбреЗрд╕реНрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдорд╛рди рд▓реЗрдВрдЧреЗ рдХрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрджрд▓ рдЧрдИ рд╣реИ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рд╡рд╛рд▓рд╛ рдмрд╛рдЬрд╝рд╛рд░, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЗрдВ, рдЖрдк рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╕реАрдзреЗ GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд▓реЗрдЦрдХ рдХреЛ рдПрдХ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рдЪрдпрди рдХрд░рдирд╛: рд▓рд┐рдирдХреНрд╕, рдореИрдХ рдУрдПрд╕, рд╡рд┐рдВрдбреЛрдЬрд╝ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рд╕реБрд╡рд┐рдзрд╛ рд╣реИред
- Github рдкреИрдХреЗрдЬ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЪреАрдЬрд╝ рд╣реИ, рд╕рдВрдкреВрд░реНрдг рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЖрдкрдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдВрдбреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрдл рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рд╕рдм рдХреБрдЫ рдПрдХ рдпрд╛ рджреЛ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реИ рдФрд░ GitHub рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХреАрдХреГрдд рд╣реИред рдирд┐рдГрд╢реБрд▓реНрдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдбреЙрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕рдорд░реНрдерди рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд▓рд╛рдн рд╣реИред
- GitHub рдмрд┐рд▓реНрдб рд▓реЙрдЧ рдореЗрдВ рд░рд╣рд╕реНрдп рдЫрд┐рдкрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдЯреЛрдХрди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрддрдирд╛ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдЕрдкрдиреЗ рд╕рднреА рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рджреМрд░рд╛рди, рдореИрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХрднреА рднреА рд░рд╣рд╕реНрдп рдХреЛ рдЙрд╕рдХреЗ рд╢реБрджреНрдз рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦ рдкрд╛рдпрд╛ред
- рдУрдкрди рд╕реЛрд░реНрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдГрд╢реБрд▓реНрдХ
рд╡рд┐рдкрдХреНрд╖:
- рд╡рд╛рдИрдПрдордПрд▓, рдареАрдХ рд╣реИ, рдореИрдВ рдЙрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдмрд╕реЗ рдЖрдо рдкреНрд░рддрд┐рдмрджреНрдз рд╕рдВрджреЗрд╢ "рд╡рд╛рдИрдПрдордПрд▓ рдкреНрд░рд╛рд░реВрдк рдареАрдХ рдХрд░реЗрдВ" рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рдЖрдк рдХрд╣реАрдВ рдЯреИрдм рд░рдЦрдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдЗрд╕реЗ рдЧрд▓рдд рд▓рд╛рдЗрди рдкрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЪрд╛рдВрджрд╛ рдФрд░ рд░реВрд▓рд░ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рд╛рдордиреЗ рдмреИрдардирд╛ рд╕рдмрд╕реЗ рд╕реБрдЦрдж рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИред
- DEBUG, рдХрдорд┐рдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛, рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдЪрд▓рд╛рдирд╛, рдФрд░ рдХрдВрд╕реЛрд▓ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ "рдЖрдкрдиреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ" рд╢реНрд░реЗрдгреА рдХрд╛ рд╣реИ; рдЖрдк рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ IDEA рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЖрджреА рд╣реИрдВ, рдЬрдм рдЖрдк рдХреБрдЫ рднреА рдбреАрдмрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ .
- рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдбреЙрдХрд░ рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдкрд░ рдЕрдкрдиреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реА рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдмреЗрд╢рдХ рдпрд╣ рд╕реНрд╡рд╛рдж рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЬреЗрдПрд╕ рдХреЗ рдмрдЬрд╛рдп рдХреБрдЫ рдФрд░ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред
рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рд╕рднреА рд▓рд┐рдкрд┐рдпреЛрдВ рд╡рд╛рд▓рд╛ рднрдВрдбрд╛рд░ рдпрд╣рд╛рдВ рд╣реИ:
рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдореИрдВ рдкреНрд░рджрд░реНрд╢рди рдХрд░реВрдВрдЧрд╛
рд░рд┐рдкреЛрд░реНрдЯ good рд╣рд╛рдЗрдЬреЗрдирдмрдЧ 2020 рдкрд╛рдЗрдЯрд░ рд╕рдореНрдореЗрд▓рди рдореЗрдВред рдореИрдВ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдпрд╣ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛рдП, рдмрд▓реНрдХрд┐ рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рд░рд╣рд╕реНрдп рднреА рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛!
рд╕реНрд░реЛрдд: www.habr.com