标签: github-actions

在 github actions 中使用特定的 docker 版本

我想使用 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 github 操作的输出

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)

docker sbt-native-packager github-actions

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

PR 检查中未显示 issues_comment 的 GitHub 操作

我在: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)

github github-actions

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

为什么 eslint 在 Github Actions 上失败但在本地可以工作?

我有一个看起来像这样的工作流程

\n\n
name: 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\n
Run Code Online (Sandbox Code Playgroud)\n\n

由于某种原因,lint 阶段失败并产生以下错误

\n\n
name: 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\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我npm run lint在本地运行时,它成功通过了。

\n\n

我尝试过跑步npm ci,然后npm run lint它仍然过去了

\n

continuous-integration typescript eslint react-native github-actions

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

在 GitHub Action 中,如何覆盖服务的入口点?

我需要在 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: …

docker github-actions

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

如何从 bash 脚本在 GitHub 操作上创建输出?

我有一个 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

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

如何在不使用密钥的情况下将 GitHub 操作与 AWS 部署连接起来?

我希望能够使用 GitHub Actions 来通过 AWS 部署资源,但无需使用硬编码用户。

我知道可以创建一个具有固定凭证的 IAM 用户,并且可以将其导出到 GitHub Secrets,但这意味着如果密钥泄露,我就会遇到很大的问题,而且如果忘记了,轮换此类密钥将非常困难。

有什么方法可以启用无密码身份验证流程以将代码部署到 AWS?

amazon-web-services terraform terraform-provider-aws github-actions

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

GitHub Actions 单个存储库中的多个操作

我在 Github 存储库中有一个应用程序代码,我想自定义管道的某些阶段,并希望编写自己的自定义操作(在私有存储库中),因为这些自定义操作必须放置在操作所在的存储库中要运行我可以在单个存储库中保存多个操作吗?

还有什么方法可以在组织内的私人回购中使用这些回购?

github github-actions

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

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但实际值​​是“”。是不是少了点什么?

environment github-actions

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

将动态 Github 工作流矩阵与输入值和预定义值相结合

我有一个工作 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)

github github-actions

8
推荐指数
2
解决办法
6350
查看次数

github actions 在工作流程之间共享值

我在 gihub 的同一个项目中有两个工作流程。第一个工作流程在 docker hub 上创建并发布 docker 镜像,并且自动推送。第二个手动工作流程应拉取工作流程 1 中发布的 docker 映像并将其部署在集群上。作为第一个工作流程的一部分,我需要从工作流程 1 到工作流程 2 共享 docker 镜像标签。我该怎么做。我检查了环境变量,但从我所看到的情况来看,它已本地化到工作流程,并且您无法在工作流程之间共享它。

github-actions

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