GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

เจฎเฉˆเจจเฉ‚เฉฐ เจ…เจ•เจธเจฐ Java เจตเจฟเฉฑเจš เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเฉ€ เจชเฉˆเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ•เจˆ เจตเจพเจฐ เจ‡เจน เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ•เจˆ เจตเจพเจฐ เจ‡เจน เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพเฅค เจฎเฉˆเจ‚ เจนเจพเจฒ เจนเฉ€ เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ€เจ†เจ‚ เจ•เฉเจ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจŸเฉเจฐเฉˆเจตเจฟเจธ-เจธเฉ€เจ†เจˆ เจ…เจคเฉ‡ เจŸเฉ€เจฎเจธเจฟเจŸเฉ€ เจคเฉ‹เจ‚ เจ—เจฟเฉฑเจŸเจนเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฒเจฟเจœเจพเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ, เจ…เจคเฉ‡ เจ‡เจน เจ‰เจนเฉ€ เจนเฉˆ เจœเฉ‹ เจ‡เจธ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจจเจฟเจ•เจฒเจฟเจ†เฅค

เจ…เจธเฉ€เจ‚ เจ•เฉ€ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจ•เจฐเจพเจ‚เจ—เฉ‡?

เจชเจนเจฟเจฒเจพเจ‚, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ†เจŸเฉ‹เจฎเฉ‡เจŸ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจ†เจ“ เจธเจชเจฐเจฟเฉฐเจ— เจฌเฉ‚เจŸ / เจœเจพเจตเจพ 11 / เจฎเจพเจตเฉ‡เจจ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ€ เจœเจฟเจนเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เจฐเฉ€เจ. เจ‡เจธ เจฒเฉ‡เจ– เจฆเฉ‡ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจคเจฐเจ• เจตเจฟเฉฑเจš เจฌเจฟเจฒเจ•เฉเจฒ เจตเฉ€ เจฆเจฟเจฒเจšเจธเจชเฉ€ เจจเจนเฉ€เจ‚ เจฐเฉฑเจ–เจพเจ‚เจ—เฉ‡; เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจ†เจฒเฉ‡ เจฆเฉเจ†เจฒเฉ‡ เจฆเจพ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเจพ เจธเจพเจกเฉ‡ เจฒเจˆ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ REST API เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ เจธเจพเจกเฉ‡ เจฒเจˆ เจ•เจพเจซเฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจฅเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹: github.com/antkorwin/github-actions เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจชเฉœเจพเจ… เจ‡เจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจคเฉ€เจฌเจฟเฉฐเจฌเจค เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค

เจœเฉ€เจฐเจพ เจ…เจคเฉ‡ เจฏเฉ‹เจœเจจเจพเจฌเฉฐเจฆเฉ€

เจ‡เจน เจ•เจนเจฟเจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจฃ เจนเฉˆ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ JIRA เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฎเฉเฉฑเจฆเฉ‡ เจŸเจฐเฉˆเจ•เจฐ เจตเจœเฉ‹เจ‚ เจตเจฐเจคเจฆเฉ‡ เจนเจพเจ‚, เจ‡เจธเจฒเจˆ เจ†เจ“ เจ‡เจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจฌเฉ‹เจฐเจก เจฌเจฃเจพเจˆเจ เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‡ เจชเจนเจฟเจฒเฉ‡ เจฎเฉเฉฑเจฆเฉ‡ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ€เจ:

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

เจฅเฉ‹เฉœเฉ€ เจฆเฉ‡เจฐ เจฌเจพเจ…เจฆ เจ…เจธเฉ€เจ‚ JIRA เจ…เจคเฉ‡ GitHub เจธเฉเจฎเฉ‡เจฒ เจตเจฟเฉฑเจš เจ•เจฟเจนเฉœเฉ€เจ†เจ‚ เจฆเจฟเจฒเจšเจธเจช เจšเฉ€เจœเจผเจพเจ‚ เจฆเฉ€ เจชเฉ‡เจธเจผเจ•เจธเจผ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ 'เจคเฉ‡ เจตเจพเจชเจธ เจ†เจตเจพเจ‚เจ—เฉ‡เฅค

เจ…เจธเฉ€เจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ€ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจจเฉ‚เฉฐ เจธเจตเฉˆเจšเจพเจฒเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚

เจธเจพเจกเจพ เจŸเฉˆเจธเจŸ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฎเฉˆเจตเฉ‡เจจ เจฆเฉเจ†เจฐเจพ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ‡เจธเจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃเจพ เจ•เจพเจซเจผเฉ€ เจธเจงเจพเจฐเจจ เจนเฉˆ, เจธเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ mvn เจธเจพเจซเจผ เจชเฉˆเจ•เฉ‡เจœ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจ—เฉ€เจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจตเจฐเจ•เจซเจฒเฉ‹ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจตเจพเจฒเฉ€ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉ‹เจเจ—เฉ€, เจ‡เจน เจ‡เฉฑเจ• เจจเจฟเจฏเจฎเจค 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 โ€” เจ‡เจน เจ‰เจธ เจ˜เจŸเจจเจพ เจฆเจพ เจตเจฐเจฃเจจ เจนเฉˆ เจœเจฟเจธ 'เจคเฉ‡ เจธเจพเจกเฉ€ เจธเจ•เฉเจฐเจฟเจชเจŸ เจฒเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€เฅค

'เจคเฉ‡: pull_request/push โ€” เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจนเจฐ เจตเจพเจฐ เจœเจฆเฉ‹เจ‚ เจฎเจพเจธเจŸเจฐ เจจเฉ‚เฉฐ เจชเฉเจธเจผ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฌเจฃเจพเจˆเจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ เจคเจพเจ‚ เจ‡เจธ เจตเจฐเจ•เจซเจฒเฉ‹ เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ•เฉฐเจฎเจพเจ‚ เจฆเจพ เจตเฉ‡เจฐเจตเจพ เจนเฉˆ (เจจเฉŒเจ•เจฐเฉ€) เจ…เจคเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจธเจŸเฉˆเจชเจธ (เจ•เจฆเจฎ) เจนเจฐเฉ‡เจ• เจ•เฉฐเจฎ เจฒเจˆเฅค

เจšเฉฑเจฒเจฆเจพ เจนเฉˆ - เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจŸเจพเจฐเจ—เฉ‡เจŸ เจ“เจเจธ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, เจนเฉˆเจฐเจพเจจเฉ€ เจฆเฉ€ เจ—เฉฑเจฒ เจนเฉˆ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจฎเฉˆเจ• เจ“เจเจธ เจตเฉ€ เจšเฉเจฃ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจชเจฐ เจชเฉเจฐเจพเจˆเจตเฉ‡เจŸ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€เจ†เจ‚ 'เจคเฉ‡ เจ‡เจน เจ•เจพเจซเจผเฉ€ เจฎเจนเจฟเฉฐเจ—เจพ เจนเฉˆ (เจฒเฉ€เจจเจ•เจธ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡)เฅค

