Получить текущий заданный тег в Github Actions - PullRequest
3 голосов
/ 01 октября 2019

Есть ли способ получить доступ к текущему тегу, который был добавлен в Github Action? В CircleCI вы можете получить доступ к этому значению с помощью переменной $CIRCLE_TAG.

Мой рабочий процесс запускается с помощью тега, подобного так:

on:
  push:
    tags:
      - 'v*.*.*'

И я хочу использовать этот номер версии какпуть к файлу позже в рабочем процессе.

Ответы [ 3 ]

3 голосов
/ 01 октября 2019

Насколько я знаю, нет переменной тега. Тем не менее, он может быть извлечен из GITHUB_REF, который содержит проверенную ссылку, например, refs/tags/v1.2.3

Попробуйте этот рабочий процесс. Он создает новую переменную среды с извлеченной версией, которую можно использовать на последующих этапах.

on:
  push:
    tags:
      - 'v*.*.*'
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Set env
        run: echo ::set-env name=RELEASE_VERSION::$(echo ${GITHUB_REF:10})
      - name: Test
        run: echo $RELEASE_VERSION

В качестве альтернативы используйте set-output:

on:
  push:
    tags:
      - 'v*.*.*'
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Set output
        id: vars
        run: echo ::set-output name=tag::$(echo ${GITHUB_REF:10})
      - name: Check output
        env:
          RELEASE_VERSION: ${{ steps.vars.outputs.tag }}
        run: echo $RELEASE_VERSION
1 голос
/ 01 октября 2019

Вот рабочий процесс, показывающий, что переменная окружения GITHUB_REF содержит refs/tags/v0.0.2:

https://github.com/rmunn/Testing/runs/242676390

Я выполнил это, создав тег, затем выполняя git push origin v0.0.2.

Вот фрагмент рабочего процесса, который вы видите в этом журнале:

steps:
- uses: actions/checkout@v1
- name: Dump GitHub context
  env:
    GITHUB_CONTEXT: ${{ toJson(github) }}
  run: echo "$GITHUB_CONTEXT"
  if: runner.os != 'Windows'
- name: Show GitHub ref
  run: echo "$GITHUB_REF"
  if: runner.os != 'Windows'
- name: Dump event JSON
  env:
    EVENT_JSON_FILENAME: ${{ github.event_path }}
  run: cat "$EVENT_JSON_FILENAME"
  if: runner.os != 'Windows'

Так как этот журнал будет в конечном итоге удален (я не знаю, как долго сохраняются журналы Github Actions, но это точноне навсегда), вот скриншот для доказательства.

enter image description here

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

Таким образом, благодаря всей помощи @peterevans мне удалось достичь желаемого результата:

  • , чтобы пометить коммит
  • нажмите тег, чтобы вызвать действие github
  • Действие github устанавливает тег git как env var
  • Запустите install & build
  • используйте действие chrislennon/action-aws-cli для установки aws cli с использованием секретов для ключей
  • Запустите команду, чтобы синхронизировать сборку с новой корзиной S3, используя тег env var в качестве имени dir

Вот пример того, что я запустил, используя действие Криса Леннона:

on:
  push:
    tags:
      - 'v*.*.*'
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Set env
        run: echo ::set-env name=RELEASE_VERSION::$(echo ${GITHUB_REF:10})
      - name: yarn install & build
        run: |
          yarn install
          yarn build
      - name: Publish to AWS S3
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
        run: aws s3 sync dist s3://$AWS_S3_BUCKET/$RELEASE_VERSION/ --acl public-read
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...