Я хотел бы создать рабочий процесс GitHub для отображения всех коммитов, отправленных в master за последнюю неделю (между текущей датой и текущей датой минус 7 дней).
Это моя идея до сих пор:
Получить текущую дату: это легко, и на него уже ответили здесь
Вычтите 7 дней из текущей даты: я пока не знаю, как это сделать последовательным образом.
Получите список коммитов между этими двумя датами: это легко сделать с помощью команды git log
, как описано здесь, но как это можно преобразовать в GitHub Workflow Yaml?
Могу ли я иметь некоторые предложения по пунктам 2 и 3? или если есть более простой способ добиться того, что мне нужно, скажите мне.
Вы можете легко найти stackoverflow.com/q/2009577/7976758 или stackoverflow.com/a/21743961/7976758 , если попытаетесь выполнить поиск stackoverflow.com/search?q=%5Bgit%5D+log +дней
Привет, @phd, спасибо за комментарий. Как я уже сказал в вопросе, я знаю о команде git log, но я не знаю, как ее использовать в yaml рабочего процесса github. Можете ли вы опубликовать полный пример? Спасибо!
Мой комментарий и ссылки были о том, как рассчитать «7 дней» — переложить это бремя на Git. В Github Actions вы просто пишете команду, как в командной строке.
@phd ах, теперь это имеет смысл, спасибо. Я создам тестовый репозиторий, чтобы попробовать.
Я нашел решение, которое подходит для моих нужд, в том числе благодаря комментарию @phd.
Я напишу это здесь, чтобы будущие пользователи могли извлечь из этого пользу.
Прежде всего, я нашел хорошее приложение под названием act, которое позволяет вам локально тестировать сценарии рабочего процесса github (без необходимости создавать огромное количество коммитов только для проверки вашего сценария).
Рабочий скрипт такой:
name: GH-Workflow-Test
on:
push:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: '0'
- name: Get Weekly Commits
run: |
echo 'WEEKLY_COMMITS<<EOF' >> $GITHUB_ENV
git log --format=%B --since=7.days >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- name: Print Commits List
run: echo ${{ env.WEEKLY_COMMITS }}
Обновлено: Обновлен код без необходимости использования команды «tr». НЕ забудьте установить fetch-depth: '0', иначе вы сможете получить только последний коммит.
git log --since='{7 days ago}'