Увеличить номер версии в GitHub Actions

Не эксперт по традиционным командам Linux, а также по grep. У меня есть настройка конвейера, и каждый раз, когда я делаю основной выпуск своего приложения, я хочу

  • Создайте тег GitHub
  • Увеличить версию + собрать в моем pubspec.yaml

Создание тега GitHub уже работает, и я использовал следующую команду (я предполагаю, что есть возможности для улучшения):

echo "TAG_NAME=$(cat ${GITHUB_WORKSPACE}/pubspec.yaml | grep 'version:' | head -1 | cut -f2- -d: | sed -e 's/^[ \t]*//')" >> $GITHUB_OUTPUT

Однако для второго шага я довольно потерян. Я уже думал о поиске/замене соответствующей строки в моем pubspec.yaml, но я не знаю, как теперь я могу применить такое преобразование к своему номеру версии.

Например:

  • 1.2.3+22 -> 1.2.4+23
  • 2.14.9+99 -> 2.14.10+100

Обновлено: команды, которые у меня сейчас работают, следующие:

- name: "Retrieve version"
        id: version
        run: |
          echo "OLD_VERSION=$(cat ${GITHUB_WORKSPACE}/pubspec.yaml | grep 'version:' | head -1 | cut -f2- -d: | sed -e 's/^[ \t]*//')" >> $GITHUB_OUTPUT
          echo "NEW_VERSION=$(awk '{ match($0,/([0-9]+)\+([0-9]+)/,a); a[1]=a[1]+1; a[2]=a[2]+1; sub(/[0-9]+\+[0-9]+/,a[1]"+"a[2])}1' ${GITHUB_WORKSPACE}/pubspec.yaml | grep 'version:' | head -1 | cut -f2- -d: | sed -e 's/^[ \t]*//')" >> $GITHUB_OUTPUT
      - name: "Increment version"
        run: |
          sed -i 's/${{ steps.version.outputs.OLD_VERSION }}/${{ steps.version.outputs.NEW_VERSION }}/g' ${GITHUB_WORKSPACE}/pubspec.yaml
          echo ${{ steps.version.outputs.OLD_VERSION }}
          echo ${{ steps.version.outputs.NEW_VERSION }}

Вероятно, многое можно оптимизировать.

Типы данных JavaScript
Типы данных JavaScript
В JavaScript существует несколько типов данных, включая примитивные типы данных и ссылочные типы данных. Вот краткое объяснение различных типов данных...
Как сделать движок для футбольного матча? (простой вариант)
Как сделать движок для футбольного матча? (простой вариант)
Футбол. Для многих людей, живущих на земле, эта игра - больше, чем просто спорт. И эти люди всегда мечтают стать футболистом или менеджером. Но, к...
Знайте свои исключения!
Знайте свои исключения!
В Java исключение - это событие, возникающее во время выполнения программы, которое нарушает нормальный ход выполнения инструкций программы. Когда...
CSS Flex: что должен знать каждый разработчик
CSS Flex: что должен знать каждый разработчик
CSS Flex: что должен знать каждый разработчик Модуль flexbox, также известный как гибкий модуль разметки box, помогает эффективно проектировать и...
Введение в раздел "Заголовок" в HTML
Введение в раздел "Заголовок" в HTML
Говорят, что лучшее о человеке можно увидеть только изнутри, и это относится и к веб-страницам HTML! Причина, по которой некоторые веб-страницы не...
0
0
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если awk это вариант, вы можете попробовать;

$ awk '{ match($0,/([0-9]+)\+([0-9]+)/,a); a[1]=a[1]+1; a[2]=a[2]+1; sub(/[0-9]+\+[0-9]+/,a[1]"+"a[2])}1' input_file
1.2.4+23
2.14.10+100

Большое спасибо, это сработало для меня. Даже несмотря на то, что мои линии сейчас кажутся слишком сложными. Но по крайней мере работает - спасибо.

Thomas 10.01.2023 16:08

Другие вопросы по теме