เจตเจฐเจคเจฆเจพ เจนเฉˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจฆเฉ€ เจฎเฉเฉœ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจเจ•เจธเจผเจจ/เจธเฉˆเฉฑเจŸเจ…เฉฑเจช-เจœเจพเจตเจพ เจเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ…เจธเฉ€เจ‚ Java 11 เจฒเจˆ เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจฆเฉ€ เจธเจนเจพเจ‡เจคเจพ เจจเจพเจฒ เจจเจพเจฒ เจ…เจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเจฟเจธ เจจเจพเจฒ เจ…เจธเฉ€เจ‚ เจ•เจพเจฐเจตเจพเจˆ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจœเจผเจฐเฉ‚เจฐเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจน เจ‰เจน เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจนเจจ เจœเฉ‹ เจ•เจพเจฐเจตเจพเจˆ เจจเฉ‚เฉฐ เจชเจพเจธ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเจ—เฉ‡เฅค

เจฎเจพเจตเฉ‡เจจ เจฆเฉ‡ เจจเจพเจฒ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฟเจฒเจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃเจพ เจฌเจพเจ•เฉ€ เจนเฉˆ: run: mvn -B clean package เจเฉฐเจกเจพ -B เจ•เจนเจฟเฉฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ—เฉˆเจฐ-เจ‡เฉฐเจŸเจฐเจเจ•เจŸเจฟเจต เจฎเฉ‹เจก เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจคเจพเจ‚ เจ•เจฟ เจฎเจพเจตเฉ‡เจจ เจ…เจšเจพเจจเจ• เจธเจพเจกเฉ‡ เจคเฉ‹เจ‚ เจ•เฉเจ เจจเจพ เจชเฉเฉฑเจ›เจฃเจพ เจšเจพเจนเฉ‡

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

เจฌเจนเฉเจค เจตเจงเฉ€เจ†! เจนเฉเจฃ, เจนเจฐ เจตเจพเจฐ เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจฎเจพเจธเจŸเจฐ เจจเฉ‚เฉฐ เจตเจšเจจเจฌเฉฑเจง เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฟเจฒเจก เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจ†เจŸเฉ‹เจฎเฉ‡เจŸเจฟเฉฐเจ— เจŸเฉˆเจธเจŸ เจฒเจพเจ‚เจš เจ•เจฐเจฆเจพ เจนเฉˆ

เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจšเฉฐเจ—เฉ€ เจนเฉˆ, เจชเจฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจขเฉฐเจ— เจจเจพเจฒ เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจชเจฐ เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ. เจ‡เจธ เจฒเจˆ, เจ…เจ—เจฒเจพ เจ•เจฆเจฎ เจŸเฉˆเจธเจŸ เจฐเจจ เจจเฉ‚เฉฐ เจธเจตเฉˆเจšเจพเจฒเจค เจ•เจฐเจจเจพ เจนเฉˆเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ PR เจธเจฎเฉ€เจ–เจฟเจ† เจ•เจฐเจฆเฉ‡ เจนเฉ‹ เจคเจพเจ‚ เจŸเฉˆเจธเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจชเจพเจธ เจ•เจฐเจจ เจฆเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃเจพ เจ•เจพเจซเจผเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉเฉฐเจฆเจพ เจนเฉˆ - เจคเฉเจธเฉ€เจ‚ เจฏเจ•เฉ€เจจเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจŸเฉˆเจธเจŸ เจชเจพเจธ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ•เฉ‹เจˆ เจตเฉ€ เจฎเจฐเจœ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ†เจชเจฃเฉ€ เจฌเฉเจฐเจพเจ‚เจš เจšเจฒเจพเจ‰เจฃเจพ เจจเจนเฉ€เจ‚ เจญเฉเฉฑเจฒเจฆเจพ เจนเฉˆเฅค

เจ…เจธเฉ€เจ‚ เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€ เจฌเจฃเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจตเจพเจ‚เจ—เฉ‡ เจ…เจคเฉ‡ เจฎเจพเจธเจŸเจฐ เจตเจฟเฉฑเจš เจ…เจญเฉ‡เจฆ เจนเฉ‹เจตเจพเจ‚เจ—เฉ‡, เจ…เจคเฉ‡ เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจ…เจธเฉ€เจ‚ เจ•เฉ‹เจก-เจ•เจตเจฐเฉ‡เจœ 'เจคเฉ‡ เจ‡เฉฑเจ• เจฐเจฟเจชเฉ‹เจฐเจŸ เจฌเจฃเจพเจ‰เจฃ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจพเจ‚เจ—เฉ‡เฅค

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 เจตเจฟเฉฑเจš เจญเฉ‡เจฆ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจงเฉ€ เจนเฉˆ, เจ…เจธเฉ€เจ‚ เจ‰เฉฑเจฅเฉ‡ เจชเจพเจธเจตเจฐเจก/เจŸเฉ‹เจ•เจจ/เจนเฉ‹เจธเจŸ/urls เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจกเฉ‡เจŸเจพ เจฒเจฟเจ– เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจ•เฉ‹เจก เจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจเฅค

เจคเฉเจธเฉ€เจ‚ GitHub 'เจคเฉ‡ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจตเจฟเฉฑเจš เจญเฉ‡เจฆ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจœเฉ‹เฉœ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

'เจคเฉ‡ เจŸเฉ‹เจ•เจจ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ codecov.io GitHub เจฆเฉเจ†เจฐเจพ เจ…เจงเจฟเจ•เจพเจฐเจค เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‡เฉฑเจ• เจœเจจเจคเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจฒเจฟเฉฐเจ• เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ: GitHub เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเจพเจฎ/[เจฐเฉ‡เจชเฉ‹ เจจเจพเจฎ]เฅค เจ‡เฉฑเจ• เจชเฉเจฐเจพเจˆเจตเฉ‡เจŸ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเฉ€ เจœเฉ‹เฉœเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ; เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ Github เจตเจฟเฉฑเจš เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เฉ‹เจกเจ•เฉ‹เจต เจ…เจงเจฟเจ•เจพเจฐ เจฆเฉ‡เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

เจœเฉˆเจ•เฉ‹เจ•เฉ‹ เจชเจฒเฉฑเจ—เจ‡เจจ เจจเฉ‚เฉฐ 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 เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

