我想使用 github actions 来测试sbt-native-packager docker 集成,它从 Dockerfile 构建 docker 镜像。
问题是 github actions 似乎使用旧的或自定义的 docker 版本。3.0.8被检测为版本。查看失败的集成测试运行,其中指出
[1]检测到的Docker版本DockerVersion(3,0,8,None)与DockerPermissionStrategy.MultiStage不兼容
我想使用最新的 docker 版本 19.x,它允许我们测试所有功能。理想情况下,我能够为不同的测试场景设置不同的 docker 版本,但如果有的话那就太好了。
更新
docker version
Client:
Version: 3.0.8
API version: 1.40
Go version: go1.12.10
Git commit: 2355349d
Built: Wed Oct 23 17:47:59 2019
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 3.0.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.10
Git commit: adfac69
Built: Wed Oct 23 17:54:47 2019 …Run Code Online (Sandbox Code Playgroud) 我在:issue_comment 上创建了一个 GitHub 操作,我可以看到该流程仅在操作选项卡中运行,但在我发表评论的 PR 中却看不到。我想在 PR 中发表评论并触发对该 PR 的检查(而不是在 master 上)
这是我的工作流程:
name: issue-comment-CI-test
on:
issue_comment:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Run a one-line script
run: echo Hello, world!
- name: Run a multi-line script
run: echo ${{ github.event.comment.body }}
Run Code Online (Sandbox Code Playgroud)
目前,我只是打印评论正文,但我计划检查正文,如果它等于“运行集成测试”,那么我将运行我的集成测试(maven)
我有一个看起来像这样的工作流程
\n\nname: Node CI\n\non: [push]\n\njobs:\n build:\n\n runs-on: ubuntu-18.04\n\n steps:\n - uses: actions/checkout@v1\n - uses: actions/setup-node@v1\n with:\n node-version: \'12.x\'\n - run: npm install\n - run: npm run lint\nRun Code Online (Sandbox Code Playgroud)\n\n由于某种原因,lint 阶段失败并产生以下错误
\n\nname: Node CI\n\non: [push]\n\njobs:\n build:\n\n runs-on: ubuntu-18.04\n\n steps:\n - uses: actions/checkout@v1\n - uses: actions/setup-node@v1\n with:\n node-version: \'12.x\'\n - run: npm install\n - run: npm run lint\nRun Code Online (Sandbox Code Playgroud)\n\n当我npm run lint在本地运行时,它成功通过了。
我尝试过跑步npm ci,然后npm run lint它仍然过去了
continuous-integration typescript eslint react-native github-actions
我需要在 GitHub 操作中定义一个服务,并通过向其添加参数来覆盖其入口点。我怎样才能做到这一点?
这是我正在尝试翻译的一个可以运行的 docker-compose。
version: '2'
services:
config:
build: .
links:
- etcd
etcd:
image: microbox/etcd:2.1.1
entrypoint: "etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379"
hostname: etcd
container_name: build_etcd
expose:
- 2379
Run Code Online (Sandbox Code Playgroud)
这是我的操作以及我最初认为它是如何工作的......
name: Node CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x]
services:
etcd:
image: microbox/etcd:2.1.1
options: --entrypoint 'etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379'
steps:
...
Run Code Online (Sandbox Code Playgroud)
然而,在初始化容器时,它会崩溃,因为它运行的命令不正确......
/usr/bin/docker create --name 1062a703242743a29bbcfda9fc19c823_microboxetcd211_3767cc --label 488dfb --network github_network_244f1c7676b8488e99c66694d06a21f2 --network-alias etcd --entrypoint 'etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379' -e GITHUB_ACTIONS=true microbox/etcd:2.1.1
Run Code Online (Sandbox Code Playgroud)
错误是unknown flag: …
我有一个 GitHub 操作,本质上是一个 bash 脚本。我的操作的 javascript 部分执行 bash 脚本:
const core = require("@actions/core");
const exec = require("@actions/exec");
async function run() {
try {
// Execute bash script
await exec.exec(`${__dirname}/my-action-script.sh`);
} catch (error) {
core.setFailed(error.message);
}
}
run();
Run Code Online (Sandbox Code Playgroud)
目前,此操作将通过在文件系统上保留文件来与其他操作进行通信。这是一种“隐形”的沟通方式,我想用action.yml输出来填充我的沟通方式。如何能够my-action-script.sh返回 my 中定义的输出action.yml?
我希望能够使用 GitHub Actions 来通过 AWS 部署资源,但无需使用硬编码用户。
我知道可以创建一个具有固定凭证的 IAM 用户,并且可以将其导出到 GitHub Secrets,但这意味着如果密钥泄露,我就会遇到很大的问题,而且如果忘记了,轮换此类密钥将非常困难。
有什么方法可以启用无密码身份验证流程以将代码部署到 AWS?
amazon-web-services terraform terraform-provider-aws github-actions
我在 Github 存储库中有一个应用程序代码,我想自定义管道的某些阶段,并希望编写自己的自定义操作(在私有存储库中),因为这些自定义操作必须放置在操作所在的存储库中要运行我可以在单个存储库中保存多个操作吗?
还有什么方法可以在组织内的私人回购中使用这些回购?
以下是我的简单 github 工作流程。它的目的是打印环境变量。
name: verify
on:
workflow_dispatch:
jobs:
read_env_variables:
environment: build
runs-on: [ self-hosted, onprem_dae, docker ]
steps:
- name: cat on branch file
run: |
echo ${{ env.SOME_VARIABLE }}
Run Code Online (Sandbox Code Playgroud)
我创建了一个名为“build”的环境。在此环境中,我有一个名为SOME_VARIABLE设置为xyz 的环境变量。
当工作流程被触发时,我期望回显值xyz但实际值是“”。是不是少了点什么?
我有一个工作 GitHub 工作流程,它使用矩阵并构建所有定义的产品。
name: Build
on:
push:
tags:
- "*"
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
product: [yellow, green, black]
limits: [10,20,50,100]
steps:
- uses: actions/checkout@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
...
Run Code Online (Sandbox Code Playgroud)
现在希望能够手动触发构建过程并使用输入值仅构建我想要的产品。我可以在 Github 界面上输入值,但看起来使用它们的语法不正确。
构建:.github#L1 评估作业“构建”的“策略”时出错。.github/workflows/build.yml(行:27,列:18):意外值“黄色”,.github/workflows/build.yml(行:28,列:17):意外值“50”
此外,如何将所有预定义产品的先前自动构建与通过一个工作流程内的输入手动完成的产品结合起来?
name: Build
on:
push:
tags:
- "*"
workflow_dispatch:
inputs:
product:
description: "Product"
default: "yellow"
limit:
description: "Limit"
default: "50"
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
product: ${{ github.event.inputs.product}}
limits: ${{ github.event.inputs.limit }}
# product: [yellow, green, black]
# limits: [10,20,50,100]
steps: …Run Code Online (Sandbox Code Playgroud) 我在 gihub 的同一个项目中有两个工作流程。第一个工作流程在 docker hub 上创建并发布 docker 镜像,并且自动推送。第二个手动工作流程应拉取工作流程 1 中发布的 docker 映像并将其部署在集群上。作为第一个工作流程的一部分,我需要从工作流程 1 到工作流程 2 共享 docker 镜像标签。我该怎么做。我检查了环境变量,但从我所看到的情况来看,它已本地化到工作流程,并且您无法在工作流程之间共享它。
github-actions ×10
github ×3
docker ×2
environment ×1
eslint ×1
react-native ×1
terraform ×1
typescript ×1