相关疑难解决方法(0)

GitHub 操作 - 定义作业之间的工作流级别环境变量

我想在我的 Github 操作工作流中的作业之间定义和设置环境变量。下面的工作流程是我尝试过的,但不幸的是环境变量GIT_PR_SHA_SHORTE2E_GIT_PR_SHA不起作用。

是否可以?

name: Git Pull Request Workflow

on:
  workflow_dispatch:
  pull_request:
    branches:
      - master

env:
  GIT_PR_SHA: ${{github.event.pull_request.head.sha}}
  GIT_PR_SHA_SHORT: "${{ env.GIT_PR_SHA:0:10 }}"
  ENV_NAME: test
  E2E_GIT_PR_SHA: "${{ env.ENV_NAME }}-${{ env.GIT_PR_SHA_SHORT }}"

jobs:
  first-job:
    name: Build Docker Image
    runs-on: ubuntu-latest

    steps:
    - name: First Echo Step
      run: |
            echo "GIT_PR_SHA_SHORT = ${GIT_PR_SHA_SHORT}"
            echo "E2E_GIT_PR_SHA = ${E2E_GIT_PR_SHA}"

  second-job:
    name: Build Docker Image
    runs-on: ubuntu-latest

    steps:
    - name: Second Echo Step
      run: |
            echo "GIT_PR_SHA_SHORT = ${GIT_PR_SHA_SHORT}"
            echo "E2E_GIT_PR_SHA = …
Run Code Online (Sandbox Code Playgroud)

github-actions

12
推荐指数
3
解决办法
4607
查看次数

如何在 GitHub Actions 表达式语法中引用上下文值?

我想在env:GitHub Action的部分设置一个环境变量,并使用GitHub Actions上下文和表达式语法。我试过这个:

jobs:
  build:
    runs-on: ubuntu-latest

    env:
      MYVAR: ${{ format('{0}:{1}', ${{ env.PATH }}, ${{ env.HOME }} ) }}

    steps:
    - name: Check environment
      run: echo $MYVAR
Run Code Online (Sandbox Code Playgroud)

这会导致错误消息:

### ERRORED 10:45:52Z