เจ†เจ‰ เจ‡เฉฑเจ• เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจœเฉ‹เฉœเฉ€เจ

เจฎเฉ‡เจฐเฉ‡ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจธเจŸเฉˆเจŸเจฟเจ• เจ•เฉ‹เจก เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฒเจˆ เจธเฉ‹เจจเจพเจฐ เจ•เจฒเจพเจ‰เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเจพเจ‚, เจŸเฉเจฐเฉˆเจตเจฟเจธ-เจธเฉ€เจ†เจˆ เจจเจพเจฒ เจœเฉเฉœเจจเจพ เจ•เจพเจซเจผเฉ€ เจ†เจธเจพเจจ เจนเฉˆ. เจ‡เจธ เจฒเจˆ เจ‡เจน เจ‡เฉฑเจ• เจคเจฐเจ•เจชเฉ‚เจฐเจจ เจ•เจฆเจฎ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเจพเจˆเจ—เจฐเฉ‡เจŸ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจเจ•เจธเจผเจจ เจฎเจพเจฐเจ•เฉ€เจŸ เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจšเฉ€เจœเจผ เจนเฉˆ, เจชเจฐ เจ‡เจธ เจตเจพเจฐ เจ‡เจธเจจเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจฅเฉ‹เฉœเจพ เจจเจฟเจฐเจพเจธเจผ เจ•เฉ€เจคเจพ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ†เจฆเจค เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจน เจ•เจพเจฐเจตเจพเจˆ เจฎเจฟเจฒเฉ€ เจœเจฟเจธเจฆเฉ€ เจฎเฉˆเจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจธเฉ€ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจตเจฐเจ•เจซเจฒเฉ‹ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ†เฅค เจชเจฐ เจ‡เจน เจชเจคเจพ เจšเจฒเจฟเจ† เจ•เจฟ เจธเฉ‹เจจเจพเจฐ เจฎเจพเจตเฉ‡เจจ เจœเจพเจ‚ เจ—เฉเจฐเฉ‡เจกเจฒ 'เจคเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจเจ•เจธเจผเจจ เจฆเฉเจ†เจฐเจพ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฌเฉ‡เจธเจผเฉฑเจ•, เจ‡เจน เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจตเจฟเฉฑเจš เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆ, เจชเจฐ เจ‡เจธเจจเฉ‚เฉฐ เจ•เฉŒเจฃ เจชเฉœเฉเจนเจฆเจพ เจนเฉˆ?!

เจ‡เจน เจ‡เฉฑเจ• เจ•เจพเจฐเจตเจพเจˆ เจฆเฉเจ†เจฐเจพ เจธเฉฐเจญเจต เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ mvn เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเฉเจ†เจฐเจพ เจ•เจฐเจพเจ‚เจ—เฉ‡:

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 - 'เจคเฉ‡ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ sonarcloud.io เจ…เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจจเฉ‚เฉฐ เจ—เฉเจชเจค เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฐเจœเจฟเจธเจŸเจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค GITHUB_TOKEN - เจ‡เจน เจ‡เฉฑเจ• เจฌเจฟเจฒเจŸ-เจ‡เจจ เจŸเฉ‹เจ•เจจ เจนเฉˆ เจœเฉ‹ GitHub เจคเจฟเจ†เจฐ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเจฟเจธเจฆเฉ€ เจฎเจฆเจฆ เจจเจพเจฒ เจธเฉ‹เจจเจพเจฐเจ•เจฒเจพเจ‰เจก [เจฌเฉ‹เจŸ] เจธเจพเจจเฉ‚เฉฐ เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจธเฉเจจเฉ‡เจนเฉ‡ เจ›เฉฑเจกเจฃ เจฒเจˆ เจ—เจฟเฉฑเจŸ เจตเจฟเฉฑเจš เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

Dsonar.projectKey - เจธเฉ‹เจจเจพเจฐ เจตเจฟเฉฑเจš เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจจเจพเจฎ, เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจตเจฟเฉฑเจš เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

Dsonar.organization - GitHub เจคเฉ‹เจ‚ เจธเฉฐเจธเจฅเจพ เจฆเจพ เจจเจพเจฎเฅค

เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจธเฉ‹เจจเจพเจฐเจ•เจฒเจพเจ‰เจก [เจฌเฉ‹เจŸ] เจฆเฉ€เจ†เจ‚ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจ†เจ‰เจฃ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

เจฐเฉ€เจฒเจฟเจœเจผ เจฎเฉˆเจจเฉ‡เจœเจฎเฉˆเจ‚เจŸ

เจฌเจฟเจฒเจก เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ เจ—เจ เจนเจจ, เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจฐเฉ€เจฒเฉ€เจœเจผ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจ†เจ“ เจฆเฉ‡เจ–เฉ€เจ เจ•เจฟ เจ•เจฟเจตเฉ‡เจ‚ GitHub เจเจ•เจธเจผเจจ เจฐเฉ€เจฒเฉ€เจœเจผ เจชเฉเจฐเจฌเฉฐเจงเจจ เจจเฉ‚เฉฐ เจฌเจนเฉเจค เจธเฉŒเจ–เจพ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค

