感谢github docs ,我已经存储了多行环境变量。
- name: copy
run: |
echo 'CONTENT_ENV<<EOF' >> $GITHUB_ENV
cat README.md >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
Run Code Online (Sandbox Code Playgroud)
我想得到它,但是这段代码给出了一行:
- name: paste
run: echo $CONTENT_ENV > index.md
Run Code Online (Sandbox Code Playgroud)
工作流程显示变量正确存储在 env 中(带空格):
我想在 github 操作的 docker 构建中设置 gcloud sdk。因此我需要将 service-account.json 传递给 dockerfile。
我知道我可以将构建参数传递给 dockerfile,当然我可以在这里传递 Github 秘密。但现在我听说了 Docker 秘密,它阻止了在 docker 日志中读取秘密。真的必须为秘密提供一条道路吗?我不想将秘密保存在存储库中,我更愿意使用 github 秘密。
那么,有什么想法可以将 gh 操作中的 github 秘密传递给 dockerfile 进行构建的最佳和最安全的方法吗?
我有自己的 php 图像,我想将其用于我的项目来运行测试。
container: rela589n/doctrine-event-sourcing-php:latest
services:
test_db:
image: postgres:13-alpine
env:
POSTGRES_DB: des
POSTGRES_USER: des_user
POSTGRES_PASSWORD: p@$$w0rd
steps:
- uses: actions/checkout@v2
- whatever_needed_to_run_tests_inside_container
Run Code Online (Sandbox Code Playgroud)
结帐操作失败并出现以下错误:
EACCES: permission denied, open '/__w/doctrine-event-sourcing/doctrine-event-sourcing/6977c4d4-3881-44e9-804e-ae086752556e.tar.gz'
Run Code Online (Sandbox Code Playgroud)
这是合乎逻辑的,因为在新的 docker 容器中没有这样的文件夹结构。我想做的是在提供的虚拟机内运行结帐操作runs-on: ubuntu-20.04并为 docker 配置卷,以便它可以访问代码。但是我不知道这样做不是一个好的做法,也不知道如何实施。我想即使可以这样做,它也不适用于其他操作。
docker/build-push-action创建发布标签时,我的 GitHub 操作中会运行以下作业。
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
-
name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
push: true
tags: user/repo:latest
-
name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}
Run Code Online (Sandbox Code Playgroud)
在我的工作中Dockerfile,我有一项任务,需要完成.env.production并完成它.env。
COPY .env.production .env
Run Code Online (Sandbox Code Playgroud)
这显然失败了,因为 .env.Production 不包含在 Git 中。
我的问题是,如何在我的 GitHub …
environment-variables docker dockerhub dotenv github-actions
对于我第一次尝试 Github Actions,我需要基于 git 标签(例如 )来触发1.2.3-RELEASE,这似乎是很常见的事情。我可以找到这样的例子:
on:
push:
tags:
- v1 # Push events to v1 tag
- v1.* # Push events to v1.0, v1.1, and v1.9 tags
Run Code Online (Sandbox Code Playgroud)
所以我创建了这样的 yaml 文件:
on:
push:
tags:
- '[1-9]+.[0-9]+.[0-9]+\-RELEASE'
Run Code Online (Sandbox Code Playgroud)
但它永远不会着火。我使用在线工具验证了正则表达式,并尝试使用v1.1第一个示例设置的标签,无论带或不带引号都可以。我的表达需要引号,这很好,但不起作用。有人知道我在这里做错了什么吗?
我们有有关部署的通知,这些通知会发送到公司聊天室。当用户在本地运行代码时,会有一些信息来识别“谁运行代码”($USER、$HOSTNAME 等)。
当从 CI 触发相同的代码时,我想了解有关此工作流程的“原因是谁”的信息。可能是用户点击`workflow_dispatch'的github账户名,也可能是git中commit的author,也可能是author或PR等。
Github Actions 中的工作流程是否有此类信息?
有没有办法将参数放入 GitHub 操作定义中,以便当您将其推送到 GitHub 时该操作不会运行?
\n我有一个包模板,我想包含某些操作,但我不希望模板的用户必须执行某些操作才能运行这些操作(不会自动运行 \xe2\x80\x93 并失败 \xe2\当他们推送到 GitHub 时为 x80\x93)
\n我希望有一个配置字段run_automatically: false或类似的东西。
我最近转向了 GitHub Action。尝试了几天,但可以找到合适的解决方案。
JOB1我正在构建Image A并使用Image A作为基础图像来构建Image B.Image B将充当Image C在 JOB2 和Image DJob3 中构建的基础映像。我已经尝试过这两种解决方案,但它们不起作用。
尝试上述解决方案时遇到的一些错误:
Error: buildx failed with: error: failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
Run Code Online (Sandbox Code Playgroud) 假设我有一个在每个要掌握的 PR 上运行的工作流程,其开头为:
on:
pull_request:
branches:
- master
Run Code Online (Sandbox Code Playgroud)
如果 PR 来自分支机构,我想跳过所有工作depbot。就像是:
on:
pull_request:
branches:
- master
head_ref-ignore:
- depbot
Run Code Online (Sandbox Code Playgroud)
我认为您可以使用跳过所有步骤(一次一个)
if: startsWith(github.head_ref, 'depbot') == false
Run Code Online (Sandbox Code Playgroud)
但这不是我想要的,因为它仍然会启动这项工作。我怎样才能在启动阶段实现这一目标?
我的项目使用 Terraform 来设置 CI/CD 的基础设施和 Github Actions。运行后,terraform apply我想将 Terraform 输出变量的值保存为 Github Action 环境变量,以供工作流程稍后使用。
根据 Github Action 的文档,这是使用工作流命令创建或更新环境变量的方法。
这是我简化的 Github Action 工作流程:
name: Setup infrastructure
jobs:
run-terraform:
name: Apply infrastructure changes
runs-on: ubuntu-latest
steps:
...
- run: terraform output vm_ip
- run: echo TEST=$(terraform output vm_ip) >> $GITHUB_ENV
- run: echo ${{ env.TEST }}
Run Code Online (Sandbox Code Playgroud)
当本地运行时,命令echo TEST_VAR=$(terraform output vm_ip)输出准确TEST="192.168.23.23",但从 Github Action CLI 输出中我得到一些非常奇怪的东西:
我尝试过使用单引号、双引号。在某些时候我改变了策略并尝试使用jq. 因此,我添加了以下步骤,以便将所有 Terraform 输出导出到 json 文件并使用以下命令解析它jq:
- …Run Code Online (Sandbox Code Playgroud) continuous-integration json environment-variables terraform github-actions
github-actions ×10
docker ×3
github ×3
containers ×1
dockerhub ×1
dotenv ×1
json ×1
php ×1
pull-request ×1
tags ×1
terraform ×1
variables ×1