해당 코드는 Github 에서 확인할 수 있습니다.
 
Github Action Github Action을 통해서 깃허브 자체적으로 CI & CD를 진행할 수 있습니다. Github에대한 자세한 설명은 공식홈페이지 를 참고 해주세요. 본 포스팅에서는 Spring Boot & Gradle 환경에서 간단한 빌드를 다룰 예정입니다.
Github Action 만들기 Github Repository 상단에 Actions을 클릭 합니다.
Java With Gradle Action의 Set up this workflow 버튼을 클릭합니다.
Java With Gradle Action의 YML을 생성합니다.
gradle.yml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 name:  Java  CI  with  Gradle on:   push:      branches:  [ master  ]   pull_request:      branches:  [ master  ] jobs:   build:      runs-on:  ubuntu-latest      steps:      -  uses:  actions/checkout@v2      -  name:  Set  up  JDK  1.8        uses:  actions/setup-java@v1        with:          java-version:  1.8      -  name:  Grant  execute  permission  for  gradlew        run:  chmod  +x  gradlew      -  name:  Build  with  Gradle        run:  ./gradlew  build  
 
on.push, on.pull_request을 보면 master branch에 push, pull_request 이벤트가 발생하는 경우 해당 jobs가 실행됩니다. build에서는 JDK 설정, Gradle 설정을 진행하고 최종적으로 ./gradlew build 진행합니다.
Action Workflows 
master에 push, pull_request 이벤트가 발생할 경우 해당 Github Action이 동작하게 됩니다.
Event를 클릭하면 상세 Github Actuon에 대한 내용을 살펴볼 수 있습니다.
Badge 
오른쪽 상단에 Create status badge 버튼을 클릭해서 Badge를 Markdown Copy를 진행할 수 있습니다. 
Schedule With Spring Batch Github Action은 schedule 기능을 제공하고 있습니다. Spring Batch를 이용하여 간단한 schedule Job을 작성해보겠습니다.
Schedule Github action 생성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 name:  Simple  Job on:   schedule:      -  cron:  '*/5 * * * *'  jobs:   build:      runs-on:  ubuntu-latest      steps:        -  uses:  actions/checkout@v2        -  name:  Set  up  JDK  1.8          uses:  actions/setup-java@v1          with:            java-version:  1.8        -  name:  Grant  execute  permission  for  gradlew          run:  chmod  +x  gradlew        -  name:  Build  with  Gradle          run:  ./gradlew  build  -x  test        -  name:  Commpany  Save  Job  Execute          run:  java  -jar  -Dspring.batch.job.names=simpleJob  ./build/libs/action-0.0.1-SNAPSHOT.jar  
 
위에서 생성한 gradle.yml을 기반으로 schedule Gtihub Action을 위한 simple-job.yml을 생성합니다. cron: '*/5 * * * *' 해당 설정으로 5분마다 스케줄을 지정합니다.
Batch Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 @Configuration class  SimpleJobConfig (    private  val  jobBuilderFactory: JobBuilderFactory,     private  val  stepBuilderFactory: StepBuilderFactory ) {     @Bean      fun  simpleJob ()  : Job {         return  jobBuilderFactory.get ("simpleJob" )             .incrementer(RunIdIncrementer())             .start(simpleStep())             .build()     }     private  fun  simpleStep ()  : Step {         return  stepBuilderFactory.get ("simpleStep1" )             .tasklet { _, _ ->                 Unirest.post("https://hooks.slack.com/services/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" )                     .header("Content-Type" , "application/json" )                     .body("""                          {                             "text": "${LocalDateTime.now()} "                         }                     """ .trimIndent())                    .asString()                 RepeatStatus.FINISHED             }             .build()     } } 
 
Slack 으로 현재 시간을 보내는 메시지를 전송하는 Job입니다.
Simple Job Action에 대한 스케줄을 확인할 수 있습니다. 이처럼 schedule 기능을 이용하면 간단하게 Schedule Batch Job을 구성할 수 있습니다.