Navigation Menu

Skip to content
This repository has been archived by the owner on May 30, 2022. It is now read-only.

henry40408/concourse-ssh-resource

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Concourse SSH Resource

CircleCI codecov goreportcard Docker Repository on Quay GitHub release license stability-stable

SSH resource for Concourse CI

Source Configuration

  • host: host name of remote machine
  • port: port of SSH server on remote machine, 22 by default
  • user: user for executing shell script on remote machine
  • password: plain password for user on remote machine
  • private_key: private SSH key for user on remote machine

Caveats

According to appleboy/easyssh-proxy, if password and private_key both exists, password would be used first, then private_key.

Behavior

This is a put-only resource, check and in does nothing.

out: Run commands via SSH

Execute shell script on remote machine via SSH.

Parameters

  • interpreter: string, path to interpreter on remote machine, e.g. /usr/bin/python3, /bin/sh by default
  • script: string, shell script to run on remote machine
  • placeholders: Map of name and either value for a static value, or file for a dynamic value read from a file. Every string matches name in your script defintion will then be replaced by either the value or the content of file. If file is used, only the first line of file content would be used. Example:
---
- put: myserver
  params:
    interpreter: /bin/sh
    script: |
      echo "<MyPlaceHolder>"
      echo "|dynamicPlaceHolder|"
    placeholders:
      - name: "<MyPlaceHolder>"
        value: "somevalue"
      - name: "|dynamicPlaceHolder|"
        file: "myresource/somefile"

Examples

---
resource_types:
- name: ssh
  type: docker-image
  source:
    repository: quay.io/henry40408/concourse-ssh-resource

resources:
- name: staging-server
  type: ssh
  source:
    host: 127.0.0.1
    user: root
    password: ((ssh_password))

jobs:
- name: echo
  plan:
  # Basic usage
  - put: staging-server
    params:
      interpreter: /usr/bin/env python3
      script: |
        print("Hello, world!")
  # Placeholder usage
  - put: staging-server
    params:
      interpreter: /bin/sh
      script: |
        echo "<static_value>"
        echo "|dynamic_value|"
      placeholders:
        - name: "<static_value>"
          value: "foo"
        - name: "|dynamic_value|"
          file: "bar"

How to Test

We need to start a simple SSH server first. I assume there is no SSH server currently running on your laptop or workstation. For more information about the SSH server, please checkout henry40408/alpine-ssh.

  1. docker run -d -p 22:22 quay.io/henry40408/alpine-ssh
  2. make test

Contributors

sorted in alphabetical order

License

MIT