GitHub Actions:如何将 VERSION 文件的内容获取到环境变量中?

Log*_* M. 10 docker github-actions

在我的 Docker 项目的存储库中,我有一个 VERSION 文件,其中仅包含版本号。

1.2.3
Run Code Online (Sandbox Code Playgroud)

在 Travis 中,我可以将cat文件保存到环境变量中,并在推送到 Docker Hub 之前使用它来标记我的构建。

---
env:
  global:
    - USER=username
    - REPO=my_great_project
    - VERSION=$(cat VERSION)
Run Code Online (Sandbox Code Playgroud)

与 GitHub Actions 中的等效项是什么?我尝试过这个,但它不起作用。

name: Test

on:
  ...
  ...

env:
  USER: username
  REPO: my_great_project

jobs:
  build_ubuntu:
    name: Build Ubuntu

    runs-on: ubuntu-latest
    env:
      BASE: ubuntu

    steps:
    - name: Check out the codebase
      uses: actions/checkout@v2

    - name: Build the image
      run: |
        VERSION=$(cat VERSION)
        docker build --file ${BASE}/Dockerfile --tag ${USER}/${REPO}:${VERSION} .

  build_alpine:
    name: Build Alpine

    runs-on: ubuntu-latest
    env:
      BASE: alpine

    ...
    ...
    ...
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个,但不起作用。

- name: Build the image
  run: |
    echo "VERSION=$(cat ./VERSION)" >> $GITHUB_ENV
    docker build --file ${BASE}/Dockerfile --tag ${USER}/${REPO}:${VERSION} .
Run Code Online (Sandbox Code Playgroud)

Log*_* M. 17

我沿着Benjamin W.所说的VERSION在我的环境中与在那个特定步骤中所谈论的道路走下去。

这对我来说很有用,可以在一个步骤中设置变量,然后在单独的步骤中使用它。

- name: Set variables
  run: |
    VER=$(cat VERSION)
    echo "VERSION=$VER" >> $GITHUB_ENV

- name: Build Docker Image
  uses: docker/build-push-action@v2
  with:
    context: .
    file: ${{ env.BASE_DIR }}/Dockerfile
    load: true
    tags: |
      ${{ env.USER }}/${{ env.REPO }}:${{ env.VERSION }}
      ${{ env.USER }}/${{ env.REPO }}:latest
Run Code Online (Sandbox Code Playgroud)