เจ•เฉฐเจฎ 'เจคเฉ‡, เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเจพ เจ•เฉ‹เจก เจฌเฉ‡เจธ เจฌเจฟเฉฑเจŸเจฌเจ•เฉ‡เจŸ เจตเจฟเฉฑเจš เจนเฉˆ (เจธเจญ เจ•เฉเจ เจ‰เจธ เจ•เจนเจพเจฃเฉ€ เจฆเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจนเฉˆ "เจฎเฉˆเจ‚ เจฆเจฟเจจ เจตเฉ‡เจฒเฉ‡ เจฌเจฟเฉฑเจŸเจฌเจ•เฉ‡เจŸ เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฆเจพ เจนเจพเจ‚, เจฐเจพเจค โ€‹โ€‹เจจเฉ‚เฉฐ เจ—เจฟเฉฑเจŸเจนเฉฑเจฌ เจจเฉ‚เฉฐ เจตเจšเจจเจฌเฉฑเจง เจ•เจฐเจฆเจพ เจนเจพเจ‚")เฅค เจฌเจฆเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจฌเจฟเฉฑเจŸเจฌเจ•เฉ‡เจŸ เจตเจฟเฉฑเจš เจฌเจฟเจฒเจŸ-เจ‡เจจ เจฐเฉ€เจฒเฉ€เจœเจผ เจชเฉเจฐเจฌเฉฐเจงเจจ เจŸเฉ‚เจฒ เจจเจนเฉ€เจ‚ เจนเจจเฅค เจ‡เจน เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจนเจฐ เจฐเฉ€เจฒเฉ€เจœเจผ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจนเฉฑเจฅเฉ€เจ‚ เจธเฉฐเจ—เจฎ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเฉฐเจจเจพ เจฌเจฃเจพเจ‰เจฃเจพ เจชเฉˆเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฐเฉ€เจฒเฉ€เจœเจผ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจธเจพเจฐเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เฉฑเจฅเฉ‡ เจธเฉเฉฑเจŸเจฃเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจฎเจจ เจฆเฉ‡ เจฎเจนเจฟเจฒ เจตเจฟเฉฑเจš เจ–เฉ‹เจœ เจ•เจฐเจจเจพ, เจœเฉ€เจฐเจพ เจตเจฟเฉฑเจš เจ•เฉฐเจฎ, เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ•เจฎเจฟเจŸ เจ•เจฐเจจเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ—เจฒเจคเฉ€ เจ•เจฐเจจ เจฆเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฎเฉŒเจ•เฉ‡ เจนเจจ, เจคเฉเจธเฉ€เจ‚ เจ•เฉเจ เจญเฉเฉฑเจฒ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจพเจ‚ เจ•เฉเจ เจ…เจœเจฟเจนเจพ เจฆเจพเจ–เจฒ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจชเจฟเจ›เจฒเฉ€ เจตเจพเจฐ เจœเจพเจฐเฉ€ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจ•เจˆ เจตเจพเจฐ เจ‡เจน เจธเจชเฉฑเจธเจผเจŸ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจ• เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจ•เฉ€ เจธเจผเฉเจฐเฉ‡เจฃเฉ€เจฌเฉฑเจง เจ•เจฐเจจเจพ เจนเฉˆ - เจ•เฉ€ เจ‡เจน เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจนเฉˆ เจœเจพเจ‚ เจ‡เฉฑเจ• เจฌเฉฑเจ— เจซเจฟเจ•เจธ, เจœเจพเจ‚ เจธเฉฐเจชเจพเจฆเจจ เจŸเฉˆเจธเจŸ, เจœเจพเจ‚ เจ•เฉเจ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเจพ

GitHub เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจธเจพเจกเฉ€ เจ•เจฟเจตเฉ‡เจ‚ เจฎเจฆเจฆ เจ•เจฐ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ? เจ‡เฉฑเจ• เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจเจ•เจธเจผเจจ เจนเฉˆ - เจฐเฉ€เจฒเฉ€เจœเจผ เจกเจฐเจพเจซเจŸเจฐ, เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ€เจ†เจ‚ เจธเจผเฉเจฐเฉ‡เจฃเฉ€เจ†เจ‚ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจฐเฉ€เจฒเฉ€เจœเจผ เจจเฉ‹เจŸเจธ เจซเจพเจˆเจฒ เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸ เจธเฉˆเจŸ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉ€เจฒเฉ€เจœเจผ เจจเฉ‹เจŸเจธ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ‡ เจ†เจช เจธเจฎเฉ‚เจน เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ:

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

