Skip to main content

깃헙 액션 커밋 목록 가져오기

name: 커밋 목록 가져오기

on:
  workflow_dispatch:
  schedule:
    - cron: '*/5 * * * *'

jobs:
  create_notion_page:
    runs-on: ubuntu-latest
    steps:
      - name: 깃 리포지토리 fetch 및 체크아웃
        uses: actions/checkout@v4
        with:
          fetch-depth: 0 // 항상 전부 fetch 해야하나?

      - name: 마지막으로 확인한 커밋 ID 가져오기
        id: last-checked-commit
        run: |
          if [ -f .github/last_checked_commit ]; then
            echo "last_checked_commit=$(cat .github/last_checked_commit)" >> $GITHUB_ENV
          else
            echo "last_checked_commit=HEAD^" >> $GITHUB_ENV
          fi

      - name: 새로운 커밋 목록 가져오기
        id: get-commits
        run: |
          last_checked_commit=${{ env.last_checked_commit }}
          commits=$(git rev-list ${last_checked_commit}..HEAD --no-merges | tr '\n' ',')
          echo "commits=$commits" >> $GITHUB_OUTPUT

      - name: 커밋 목록이 있는지 확인
        run: |
          if [ -z "${{ steps.get-commits.outputs.commits }}" ]; then
            echo "No new commits to process."
            exit 0
          fi

      - name: 커밋 목록 출력 (테스트)
        run: |
          echo "New commits to process:"
          echo "${{ steps.get-commits.outputs.commits }}"

      - name: 마지막으로 확인한 커밋 ID 기록
        id: save-last-commit
        run: |
          last_commit=$(echo "${{ steps.get-commits.outputs.commits }}" | awk -F, '{for(i=NF;i>0;i--) if($i!="") {print $i; exit}}')
          echo "${last_commit}" > .github/last_checked_commit

      - name: 마지막 확인한 커밋 ID 저장 // 항상 깃헙에 올려야하나?
        run: |
          git config --global user.email "you@example.com"
          git config --global user.name "Your Name"
          git add .github/last_checked_commit
          git commit -m "Update last checked commit"
          git push