Как оформить последний коммит с помощью Github Actions? - PullRequest
1 голос
/ 20 сентября 2019

Я создал новый проект Rust и решил, что я дам Github Actions попытку запуска автоматических сборок и тестов для каждого запроса на извлечение:

name: Rust
on: [pull_request]

Мне потребовалосьв то же время, чтобы заметить, что по умолчанию Github Actions не извлекает мой код вообще, а GITHUB_WORKSPACE просто пуст.Итак, я попытался вручную клонировать хранилище.Делаем что-то вроде этого:

REPO=/tmp/path/to/repository
git clone https://github.com/myself/mycode.git $REPO

Но это просто проверяет, что находится в ветке по умолчанию.Итак, я исследовал проверку $GITHUB_SHA, которая оказалась неизвестной моему хранилищу.И то же самое верно для $GITHUB_REF, который просто пуст.

На данный момент я не знаю, что я делаю.Мое первоначальное предположение состояло в том, что задание, которое буквально сконфигурировано для запуска on: [pull request], должно иметь именно этот код, но оно не может извлечь и подготовить его.

Я также исследовал предоставленные Действия проверки :

Это действие проверяет ваш репозиторий на $GITHUB_WORKSPACE, чтобы ваш рабочий процесс мог получить доступ к содержимому вашегорепозиторий.

По умолчанию это эквивалентно выполнению git fetch и git checkout $GITHUB_SHA, так что вы всегда будете иметь содержимое репозитория в той версии, которая запустила рабочий процесс.См. здесь , чтобы узнать, что такое $GITHUB_SHA для различных видов событий.

Но, как я уже говорил, $GITHUB_WORKSPACE полностью пуст, и git fetch будетпросто скажу вам, что git-репозитория нет.

Вот такой пример сбоя :

On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
fatal: reference is not a tree: d76745134ae45905e4a0ab8d27c92f1e2544bdc1
##[error]Process completed with exit code 128.

Что такое $GITHUB_SHA, если оно неизвестно моему репозиторию?Полностью ли я неправильно понимаю действия Github?Как оформить последний коммит с помощью Github Actions, т. Е. По запросу извлечения?

Вот хронология моих сбоев .

1 Ответ

2 голосов
/ 20 сентября 2019

Вы должны использовать официальное действие , которое обрабатывает оформление заказа.* * * * * * * * * * * * * * * *

Итак, некоторые вещи должны быть немного странными или требовать некоторого привыкания к github-actions.громоздким, прежде всего потому, что документация на все это еще не очень зрелая - но эй, это бета-версия по какой-то причине.

Основное использование этого действия:

  • найдите раздел steps, в котором вы хотели бы получить текущую фиксацию
  • добавьте действие перед тем, как написать шаг, основанный на коде, который обычно находится в самом верху
  • решить, какую версию действия вы хотите использовать, в руководствах часто будет @master, но текущую версию назвать немного безопаснее - в данном случае @v1
  • наслаждайтесь своим рабочим процессом
jobs:
  build:
    runs-on: ubuntu-latest
    steps:

      # may or may not have a name, it's quite self-descriptive
      - uses: actions/checkout@v1

      # run steps that rely on the code in the commit that was pushed
      - name: test code
        steps: ...
      - name: build package
        steps: ...
...