- Your workflow file was invalid: The pipeline is not valid. .github/workflows/main.yml (Line: 10, Col: 14): Unexpected symbol: '${{'. Located at position 19 within expression: format('{0}:{1}', ${{ env.PATH
Run Code Online (Sandbox Code Playgroud)

此语法:

    env:
      MYVAR: ${{ format('{0}:{1}', {{ env.PATH }}, {{ env.HOME }} ) }}
Run Code Online (Sandbox Code Playgroud)

导致错误:

### …
Run Code Online (Sandbox Code Playgroud)

github-actions

9
推荐指数
2
解决办法
4088
查看次数

在 Github Actions 中读取 JSON 文件

我想读取一个 JSON 文件并在 Github Actions YAML 文件中的字符串中使用一个属性。我该怎么做呢?(我想要的版本package.json

json yaml github-actions

9
推荐指数
6
解决办法
1万
查看次数

GitHub Actions 使用从 shell 设置的变量

目标:

在 GitHub Actions 中,从 shell 动态定义我的提交消息:

      - name: Commit changes
        uses: EndBug/add-and-commit@v7
        with:
          message: "added on $(date -I)"
Run Code Online (Sandbox Code Playgroud)

但是,似乎我必须定义一个环境变量然后使用它。我正在关注如何在 GitHub Actions 中使用 bash 表达式设置环境变量?和其他类似的帮助文件,但仍然无法告诉如何使用我之前定义的环境变量。这是我尝试过但失败的:

      - name: Checkout repo
        uses: actions/checkout@v2
      - run: |
          touch sample.js
          echo "today=$(date -I)" >> $GITHUB_ENV

      - name: Commit changes
        uses: EndBug/add-and-commit@v7
        with:
          message: "added on ${today}"
Run Code Online (Sandbox Code Playgroud)

如何让它发挥作用?

shell environment-variables github-actions

8
推荐指数
1
解决办法
1万
查看次数

如何在github操作中使用计算属性

我正在尝试在新的github action yaml格式(新)中重建ci-cd,问题是我似乎无法在一个步骤中将计算值用作参数。

我尝试了以下

      - name: Download Cache
        uses: ./.github/actions/cache
        with:
          entrypoint: restore_cache
          args: --bucket=gs://[bucket secret] --key=node-modules-cache-$(checksum package.json)-node-12.7.0
Run Code Online (Sandbox Code Playgroud)

但是,“ $(checksum package.json)”作为参数的一部分无效。请不要与命令校验和存在(容器中确实存在)无关。

我正在尝试在Google Cloud build中复制这种设置

  - name: gcr.io/$PROJECT_ID/restore_cache
    id: restore_cache_node
    args:
      - '--bucket=gs://${_CACHE_BUCKET}'
      - '--key=node-modules-cache-$(checksum package.json)-node-${_NODE_VERSION}'
Run Code Online (Sandbox Code Playgroud)

我希望能够以与其他ci-cd解决方案类似的方式使用计算参数。

有没有办法做到这一点,我很想念?也许能够在docker容器中使用'run:'来运行一些命令。

bash yaml github-actions

5
推荐指数
1
解决办法
81
查看次数

Github Actions,如何在工作步骤之间共享计算值?

Github Actions是否有DRY方式在多个作业步骤中计算和共享值?

在下面的工作流程yml文件中,回显$ {GITHUB_REF} | cut -d'/'-f3`-$ {GITHUB_SHA}会分多个步骤重复。

name: Test, Build and Deploy
on:
  push:
    branches:
      - master
jobs:
  build_and_push:
    name: Build and Push
    runs-on: ubuntu-latest
    steps:
      - name: Docker Build
        uses: "actions/docker/cli@master"
        with:
          args: build . --file Dockerfile -t cflynnus/blog:`echo ${GITHUB_REF} | cut -d'/' -f3`-${GITHUB_SHA}
      - name: Docker Tag Latest
        uses: "actions/docker/cli@master"
        with:
          args: tag cflynnus/blog:`echo ${GITHUB_REF} | cut -d'/' -f3`-${GITHUB_SHA} cflynnus/blog:latest
Run Code Online (Sandbox Code Playgroud)

github github-actions

5
推荐指数
2
解决办法
282
查看次数

如何在 Windows Server 上的 GitHub 操作中设置环境变量?

首先让我解释一下我想要做什么。我确实编写了 ac# .net 应用程序,如果标签被推送到主分支,我想构建它。这个构建应该创建一个名为 like 的版本Release {Tag}。该版本应该获得由 Windows Server 构建的所有工件。现在我只有在没有东西的情况下才能获得标签。

我确实在这里找到了一个关于如何设置环境变量的问题,但这似乎只适用于这样的 linux。我确实尝试在官方文档中查找信息,但没有使其进入工作状态。目前我正在使用以下代码尝试从提交中获取标签。

name: Live build

on: [push]
  #push:
  #  tags:
  #   - '*'

jobs:
   build:
     name: Create build artifact
     runs-on: windows-latest
     steps:
       - name: Clone repository
         uses: actions/checkout@v2
         with: 
           ref: develop
       - name: Get current tag
         run: echo '::set-env name=tag::${(("${env:GITHUB_REF}" -split "/")[-1] -replace " ","")}'
       - name: Show current tag
         run: echo "${env.tag}"
Run Code Online (Sandbox Code Playgroud)

不幸的是,这是结果,在我看来并不正确

1

我确实尝试echo '::set-env name=tag::${(("${env:GITHUB_REF}" -split "/")[-1] -replace " ","")}'用以下测试替换这部分调用 …

github-actions

3
推荐指数
1
解决办法
1422
查看次数