เจฐเจฟเจชเฉ‹เจฐเจŸ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจ‰เจฆเจพเจนเจฐเจจ เจŸเฉˆเจฎเจชเจฒเฉ‡เจŸ (.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'

เจนเฉเจฃ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจชเฉเฉฑเจฒ-เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจŸเฉˆเจ—เจธ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเจพเจฒ เจšเจฟเฉฐเจจเฉเจนเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ: type:fix, type:features, type:documentation, type:tests, type:configเฅค

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจธเจตเฉˆ-เจเจจเฉ‹เจŸเฉ‡เจธเจผเจจ

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ‡ เจจเจพเจฒ เจชเฉเจฐเจญเจพเจตเฉ€ เจ•เฉฐเจฎ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ‡ เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡ เจ›เฉ‹เจนเจฟเจ† เจนเฉˆ, เจ‡เจน เจฒเฉ‡เจฌเจฒเจฐ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ€ เจ•เจพเจฐเจตเจพเจˆ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉˆ, เจ‡เจน PR เจตเจฟเฉฑเจš เจŸเฉˆเจ— เจฐเฉฑเจ–เจฆเจพ เจนเฉˆ เจœเจฟเจธ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฟเจ† เจ—เจฟเจ† เจนเฉˆ. เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ [เจฌเจฟเจฒเจก] เจตเจœเฉ‹เจ‚ เจšเจฟเฉฐเจจเฉเจนเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเจฟเจธ เจตเจฟเฉฑเจš เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจธเจผเจพเจฎเจฒ เจนเจจ .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 เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

เจฎเฉˆเจ‚ เจ—เจฟเจŸเจนเจฌ เจเจ•เจธเจผเจจเจœเจผ (ssh เจฆเฉเจ†เจฐเจพ, scp เจฆเฉเจ†เจฐเจพ, เจ…เจคเฉ‡ docker-hub เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡) เจฆเฉเจ†เจฐเจพ เจ•เจˆ เจคเฉˆเจจเจพเจคเฉ€ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€, เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจ•เจนเจฟ เจธเจ•เจฆเจพ เจนเจพเจ‚ เจ•เจฟ, เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจธเฉฐเจญเจพเจตเจจเจพ เจนเฉˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฐเจตเจฐ เจคเฉ‡ เจฌเจพเจˆเจจเจฐเฉ€ เจ…เจชเจฒเฉ‹เจก เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจคเจฐเฉ€เจ•เจพ เจฎเจฟเจฒเฉ‡เจ—เจพ, เจญเจพเจตเฉ‡เจ‚ เจคเฉเจนเจพเจกเฉ€ เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจ•เจฟเฉฐเจจเฉ€ เจตเฉ€ เจŸเฉ‡เจขเฉ€ เจ•เจฟเจ‰เจ‚ เจจเจพ เจนเฉ‹เจตเฉ‡เฅค เจนเฉˆ.

เจฎเฉˆเจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฅเจพเจ‚ 'เจคเฉ‡ เจฐเฉฑเจ–เจฃ เจฆเจพ เจตเจฟเจ•เจฒเจช เจชเจธเฉฐเจฆ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจ†เจ“ เจฆเฉ‡เจ–เฉ€เจ เจ•เจฟ GitHub เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจคเฉˆเจจเจพเจค เจ•เจฐเจจเจพ เจนเฉˆ (เจ‡เจน เจฌเจพเจˆเจจเจฐเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€, npm, jar, docker เจฒเจˆ เจ‡เฉฑเจ• เจญเฉฐเจกเจพเจฐ เจนเฉˆ)เฅค

เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ 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 เจกเฉŒเจ•เจฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจฆเฉ‡ เจฎเจพเจฐเจ— เจ…เจคเฉ‡ เจธเจพเจกเฉ‡ เจšเจฟเฉฑเจคเจฐ เจฆเฉ‡ เจจเจพเจฎ เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เฉฑเจฅเฉ‡ เจ•เฉเจ เจ—เฉเจฐเฉเจฐ เจนเจจ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ…เจœเฉ‡ เจคเฉฑเจ• เจจเจนเฉ€เจ‚ เจ†เจ เจนเจจ:

  • เจ‡เฉฑเจ• เจ‰เจธเจพเจฐเฉ€ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ: 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 เจ‰เจธ เจนเฉˆเจธเจผ เจจเจพเจฒ เจฎเฉ‡เจฒ เจจเจนเฉ€เจ‚ เจ–เจพเจ‚เจฆเจพ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ—เจฟเฉฑเจŸ เจ‡เจคเจฟเจนเจพเจธ เจตเจฟเฉฑเจš เจตเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจเจ•เจธเจผเจจ/เจšเฉˆเฉฑเจ•เจ†เจ‰เจŸ เจเจ•เจธเจผเจจ PR เจตเจฟเฉฑเจš เจกเฉˆเฉฑเจกเจฒเจพเจ• เจ•เจฐเจจ เจตเจพเจฒเฉ€เจ†เจ‚ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจคเฉ‹เจ‚ เจฌเจšเจฃ เจฒเจˆ เจ†เจชเจฃเฉ€ เจตเจฟเจฒเฉฑเจ–เจฃ เจนเฉˆเจธเจผ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

เจœเฉ‡ เจธเจญ เจ•เฉเจ เจšเฉฐเจ—เฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจชเฉˆเจ•เฉ‡เจœ เจญเจพเจ— (https://github.com/antkorwin/github-actions/packages) เจ–เฉ‹เจฒเฉเจนเจฃ เจจเจพเจฒ, เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจตเฉ‡เจ–เฉ‹เจ—เฉ‡:

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

เจ‰เฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฆเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจตเฉ€ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹.

เจ‡เจธ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจธเจพเจกเฉ‡ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจเจพ เจฌเจพเจ•เฉ€ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจธเจผเจพเจ‡เจฆ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เจพ เจ•เจฟ เจ‡เจน เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจธเจฎเฉ‡เจ‚ เจธเจฟเจธเจŸเจฎเจก เจฆเฉเจ†เจฐเจพ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเจจเจพ เจนเฉˆ.

เจจเจฟเจ—เจฐเจพเจจเฉ€

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจพเจกเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจธเจฟเจนเจค เจœเจพเจ‚เจš เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเจจเฉ€ เจนเฉˆ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจตเจฟเจ•เจฒเจช เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจเฅค เจธเจพเจกเฉ€ เจฌเฉ‚เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจเจ•เจŸเฉ‚เจเจŸเจฐ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• API เจฒเจฟเจ–เจฃ เจฆเฉ€ เจตเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ; เจ…เจธเฉ€เจ‚ เจ†เจฒเจธเฉ€ เจฒเจˆ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจธเจญ เจ•เฉเจ เจ•เจฐ เจšเฉเฉฑเจ•เฉ‡ เจนเจพเจ‚เฅค เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจนเฉ‹เจธเจŸ เจจเฉ‚เฉฐ เจ–เจฟเฉฑเจšเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ: 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 * * * *'

เจ‡เจน เจธเจงเจพเจฐเจจ เจนเฉˆ, เจฎเฉˆเจ‚ เจ‡เจน เจตเฉ€ เจตเจฟเจธเจผเจตเจพเจธ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจ•เจฟ เจ—เจฟเจฅเจฌ เจตเจฟเฉฑเจš เจคเฉเจธเฉ€เจ‚ เจ‡เจตเฉˆเจ‚เจŸเจธ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจตเฉˆเจฌเจนเฉเฉฑเจ• เจตเจฟเฉฑเจš เจฌเจฟเจฒเจ•เฉเจฒ เจตเฉ€ เจซเจฟเฉฑเจŸ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ‡. เจตเฉ‡เจฐเจตเฉ‡ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจตเจฟเฉฑเจš เจนเจจ: help.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events-schedule

เจ†เจ‰ เจ•เจฐเจฒ เจฆเฉเจ†เจฐเจพ เจธเจฐเจตเจฐ เจธเจฅเจฟเจคเฉ€ เจฆเฉ€ เจ–เฉเจฆ เจœเจพเจ‚เจš เจ•เจฐเฉ€เจ:

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"

เจชเจนเจฟเจฒเจพเจ‚, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจตเจฟเฉฑเจš เจธเฉ‡เจต เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจธเจฐเจตเจฐ เจจเฉ‡ เจฌเฉ‡เจจเจคเฉ€ เจฆเจพ เจœเจตเจพเจฌ เจฆเจฟเฉฑเจคเจพ, เจ…เจ—เจฒเฉ‡ เจชเฉœเจพเจ… เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจœเจพเจ‚เจš เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจธเจฅเจฟเจคเฉ€ UP เจนเฉˆ เจ…เจคเฉ‡, เจœเฉ‡เจ•เจฐ เจ…เจœเจฟเจนเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจจเจพเจฒ เจฌเจพเจนเจฐ เจ† เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจœเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจนเฉฑเจฅเจพเจ‚ เจจเจพเจฒ เจ•เจฟเจธเฉ‡ เจ•เจพเจฐเจตเจพเจˆ เจจเฉ‚เฉฐ "เจนเจพเจตเฉ€" เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจคเจพเจ‚ เจฌเฉฐเจฆ เจ•เจฐเฉ‹ 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 }}

เจ…เจธเฉ€เจ‚ เจธเจฟเจฐเจซ เจคเจพเจ‚ เจนเฉ€ เจŸเฉˆเจฒเฉ€เจ—เฉเจฐเจพเจฎ 'เจคเฉ‡ เจญเฉ‡เจœเจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‡เจ•เจฐ เจชเจฟเจ›เจฒเฉ‡ เจชเฉœเจพเจ… 'เจคเฉ‡ เจ•เจพเจฐเจตเจพเจˆ เจ…เจธเจซเจฒ เจนเฉ‹เจˆเฅค เจ‡เฉฑเจ• เจธเฉเจจเฉ‡เจนเจพ เจญเฉ‡เจœเจฃ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจเจชเจฒเจฌเฉŒเจ/เจŸเฉˆเจฒเฉ€เจ—เฉเจฐเจพเจฎ-เจเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚; เจคเฉเจธเฉ€เจ‚ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจตเจฟเฉฑเจš เจฌเฉ‹เจŸ เจŸเฉ‹เจ•เจจ เจ…เจคเฉ‡ เจšเฉˆเจŸ เจ†เจˆเจกเฉ€ เจ•เจฟเจตเฉ‡เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เจฐเฉ€เจ เจฌเจพเจฐเฉ‡ เจชเฉœเฉเจน เจธเจ•เจฆเฉ‡ เจนเฉ‹: github.com/appleboy/telegram-action

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

