Как получить текущую ветку в действиях GitHub - PullRequest
1 голос
/ 20 сентября 2019

Я создаю образы докеров с помощью Github Actions и хочу пометить изображения с именем ветви, я нашел только переменную GITHUB_REF, но в результате получается refs/heads/feature-branch-1, и мне нужно только feature-branch-1.

Ответы [ 2 ]

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

Я добавил отдельный шаг для извлечения имени ветви из $GITHUB_REF и установил для него вывод шага

- name: Extract branch name
      shell: bash
      run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF##*/})"
      id: extract_branch

, после этого я могу использовать его на следующих шагах с

- name: Push to ECR
      id: ecr
      uses: jwalton/gh-ecr-push@master
      with:
        access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
        secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        region: us-west-2
        image: eng:${{ steps.extract_branch.outputs.branch }}
2 голосов
/ 20 сентября 2019

Я полагаю, GITHUB_REF - единственная переменная среды, которая включает имя ветви.

Вы можете извлечь только имя ветви из остальной части этой строки, например:

${GITHUB_REF##*/}

Пример:

$ GITHUB_REF=refs/heads/feature-branch-1
$ echo ${GITHUB_REF##*/}
feature-branch-1

Обновление: добавлен полный пример рабочего процесса.

Рабочий процесс

name: CI
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Git checkout
        uses: actions/checkout@v1
      - name: Branch name
        run: echo running on branch ${GITHUB_REF##*/}
      - name: Build
        run: docker build -t tedmiston/tag-example:${GITHUB_REF##*/} .

Источник: https://github.com/tedmiston/x/blob/master/.github/workflows/workflow.yml

Пример вывода - основная ветвь

Run docker build -t tedmiston/tag-example:${GITHUB_REF##*/} .
  docker build -t tedmiston/tag-example:${GITHUB_REF##*/} .
  shell: /bin/bash -e {0}
Sending build context to Docker daemon  146.9kB

Step 1/1 : FROM alpine
latest: Pulling from library/alpine
9d48c3bd43c5: Pulling fs layer
9d48c3bd43c5: Verifying Checksum
9d48c3bd43c5: Download complete
9d48c3bd43c5: Pull complete
Digest: sha256:72c42ed48c3a2db31b7dafe17d275b634664a708d901ec9fd57b1529280f01fb
Status: Downloaded newer image for alpine:latest
 ---> 961769676411
Successfully built 961769676411
Successfully tagged tedmiston/tag-example:master

Журнал: https://github.com/tedmiston/x/commit/cdcc58a908e41d3d90c39ab3bf6fef1ad2c4238a/checks#step:4:16

Пример вывода - неосновная ветвь

Run docker build -t tedmiston/tag-example:${GITHUB_REF##*/} .
  docker build -t tedmiston/tag-example:${GITHUB_REF##*/} .
  shell: /bin/bash -e {0}
Sending build context to Docker daemon  144.9kB

Step 1/1 : FROM alpine
latest: Pulling from library/alpine
9d48c3bd43c5: Pulling fs layer
9d48c3bd43c5: Verifying Checksum
9d48c3bd43c5: Download complete
9d48c3bd43c5: Pull complete
Digest: sha256:72c42ed48c3a2db31b7dafe17d275b634664a708d901ec9fd57b1529280f01fb
Status: Downloaded newer image for alpine:latest
 ---> 961769676411
Successfully built 961769676411
Successfully tagged tedmiston/tag-example:branch-name-test

Журнал: https://github.com/tedmiston/x/commit/4e8d31259f861aaa2c30375756fc081c3659bddf/checks#step:4:16


См. этот ответ для получения дополнительной информации о синтаксисе расширения параметров.

Для справки на странице Виртуальные среды для действий GitHub перечислены всепеременные среды, доступные в среде выполнения.

...