我想在我的 Github 操作工作流中的作业之间定义和设置环境变量。下面的工作流程是我尝试过的,但不幸的是环境变量GIT_PR_SHA_SHORT和E2E_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) 我想在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) 我想读取一个 JSON 文件并在 Github Actions YAML 文件中的字符串中使用一个属性。我该怎么做呢?(我想要的版本package.json)
目标:
在 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)
如何让它发挥作用?
我正在尝试在新的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:'来运行一些命令。
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) 首先让我解释一下我想要做什么。我确实编写了 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)
不幸的是,这是结果,在我看来并不正确

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