Github 'เจคเฉ‡ เจญเฉ‡เจฆ เจฒเจฟเจ–เจฃเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ‹: เจธเจฐเจตเจฐ เจฒเจˆ URL เจ…เจคเฉ‡ เจŸเฉˆเจฒเฉ€เจ—เฉเจฐเจพเจฎ เจฌเฉ‹เจŸ เจฒเจˆ เจŸเฉ‹เจ•เจจเฅค

เจฌเฉ‹เจจเจธ เจŸเจฐเฉˆเจ• - เจ†เจฒเจธเฉ€ เจฒเจˆ JIRA

เจฎเฉˆเจ‚ เจตเจพเจ…เจฆเจพ เจ•เฉ€เจคเจพ เจธเฉ€ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจœเฉ€เจฐเจพ เจตเจพเจชเจธ เจ†เจตเจพเจ‚เจ—เฉ‡, เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจตเจพเจชเจธ เจ† เจ—เจ เจนเจพเจ‚. เจธเฉˆเจ‚เจ•เฉœเฉ‡ เจตเจพเจฐ เจฎเฉˆเจ‚ เจธเจŸเฉˆเจ‚เจก-เจ…เจช 'เจคเฉ‡ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฟเจ† เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจจเฉ‡ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฌเจฃเจพเจˆ, เจ‡เฉฑเจ• เจธเจผเจพเจ–เจพ เจจเฉ‚เฉฐ เจฎเจฟเจฒเจพเจ‡เจ†, เจชเจฐ เจฎเฉเฉฑเจฆเฉ‡ เจจเฉ‚เฉฐ JIRA เจตเจฟเฉฑเจš เจ–เจฟเฉฑเจšเจฃเจพ เจญเฉเฉฑเจฒ เจ—เจฟเจ†. เจฌเฉ‡เจธเจผเฉฑเจ•, เจœเฉ‡เจ•เจฐ เจ‡เจน เจธเจญ เจ‡เฉฑเจ• เจฅเจพเจ‚ 'เจคเฉ‡ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ, เจคเจพเจ‚ เจ‡เจน เจธเฉŒเจ–เจพ เจนเฉเฉฐเจฆเจพ, เจชเจฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ IDE เจตเจฟเฉฑเจš เจ•เฉ‹เจก เจฒเจฟเจ–เจฆเฉ‡ เจนเจพเจ‚, เจธเจผเจพเจ–เจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฟเฉฑเจŸเจฌเจ•เฉ‡เจŸ เจœเจพเจ‚ เจ—เจฟเจŸเจนเฉฑเจฌ เจตเจฟเฉฑเจš เจฎเจฟเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจซเจฟเจฐ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ€เจฐเจพ เจตเจฟเฉฑเจš เจ–เจฟเฉฑเจšเจฆเฉ‡ เจนเจพเจ‚, เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจจเจตเฉ€เจ†เจ‚ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจ–เฉ‹เจฒเฉเจนเจฃเฉ€เจ†เจ‚ เจชเฉˆเจฃเจ—เฉ€เจ†เจ‚เฅค , เจ•เจˆ เจตเจพเจฐ เจฆเฉเจฌเจพเจฐเจพ เจฒเจพเจ—เจ‡เจจ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ†เจฆเจฟเฅค เจœเจฆเฉ‹เจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจฏเจพเจฆ เจนเฉˆ เจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ…เฉฑเจ—เฉ‡ เจ•เฉ€ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจคเจพเจ‚ เจฌเฉ‹เจฐเจก เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจ–เฉ‹เจฒเฉเจนเจฃ เจฆเจพ เจ•เฉ‹เจˆ เจฎเจคเจฒเจฌ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจธเจตเฉ‡เจฐเฉ‡ เจธเจŸเฉˆเจ‚เจกเจ…เฉฑเจช 'เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจŸเจพเจธเจ• เจฌเฉ‹เจฐเจก เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจ เจฒเจˆ เจธเจฎเจพเจ‚ เจฌเจฟเจคเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

GitHub เจ‡เจธ เจฐเฉเจŸเฉ€เจจ เจ•เฉฐเจฎ เจตเจฟเฉฑเจš เจตเฉ€ เจธเจพเจกเฉ€ เจฎเจฆเจฆ เจ•เจฐเฉ‡เจ—เจพ; เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเจจ เจตเจพเจฒเจฟเจ†เจ‚ เจฒเจˆ, เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€ เจœเจฎเฉเจนเจพเจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจนเฉ€ เจฎเฉเฉฑเจฆเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ•เฉ‹เจก_เจฐเฉ€เจตเจฟเจŠ เจ•เจพเจฒเจฎ เจตเจฟเฉฑเจš เจ–เจฟเฉฑเจš เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเจธ เจธเจผเจพเจ–เจพ เจฆเฉ‡ เจจเจพเจฎเจ•เจฐเจจ เจธเฉฐเจฎเฉ‡เจฒเจจ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

[ะธะผั ะฟั€ะพะตะบั‚ะฐ]-[ะฝะพะผะตั€ ั‚ะฐัะบะฐ]-ะฝะฐะทะฒะฐะฝะธะต

เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจœเฉ‡เจ•เจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ•เฉเฉฐเจœเฉ€ "GitHub เจเจ•เจธเจผเจจ" GA เจนเฉˆ, เจคเจพเจ‚ GA-8-jira-bot GA-8 เจŸเจพเจธเจ• เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจธเจผเจพเจ–เจพ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค

JIRA เจจเจพเจฒ เจเจ•เฉ€เจ•เจฐเจฃ เจเจŸเจฒเจธเฉ€เจ…เจจ เจฆเฉ€เจ†เจ‚ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจฆเฉเจ†เจฐเจพ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ‰เจน เจธเฉฐเจชเฉ‚เจฐเจจ เจจเจนเฉ€เจ‚ เจนเจจ, เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจน เจ•เจนเจฟเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉเจ เจจเฉ‡ เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจฌเจฟเจฒเจ•เฉเจฒ เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ. เจชเจฐ เจ…เจธเฉ€เจ‚ เจธเจฟเจฐเจซ เจ‰เจนเจจเจพเจ‚ เจฌเจพเจฐเฉ‡ เจนเฉ€ เจšเจฐเจšเจพ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจœเฉ‹ เจฏเจ•เฉ€เจจเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจธเจฐเจ—เจฐเจฎเฉ€ เจจเจพเจฒ เจตเจฐเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ.

เจชเจนเจฟเจฒเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ JIRA เจตเจฟเฉฑเจš เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ: atlassian/gajira-login

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 เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจŸเฉ‹เจ•เจจ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจ‡เจน เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเจจเจพ เจนเฉˆ เจ‡เฉฑเจฅเฉ‡ เจตเจฐเจฃเจจ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ: confluence.atlassian.com/cloud/api-tokens-938839638.html

เจ…เจธเฉ€เจ‚ เจฌเฉเจฐเจพเจ‚เจš เจฆเฉ‡ เจจเจพเจฎ เจคเฉ‹เจ‚ เจŸเจพเจธเจ• เจชเจ›เจพเจฃเจ•เจฐเจคเจพ เจจเฉ‚เฉฐ เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

  - 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 'เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจ•เจพเจฐเจตเจพเจˆ เจนเฉˆ, เจ‡เจธเจฆเฉ€ เจฒเฉ‹เฉœ เจธเจฟเจฐเจซเจผ เจชเจฟเจ›เจฒเฉ‡ เจชเฉœเจพเจ… เจตเจฟเฉฑเจš เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€ เจ—เจˆ เจฎเฉเฉฑเจฆเจพ ID เจ…เจคเฉ‡ JIRA เจตเจฟเฉฑเจš เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจนเฉˆ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ‰เฉฑเจชเจฐ เจ•เฉ€เจคเจพ เจนเฉˆเฅค

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

เจ‡เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚, เจคเฉเจธเฉ€เจ‚ เจฎเจพเจธเจŸเจฐ เจตเจฟเฉฑเจš เจ…เจญเฉ‡เจฆ เจนเฉ‹เจฃ เจตเฉ‡เจฒเฉ‡ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจ–เจฟเฉฑเจš เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ GitHub เจตเจฐเจ•เจซเจฒเฉ‹ เจคเฉ‹เจ‚ เจนเฉ‹เจฐ เจ‡เจตเฉˆเจ‚เจŸเจธเฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจธเจญ เจคเฉเจนเจพเจกเฉ€ เจ•เจฒเจชเจจเจพ เจ…เจคเฉ‡ เจฐเฉเจŸเฉ€เจจ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจธเจตเฉˆเจšเจฒเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เฉฑเจ›เจพ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ.

เจธเจฟเฉฑเจŸเจพ

เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ•เจฒเจพเจธเจฟเจ• DEVOPS เจกเจพเจ‡เจ—เฉเจฐเจพเจฎ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเฉ‹, เจ…เจธเฉ€เจ‚ เจธเจพเจฐเฉ‡ เจชเฉœเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจตเจฐ เจ•เฉ€เจคเจพ เจนเฉˆ, เจธเจผเจพเจ‡เจฆ เจธเฉฐเจšเจพเจฒเจจ เจจเฉ‚เฉฐ เจ›เฉฑเจก เจ•เฉ‡, เจฎเฉˆเจจเฉ‚เฉฐ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจนเฉˆเจฒเจช-เจกเฉˆเจธเจ• เจธเจฟเจธเจŸเจฎ เจจเจพเจฒ เจเจ•เฉ€เจ•เจฐเจฃ เจฒเจˆ เจฎเจพเจฐเจ•เฉ€เจŸ เจตเจฟเฉฑเจš เจ•เฉเจ เจ•เจพเจฐเจตเจพเจˆ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ‡เจธ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ‡เจน เจฎเฉฐเจจเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฆเจฒ เจ—เจˆ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ…เจคเฉ‡ เจธเจฟเฉฑเจŸเฉ‡ เจ•เฉฑเจขเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค

GitHub เจเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจจเจฐเจ• เจฆเฉ‡ เจšเฉฑเจ•เจฐ (เจ‡เฉฑเจ• Java เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ)

เจชเฉเจฐเฉ‹:

  • เจธเจพเจฐเฉ‡ เจฎเฉŒเจ•เจฟเจ†เจ‚ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจตเจพเจฒเจพ เจฌเจพเจœเจผเจพเจฐ, เจ‡เจน เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจตเจฟเฉฑเจš, เจคเฉเจธเฉ€เจ‚ เจ‡เจน เจธเจฎเจเจฃ เจฒเจˆ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจตเฉ€ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ‡เฉฑเจ• เจธเจฎเจพเจจ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจนเฉฑเจฒ เจ•เจฐเจจเจพ เจนเฉˆ เจœเจพเจ‚ GitHub เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจธเจฟเฉฑเจงเฉ‡ เจฒเฉ‡เจ–เจ• เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฌเฉ‡เจจเจคเฉ€ เจชเฉ‹เจธเจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค
  • เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจฒเจˆ เจŸเฉ€เจšเจพ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจจเจพ: เจฒเฉ€เจจเจ•เจธ, เจฎเฉˆเจ• เจ“เจเจธ, เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจ•เจพเจซเจผเฉ€ เจฆเจฟเจฒเจšเจธเจช เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจนเฉˆเฅค
  • เจ—เจฟเจฅเจฌ เจชเฉˆเจ•เฉ‡เจœ เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจšเฉ€เจœเจผ เจนเฉˆ, เจชเฉ‚เจฐเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฅเจพเจ‚ 'เจคเฉ‡ เจฐเฉฑเจ–เจฃเจพ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจฐเจพเจนเฉ€เจ‚ เจธเจฐเจซ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจนเจฐ เจšเฉ€เจœเจผ เจ‡เฉฑเจ• เจœเจพเจ‚ เจฆเฉ‹ เจฎเจพเจŠเจธ เจ•เจฒเจฟเฉฑเจ•เจพเจ‚ เจฆเฉ‡ เจ˜เฉ‡เจฐเฉ‡ เจตเจฟเฉฑเจš เจนเฉˆ เจ…เจคเฉ‡ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจจเจพเจฒ เจ—เจฟเฉฑเจŸเจนเจฌ เจเจ•เจธเจผเจจเจœเจผ เจจเจพเจฒ เจเจ•เฉ€เจ•เฉเจฐเจฟเจค เจนเฉˆเฅค เจฎเฉเจซเจค เจธเฉฐเจธเจ•เจฐเจฃ เจตเจฟเฉฑเจš เจกเฉŒเจ•เจฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจธเจนเจพเจ‡เจคเจพ เจตเฉ€ เจ‡เฉฑเจ• เจšเฉฐเจ—เจพ เจซเจพเจ‡เจฆเจพ เจนเฉˆเฅค
  • GitHub เจฌเจฟเจฒเจก เจฒเฉŒเจ—เจธ เจตเจฟเฉฑเจš เจญเฉ‡เจฆ เจฒเฉเจ•เจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจชเจพเจธเจตเจฐเจก เจ…เจคเฉ‡ เจŸเฉ‹เจ•เจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เจธเจฆเจพ เจ‰เจชเจฏเฉ‹เจ— เจ•เจฐเจจเจพ เจ‡เฉฐเจจเจพ เจกเจฐเจพเจ‰เจฃเจพ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจฎเฉ‡เจฐเฉ‡ เจธเจพเจฐเฉ‡ เจชเฉเจฐเจฏเฉ‹เจ—เจพเจ‚ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ, เจฎเฉˆเจ‚ เจ•เจฆเฉ‡ เจตเฉ€ เจ•เฉฐเจธเฉ‹เจฒ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ‡ เจธเจผเฉเฉฑเจง เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฐเจพเจœเจผ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เจฃ เจฆเฉ‡ เจฏเฉ‹เจ— เจจเจนเฉ€เจ‚ เจธเฉ€.
  • เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจฒเจˆ เจฎเฉเจซเจผเจค

