github action при клонировании репозитория

2025-07-02 · 2 мин. для прочтения

github action при клонировании репозитория.

Содержание

1 Задача

  • Необходимо было править файл package.json при клонировании репозитория.

2 Вариант решения

  • Создал каталог для файлов Actions:
    mkdir -p .github/workflows
    
  • Файл для описания клонирования назвал clone.yaml:
    touch .github/workflows/clone.yaml
    

3 Содержание файла

name: Replace data in package.json
# У меня получилось использовать только триггер push.
on: push

permissions:
  contents: write

jobs:
  run-script:
    name: replace data

    # Пропускаем, если у нас репозиторий-шаблон.
    # Проверяем, что у нас первый коммит (только склонировали репозиторий).
    # We will only run this action when this repository isn't the template repository
    if: >-
      ${{ !github.event.repository.is_template && github.run_number == 1 }}

    runs-on: ubuntu-latest
    steps:
      - name: Configure Git
        run: |
          git config --global user.name "${GITHUB_ACTOR}"
          git config --global user.email "${GITHUB_ACTOR_EMAIL}"
        shell: bash

      - name: Checkout repository
        uses: actions/checkout@v3

        # Редактируем файл package.json
        # Заменяем версию на 1.0.0
      - name: Replace version
        run: |
          sed -i "s/\"version\": \".*\"/\"version\": \"1.0.0\"/" package.json
      - name: Replace name and email
        run: |
          sed -i "s/\"author\": \".*\"/\"author\": \"${{ github.actor }}\"/" package.json
      - name: Replace repository
        run: |
          sed -i "s|\"repository\": \".*\"|\"repository\": \"${{ github.repositoryUrl }}\"|" package.json

      - name: Commit changes
        run: |
          git add package.json
          git commit -m "Replace data in package.json"

      - name: Push changes
        uses: ad-m/github-push-action@master
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          branch: master
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Мои научные интересы включают физику, администрирование Unix и сетей.