scp-action/README.md

145 lines
3.2 KiB
Markdown
Raw Permalink Normal View History

2019-05-11 17:01:31 +08:00
# πŸš€ SCP for GitHub Actions
2019-09-30 11:38:02 +08:00
[GitHub Action](https://github.com/features/actions) for copying files and artifacts via SSH.
2019-05-11 17:01:31 +08:00
2019-09-28 12:13:03 +08:00
![ssh key](./images/copy-multiple-file.png)
2019-05-11 17:01:31 +08:00
2019-09-28 12:17:08 +08:00
[![Actions Status](https://github.com/appleboy/scp-action/workflows/scp%20files/badge.svg)](https://github.com/appleboy/scp-action/actions)
2019-05-11 17:01:31 +08:00
## Usage
copy files and artifacts via SSH as blow.
2019-09-28 12:13:03 +08:00
```yaml
2019-09-29 14:16:22 +08:00
name: scp files
on: [push]
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: copy file via ssh password
uses: appleboy/scp-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
source: "tests/a.txt,tests/b.txt"
target: "test"
2019-05-11 17:01:31 +08:00
```
2019-09-28 12:16:21 +08:00
## Input variables
2019-05-11 19:49:38 +08:00
2019-09-28 12:16:21 +08:00
see the [action.yml](./action.yml) file for more detail imformation.
* host - scp remote host
* port - scp remote port
* username - scp username
* password - scp password
2019-09-29 01:45:56 +08:00
* timeout - timeout for ssh to remote host, default is `30s`
* command_timeout - timeout for scp command, default is `1m`
2019-09-28 12:16:21 +08:00
* key - content of ssh private key. ex raw content of ~/.ssh/id_rsa
* key_path - path of ssh private key
* target - target path on the server
* source - scp file list
* rm - remove target folder before upload data
2019-09-28 12:26:40 +08:00
* strip_components - remove the specified number of leading path elements.
* overwrite - use `--overwrite` flag with tar
* tar_tmp_path - temporary path for tar file on the dest host
2019-05-11 19:49:38 +08:00
2019-05-11 17:01:31 +08:00
### Example
2019-05-11 19:49:38 +08:00
Copy file via ssh password
2019-09-28 12:13:03 +08:00
```yaml
- name: copy file via ssh password
uses: appleboy/scp-action@master
with:
host: example.com
username: foo
password: bar
port: 22
source: "tests/a.txt,tests/b.txt"
target: "test"
2019-05-11 17:01:31 +08:00
```
2019-05-11 19:49:38 +08:00
Copy file via ssh key
2019-09-28 12:13:03 +08:00
```yaml
- name: copy file via ssh key
uses: appleboy/scp-action@master
env:
HOST: ${{ secrets.HOST }}
USERNAME: ${{ secrets.USERNAME }}
PORT: ${{ secrets.PORT }}
KEY: ${{ secrets.KEY }}
with:
source: "tests/a.txt,tests/b.txt"
target: "test"
2019-05-11 19:49:38 +08:00
```
Example configuration for ignore list:
2019-09-28 12:13:03 +08:00
```yaml
- name: copy file via ssh key
uses: appleboy/scp-action@master
env:
HOST: ${{ secrets.HOST }}
USERNAME: ${{ secrets.USERNAME }}
PORT: ${{ secrets.PORT }}
KEY: ${{ secrets.KEY }}
with:
source: "tests/*.txt,!tests/a.txt"
target: "test"
2019-05-11 19:49:38 +08:00
```
2019-05-12 10:25:37 +08:00
Example configuration for multiple server
```diff
2019-09-28 12:13:03 +08:00
- name: copy file via ssh password
uses: appleboy/scp-action@master
with:
- host: "example.com"
+ host: "foo.com,bar.com"
username: foo
password: bar
port: 22
source: "tests/a.txt,tests/b.txt"
target: "test"
2019-05-12 10:25:37 +08:00
```
2019-09-28 12:26:40 +08:00
remove the specified number of leading path elements
```yaml
- name: remove the specified number of leading path elements
uses: appleboy/scp-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
port: ${{ secrets.PORT }}
source: "tests/a.txt,tests/b.txt"
target: "foobar"
strip_components: 1
```
old target structure:
```sh
foobar
└── tests
β”œβ”€β”€ a.txt
└── b.txt
```
new target structure:
```sh
foobar
β”œβ”€β”€ a.txt
└── b.txt
```