出于(主要)教学原因,我正在尝试在 GitHub 操作中运行此工作流程:
name: "We Perl"
on:
issues:
types: [opened, edited, milestoned]
jobs:
seasonal_greetings:
runs-on: windows-latest
steps:
- name: Maybe greet
id: maybe-greet
env:
HEY: "Hey you!"
GREETING: "Merry Xmas to you too!"
BODY: ${{ github.event.issue.body }}
run: |
$output=(perl -e 'print ($ENV{BODY} =~ /Merry/)?$ENV{GREETING}:$ENV{HEY};')
Write-Output "::set-output name=GREET::$output"
produce_comment:
name: Respond to issue
runs-on: ubuntu-latest
steps:
- name: Dump job context
env:
JOB_CONTEXT: ${{ jobs.maybe-greet.steps.id }}
run: echo "$JOB_CONTEXT"
Run Code Online (Sandbox Code Playgroud)
我需要两个不同的作业,因为它们使用不同的上下文(操作系统),但是我需要将第一个作业中的步骤输出到第二个作业。我正在尝试使用此处jobs找到的几种上下文组合,但似乎没有任何方法可以做到这一点。显然,只是一个 YAML 变量的名称,它实际上没有上下文,上下文只包含成功或失败。任何的想法?jobsjob
我发现了一个非常好的 GitHub Actions 功能,名为“环境”。使用适当的语法,也可以在 GitHub Action 中创建环境,workflow.yml如下所示:
environment:
name: test_environment
url: https://your-apps-url-here.com
Run Code Online (Sandbox Code Playgroud)
正如文档所述,这是创建 GitHub 操作环境的有效方法:
运行引用不存在的环境的工作流将创建具有引用名称的环境。
但在我当前的 GitHub Action 工作流程中,有没有一种方法可以url根据部署步骤输出动态设置?我有一个由 AWS 部署过程产生的动态 URL,我无法预先定义它。
我想在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 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 操作,所以我想做的是在推送完成后在 firebase 中托管我的 React 项目。我在这个 CI/CD 过程中使用了 GitHub 操作。这是我现在拥有的 main.yml。
name: Build and Deploy
on:
push:
branches:
- master
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@master
- name: Install Dependencies
working-directory: ./my-app
run: npm install
- name: Build
working-directory: ./my-app
run: npm run build
deploy:
name: Deploy
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@master
- name: Deploy to Firebase
uses: w9jds/firebase-action@master
with:
args: deploy --only hosting
env:
FIREBASE_TOKEN: …Run Code Online (Sandbox Code Playgroud) 在GitHub Actions中,我想评估bash表达式,然后将其分配给环境变量-
- name: Tag image
env:
GITHUB_SHA_SHORT: ${{ $(echo $GITHUB_SHA | cut -c 1-6) }}
..do other things...
Run Code Online (Sandbox Code Playgroud)
但是,这种幼稚的尝试失败了。根据文档,这似乎不受支持,但是稍微干净的解决方法就可以了。
我在 docker 上使用这个:
- name: Build container image
uses: actions/docker/cli@master
with:
///// removed
- name: Docker Login
uses: actions/docker/login@master
env:
///// removed
Run Code Online (Sandbox Code Playgroud)
然而 github.com/actions/docker 似乎不再存在。
我的构建给出了 404:
无法下载操作“ https://api.github.com/repos/actions/docker/tarball/master ”。错误响应状态代码不表示成功:404(未找到)。
有谁知道新地点吗?