0

背景:我目前在我的macos上安装了jenkins,我用它定期触发shell脚本。Shell 脚本在我的 mac 中,jenkins 所做的就是调用 shell 脚本。现在我正试图搬到 Concourse 并对 Concourse 做同样的事情(即定期调用我的 mac 中的 shell 脚本)。我对 Docker、Concourse 非常陌生,但仍在尝试以更好的方式理解和做事

因为大厅里的一切都是基于容器的。我正在尝试从容器 ssh 到 mac 并在我的 mac 上执行 shell 脚本。我正在尝试使用 ssh-keygen 并从容器连接到 mac。我写了一个 bash 脚本来从容器连接到 mac,但它不起作用

连接.sh

#!/usr/bin/env bash

ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
ssh-copy-id raenug451@192.168.0.14

管道.yaml 文件

---
resources:
  - name: repo
    type: git
    source:
      uri: https://github.com/raamojirao/reports.git
      branch: master

jobs:
  - name: some-name
    public: true
    plan:
      - get: repo
      - task: some-task
        config:
          platform: linux
          image_resource:
            type: docker-image
            source: {repository: ubuntu}

          inputs:
            - name: repo

          run:
            path: repo/connect.sh

我收到以下错误消息 repo/connect.sh: line 3: ssh-keygen: command not found repo/connect.sh: line 4: ssh-copy-id: command not found

我使用的 docker-image 是 ubuntu。在 ubuntu 中找不到 ssh-keygen 吗?如果我必须使用 ssh-keygen 创建自定义图像,我如何将该图像传递给 pipeline.yml 文件。请帮忙!我知道我问了太多问题。我是 Docker 新手并试图理解,因此非常感谢任何帮助。

4

1 回答 1

0

为什么需要从容器运行脚本到主机?不推荐,但您可以尝试以下方法。

在 Jenkins 服务器上创建 dockerfile 并构建它,对其进行标记,ubuntu:latest以便它将使用新创建的 Jenkins 而不是旧的,或者在OpenSSH-client.

FROM ubuntu:latest

RUN apt-get -y install openssh-client

然后

docker build -t ubuntu:latest

然后运行你想要的工作。

如何将该图像传递给 pipeline.yml 文件

ubuntu如果您在构建时使用不同的图像名称,只需将图像名称从更改为您的图像。

于 2019-09-13T03:43:45.357 回答