GitHub CI: отправьте сборку React в другое репо

Я установил действие GitHub, которое создает сборку моего приложения React.

Мне нужно, чтобы эта сборка была перенесена в другое репо, которое я использую для отслеживания сборок. Это действие, которое на самом деле выполняется:

      on:
  push:
    branches: [master]

jobs:
  build:
    name: create-package
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [14]

    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        name: Use Node.js 14
        with:
          node-version: ${{ matrix.node-version }}
      #- name: Install dependencies
      - run: npm ci

      - run: npm run build --if-present
        env:
          CI: false

  copy:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Copy to another repo
        uses: andstor/copycat-action@v3
        with:
          personal_token: ${{ secrets.API_TOKEN_GITHUB }}
          src_path: build
          dst_path: /.
          dst_owner: federico-arona
          dst_repo_name: test-build
          dst_branch: main

Кстати, когда действие запускает задание копирования, оно завершается ошибкой со следующим сообщением:

      cp: can't stat 'origin-repo/build': No such file or directory

Что я делаю не так?

1 ответ

Для всех, кому нужен ответ по этому поводу.

Проблема была связана с тем, что я использовал два разных задания: одно для запуска сборки, а другое для копирования этой сборки в другое репо.

Это не сработает, потому что у каждого задания есть собственный исполнитель и своя файловая система, а это означает, что данные не используются совместно между заданиями.

Чтобы избежать этой проблемы, я сделал все за одну работу. Другое решение - передать сборку между заданиями как артефакт:

https://docs.github.com/en/actions/guides/storing-workflow-data-as-artifacts#passing-data-between-jobs-in-a-workflow

Другая проблема была связана с действием копирования, которое я использовал. По какой-то причине это действие не нашло каталог сборки, вероятно, потому, что предполагалось использовать другой рабочий каталог. Я переключился на другое действие.

Вот окончательный результат:

      on:
  push:
    branches: [master]

jobs:
  build:
    name: create-package
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [14]

    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        name: Use Node.js 14
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm ci

      - run: npm run build --if-present
        env:
          CI: false
      - run: ls
      - name: Copy to another repo
        uses: andstor/copycat-action@v3
        with:
          personal_token: ${{ secrets.API_TOKEN_GITHUB }}
          src_path: build
          dst_path: /.
          dst_owner: federico-arona
          dst_repo_name: test-build
          dst_branch: main
Другие вопросы по тегам