├── task.sh ├── .github └── workflows │ └── planting-grass.yml └── README.md /task.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "DATE: $1" >> date.txt 4 | -------------------------------------------------------------------------------- /.github/workflows/planting-grass.yml: -------------------------------------------------------------------------------- 1 | # 1. 저장소 Fork 2 | # 2. 해당 파일 A, B 절차에 따라 수정 3 | # 3. 수정사항 커밋 후 푸쉬 & Enjoy! 4 | 5 | name: planting-grass 6 | 7 | # A. 8~11 라인 주석 처리 8 | on: 9 | push: 10 | branches: 11 | - unknown 12 | 13 | # B. 14~16 라인 주석 해제 14 | # on: 15 | # schedule: 16 | # - cron: '0 0 * * *' 17 | 18 | jobs: 19 | task: 20 | runs-on: ubuntu-latest 21 | steps: 22 | - uses: actions/checkout@v2 23 | - name: Set current date 24 | id: date 25 | run: echo "::set-output name=date::$(date +'%Y-%m-%d')" 26 | - name: Execute commands 27 | run: sh ./task.sh ${{ steps.date.outputs.date }} 28 | - name: Commit files 29 | run: | 30 | # 이전의 커밋 기록에서 사용자 이름 및 이메일을 자동으로 추출합니다! 31 | git config --global user.name "$(git --no-pager log --format=format:'%an' -n 1)" 32 | git config --global user.email "$(git --no-pager log --format=format:'%ae' -n 1)" 33 | git add date.txt 34 | git commit -m ${{ steps.date.outputs.date }} 35 | - name: Push changes 36 | uses: ad-m/github-push-action@master 37 | with: 38 | github_token: ${{ secrets.GITHUB_TOKEN }} 39 | branch: ${{ github.ref }} 40 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | # army-gardener 4 | 5 | 👨‍🏭 군 훈련소 기간동안 잔디밭을 책임져줄 든든한 정원사 6 | 7 |
8 | 9 | ## Feature 10 | 11 | > 🌱 매일 오전 9시에 잔디를 심어드립니다. (UTC 00:00) 12 | 13 | ## Setup 14 | 15 | 1. 상단의 `Use this template` 버튼 눌러 저장소 복사 16 | 2. [.github/workflows/planting-grass.yml](.github/workflows/planting-grass.yml) 파일 수정 17 | - 파일 내에 표기해둔 `A`, `B` 작업 진행 18 | - `(TIP)` 깃허브 웹 에디터로 수정하면 더 편리합니다! 19 | 3. 수정사항 커밋 후 푸쉬! 20 | - `(주의)` 깃허브 웹 에디터를 사용하지 않고 로컬에 클론하여 직접 커밋했을 경우 사용자 정보(이름 및 이메일)가 깃허브 계정과 일치해야 잔디가 심어집니다. 21 | 22 | ### Disable 23 | 24 | - `(비활성)` 이전에 진행했던 A, B 작업 이전으로 되돌리면 더 이상 자동으로 커밋하지 않습니다! 25 | 26 | ## How it works? 27 | 28 | [GitHub Actions](https://github.com/features/actions)의 스케줄링(crontab) 기능을 통해 매일 본 저장소의 `task.sh` 스크립트를 실행합니다. 29 | 스크립트는 현재 날짜(`yyyy-MM-dd`)값을 받아 `date.txt` 파일에 기록하며, 30 | 해당 변경 사항을 커밋하고 원격 저장소로 푸쉬함으로써 그 날의 잔디를 심습니다. 31 | 32 | 깃 사용자 정보(이름 및 이메일)는 이전 커밋 기록을 기준으로 자동 추출하며, 33 | 결과적으론 [Setup](#setup) 과정에서 커밋을 수행한 사용자 정보를 사용하게 됩니다. 34 | 35 | > 스크립트가 실행되면서 날짜 값이 `date.txt` 파일에 한 줄씩 누적됩니다! 36 | 37 | ## Meter 38 | 39 | 본인은 산업기능요원으로 재직 중이며, 훈련소 기간동안 커밋을 못할 생각을 하니 ~~잘 심어두었던 잔디가 걱정되었다~~. 40 | 이러한 이유로 빠르고 대충 만들게된 쉽고 간편하고 편리한 GitHub Actions 템플릿 저장소! 41 | 42 | ~~그대로 방치하면 군 문제가 아니더라도 평생 자동으로 잔디를 심을 수 있다.~~ 43 | 44 | ## Issue 45 | 46 | - 오전 9시에 액션이 실행되도록 구성되어있지만, 깃허브 서버 상태에 따라 약간의 지연이 발생할 수 있음 47 | --------------------------------------------------------------------------------