Ошибка действий Github;не вижу git diff Мастеру - PullRequest
1 голос
/ 30 октября 2019

Я пытаюсь найти способ привязать только файлы уценки, которые были изменены в текущей ветви. Я написал bash-скрипт, который прекрасно работает локально, но не работает в Github Actions.

Ожидаемый результат: файлы разметки только для lint, которые были изменены в ветви в GitHub Actions по запросу-запросу.

#!/bin/bash
files=`git diff --name-only master`
for x in $files;
do
    if [ ${x: -3} == ".md" ]
    then
        node_modules/.bin/markdownlint $x
    fi
done

Я вызываю скрипт в package.json

"scripts": {
    "test": "bash mdlint.sh"
  }

Затем я вызываю скрипт bash в рабочем процессе действий GitHub:

name: CI

on: 
  pull_request:
    branches:
    - master

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
      with:
        fetch-depth: 1
    - uses: actions/setup-node@master
    - name: lint all markdownfiles
      run: |
        npm install
        npm run test

Это ошибка в действиях GitHub:

  shell: /bin/bash -e {0}
npm WARN Gatsby_site No repository field.
npm WARN Gatsby_site No license field.

added 33 packages from 26 contributors and audited 43 packages in 0.952s
found 0 vulnerabilities


> @ test /home/runner/work/Gatsby_site/Gatsby_site
> bash mdlint.sh

fatal: ambiguous argument 'master': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

Есть ли способ заставить действия GitHub запускать линтер только на файлах, которые изменились в текущей ветке?

1 Ответ

0 голосов
/ 31 октября 2019

Я думаю, что вы можете решить эту проблему, связав master с origin master следующим образом:

git fetch origin master:master
git diff --name-only master

Имейте в виду, что события, запускающие рабочие процессы on: pull_request, не связаны с веткой, они связаныслиянием совершить SHA. Таким образом, actions/checkout@v1 по умолчанию извлечет фиксацию слияния, заданную GITHUB_SHA, а не ветвь, которая сливается с базой. См. документацию здесь .

Вы можете переопределить это поведение по умолчанию и проверить слияние ветки с базой следующим образом:

      - uses: actions/checkout@master
        with:
          ref: ${{ github.head_ref }}

Я не уверен, будет ли это необходимо для вашего варианта использования, но можетнепредвиденные эффекты при запуске diff при коммите слияния.

...