เจจเฉเจ•เจธเจพเจจ:

  • YML, เจ เฉ€เจ• เจนเฉˆ, เจฎเฉˆเจ‚ เจ‰เจธเจจเฉ‚เฉฐ เจชเจธเฉฐเจฆ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ. เจ…เจœเจฟเจนเฉ‡ เจชเฉเจฐเจตเจพเจน เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจธเจญ เจคเฉ‹เจ‚ เจ†เจฎ เจชเฉเจฐเจคเฉ€เจฌเฉฑเจง เจธเฉฐเจฆเฉ‡เจธเจผ เจนเฉˆ "เจซเจฟเจ•เจธ yml เจซเจพเจฐเจฎเฉˆเจŸ", เจซเจฟเจฐ เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจคเฉ‡ เจŸเฉˆเจฌ เจฒเจ—เจพเจ‰เจฃเจพ เจญเฉเฉฑเจฒ เจœเจพเจ‚เจฆเฉ‡ เจนเฉ‹, เจœเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ—เจฒเจค เจฒเจพเจˆเจจ 'เจคเฉ‡ เจฒเจฟเจ–เจฆเฉ‡ เจนเฉ‹. เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจŸเฉˆเจ•เจŸเจฐ เจ…เจคเฉ‡ เจธเจผเจพเจธเจ• เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจ•เฉเจฐเฉ€เจจ เจฆเฉ‡ เจธเจพเจนเจฎเจฃเฉ‡ เจฌเฉˆเจ เจฃเจพ เจธเจญ เจคเฉ‹เจ‚ เจธเฉเจนเจพเจตเจฃเจพ เจ…เจจเฉเจญเจต เจจเจนเฉ€เจ‚ เจนเฉˆ.
  • เจกเฉ€เจฌเฉฑเจ—, เจ•เจฎเจฟเจŸ เจฆเฉ‡ เจจเจพเจฒ เจตเจนเจพเจ… เจจเฉ‚เฉฐ เจกเฉ€เจฌเฉฑเจ— เจ•เจฐเจจเจพ, เจฐเฉ€เจฌเจฟเจฒเจก เจšเจฒเจพเจ‰เจฃเจพ, เจ…เจคเฉ‡ เจ•เฉฐเจธเฉ‹เจฒ เจจเฉ‚เฉฐ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจ•เจฐเจจเจพ เจนเจฎเฉ‡เจธเจผเจพ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เจน "เจคเฉเจธเฉ€เจ‚ เจ“เจตเจฐเจกเฉ‹เจจ เจนเฉ‹" เจธเจผเฉเจฐเฉ‡เจฃเฉ€ เจคเฉ‹เจ‚ เจตเฉฑเจง เจนเฉˆ; เจคเฉเจธเฉ€เจ‚ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• IDEA เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจ†เจฆเฉ€ เจนเฉ‹, เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจ•เฉเจ เจตเฉ€ เจกเฉ€เจฌเฉฑเจ— เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ .
  • เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ€ เจ•เจพเจฐเจตเจพเจˆ เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจšเฉ€เจœเจผ 'เจคเฉ‡ เจฒเจฟเจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจตเจฟเฉฑเจš เจฒเจชเฉ‡เจŸเจฆเฉ‡ เจนเฉ‹, เจชเจฐ เจธเจฟเจฐเจซ เจœเจพเจตเจพเจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเจฎเจฐเจฅเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจฌเฉ‡เจธเจผเจ• เจ‡เจน เจธเจตเจพเจฆ เจฆเฉ€ เจ—เฉฑเจฒ เจนเฉˆ, เจชเจฐ เจฎเฉˆเจ‚ js เจฆเฉ€ เจฌเจœเจพเจ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจคเจฐเจœเฉ€เจน เจฆเฉ‡เจตเจพเจ‚เจ—เจพ.

เจฎเฉˆเจจเฉ‚เฉฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฏเจพเจฆ เจฆเจฟเจตเจพเจ‰เจฃ เจฆเจฟเจ“ เจ•เจฟ เจธเจพเจฐเฉ€เจ†เจ‚ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจตเจพเจฒเจพ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจ‡เฉฑเจฅเฉ‡ เจนเฉˆ: github.com/antkorwin/github-actions

เจ…เจ—เจฒเฉ‡ เจนเจซเจคเฉ‡ เจฎเฉˆเจ‚ เจจเจพเจฒ เจชเจฐเจซเจพเจฐเจฎ เจ•เจฐเจพเจ‚เจ—เจพ เจฐเจฟเจชเฉ‹เจฐเจŸ Heisenbug 2020 Piter เจ•เจพเจจเจซเจฐเฉฐเจธ เจตเจฟเฉฑเจšเฅค เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจน เจจเจนเฉ€เจ‚ เจฆเฉฑเจธเจพเจ‚เจ—เจพ เจ•เจฟ เจŸเฉˆเจธเจŸ เจกเฉ‡เจŸเจพ เจคเจฟเจ†เจฐ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจคเฉ‹เจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจšเจฃเจพ เจนเฉˆ, เจฌเจฒเจ•เจฟ Java เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจธเฉˆเฉฑเจŸเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจฎเฉ‡เจฐเฉ‡ เจฐเจพเจœเจผ เจตเฉ€ เจธเจพเจ‚เจเฉ‡ เจ•เจฐเจพเจ‚เจ—เจพ!

เจธเจฐเฉ‹เจค: www.habr.com