как использовать переменные в блоке «with» в действиях github - PullRequest
3 голосов
/ 13 марта 2020

Я много борюсь с действиями GitHub. Кажется, это работает:

      - name: Tag & Push docker image
        run: |
          docker push myrepo/myapp:${GITHUB_SHA::8}

Однако, это не:

      - name: create release
        uses: some-custom-action
        with:
          release_version: 1.0.0-${GITHUB_SHA::8}

и это:

      - name: create release
        uses: some-custom-action
        with:
          release_version: "1.0.0-${{ env.GITHUB_SHA }}"

Я совершенно новичок в действиях GitHub и более чем удивлен отсутствием документации et c.

Мне просто нужно передать переменную в параметры «with» действия github.

Если кто-нибудь сможет помочь мне понять, что я делаю неправильно, я буду очень благодарен!

1 Ответ

4 голосов
/ 13 марта 2020

Когда вы используете контекст run, вы вызываете оболочку. (Для хостов macOS и Linux это /bin/bash.) Так что для этого шага:

- name: Tag & Push docker image
  run: |
    docker push myrepo/myapp:${GITHUB_SHA::8}

вы используете оболочку и ${GITHUB_SHA::8} будет передано ей буквально. Затем оболочка проанализирует это и интерполирует с обычными правилами синтаксического анализа.

Однако, когда вы указываете действие для запуска вместо сценария для выполнения, вы просто вызываете другая программа. Там нет оболочки, поэтому нет ничего, что будет анализировать ${GITHUB_SHA::8}.

Вы можете использовать ${{ ... }} для ссылки на вещи в доступных контекстах . Например, есть контекст env, который открыт для вас, чтобы установить пары ключ / значение и использовать их повторно. (Но контекст env не является частью bash shell , поэтому, например, ${{ env.PWD }} не существует.)

Там является отображением, однако между переменными окружения github context и , которые устанавливаются, когда вы do запускаете оболочку . Переменная контекста ${{ github.sha }} будет установлена ​​в вашей оболочке как переменная окружения $GITHUB_SHA.

Так что в вашем примере это должно работать:

- name: create release
  uses: some-custom-action
  with:
    release_version: "1.0.0-${{ github.sha }}"
...