15 Commits
v0.1.6 ... docs

Author SHA1 Message Date
appleboy
4241e60706 docs: improve documentation and testing configurations
Some checks failed
scp files / test scp action (push) Failing after 22s
scp files / test deploy artifact (push) Failing after 47s
scp files / test changed-files (push) Failing after 1m11s
scp files / test target folder (push) Failing after 3s
scp files / test Multiple Host (push) Failing after 3s
- Add example for using environment variables with `scp-action` in README.md

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2024-12-24 22:06:36 +08:00
appleboy
b03d7257ae style: improve readability and functionality across multiple components
- Remove an empty line in the jobs section
- Reformat the list of SCP options for better readability
- Reformat the list of SSH proxy settings for better readability
- Reformat the instructions for SSH login without a password for better readability

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2024-12-24 22:05:54 +08:00
appleboy
f042d742db ci(github): improve system performance and stability
- Downgrade `tj-actions/changed-files` action from version `v46` to `v45`

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2024-10-29 21:22:29 +08:00
appleboy
ad9a378b7f docs(readme): enhance IP protocol configuration options
- Add protocol option description for IP protocol usage in the main configuration
- Add proxy_protocol option description for IP protocol usage in the SSH Proxy Setting

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2024-10-28 22:38:25 +08:00
appleboy
172d4632fe feat(actions): improve API robustness and testing coverage
- Add `protocol` input with description and default value `tcp`

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2024-10-28 22:33:53 +08:00
appleboy
93e17a47f9 refactor(actions): standardize configuration file formatting and defaults
- Change single quotes to double quotes for consistency in `name`, `description`, and `author` fields
- Update `port` and `proxy_port` default values to be strings instead of numbers
- Remove default values for `use_insecure_cipher`, `rm`, `debug`, `strip_components`, `overwrite`, and `tar_dereference` fields
- Add default value `"tar"` for `tar_exec` field

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2024-10-28 22:28:31 +08:00
appleboy
c6ff96b7f6 ci: implement automated release workflow with GoReleaser
- Add GitHub Actions workflow for GoReleaser
- Configure GoReleaser to skip builds
- Set up changelog groups for features, bug fixes, enhancements, refactors, build process updates, and documentation updates

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2024-10-07 22:41:36 +08:00
Bo-Yi Wu
7622c01418 chore: update tj-actions/changed-files action version
- Update the version of the `tj-actions/changed-files` action from `v44` to `v46`

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2024-08-27 21:02:52 +08:00
dependabot[bot]
9ba62064d2 chore(deps): bump tj-actions/changed-files from 43 to 44 (#171)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 43 to 44.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v43...v44)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-06 08:11:24 +08:00
dependabot[bot]
f314a5399e chore(deps): bump tj-actions/changed-files from 42 to 43 (#170)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 42 to 43.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v42...v43)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-19 09:42:58 +08:00
dependabot[bot]
699fa1181c chore(deps): bump tj-actions/changed-files from 41 to 42 (#165)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 41 to 42.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v41...v42)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-27 11:08:08 +08:00
Ilya Brin
9f34cc3e55 docs(readme): update dependency in example (#159)
Bumped GitHub Actions in README
2024-01-01 13:46:55 +08:00
Bo-Yi Wu
917f8b81df chore: update dependencies and improve compatibility with latest versions
Some checks failed
scp files / test scp action (push) Has been cancelled
scp files / test deploy artifact (push) Has been cancelled
scp files / test changed-files (push) Has been cancelled
scp files / test target folder (push) Has been cancelled
scp files / test Multiple Host (push) Has been cancelled
- Update the version of `appleboy/scp-action` from `v0.1.6` to `v0.1.7`

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2024-01-01 13:45:26 +08:00
Bo-Yi Wu
78e7f475f3 chore: update base image in Dockerfile to version 1.6.14
- Update the base image from `1.6.13` to `1.6.14` in the Dockerfile

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2024-01-01 13:44:54 +08:00
Bo-Yi Wu
dfde1f50eb chore: refine CI/CD workflows and tests configuration
- Update `appleboy/scp-action` version from `v0.1.5` to `v0.1.6` in README examples

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2023-12-26 14:48:33 +08:00
6 changed files with 186 additions and 114 deletions

View File

@@ -100,7 +100,7 @@ jobs:
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v41
uses: tj-actions/changed-files@v45
with:
since_last_remote_commit: true
separator: ","

33
.github/workflows/goreleaser.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
name: Goreleaser
on:
push:
tags:
- "*"
permissions:
contents: write
jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup go
uses: actions/setup-go@v5
with:
go-version: "^1"
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v6
with:
# either 'goreleaser' (default) or 'goreleaser-pro'
distribution: goreleaser
version: latest
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

28
.goreleaser.yaml Normal file
View File

@@ -0,0 +1,28 @@
builds:
- # If true, skip the build.
# Useful for library projects.
# Default is false
skip: true
changelog:
use: github
groups:
- title: Features
regexp: "^.*feat[(\\w)]*:+.*$"
order: 0
- title: "Bug fixes"
regexp: "^.*fix[(\\w)]*:+.*$"
order: 1
- title: "Enhancements"
regexp: "^.*chore[(\\w)]*:+.*$"
order: 2
- title: "Refactor"
regexp: "^.*refactor[(\\w)]*:+.*$"
order: 3
- title: "Build process updates"
regexp: ^.*?(build|ci)(\(.+\))??!?:.+$
order: 4
- title: "Documentation updates"
regexp: ^.*?docs?(\(.+\))??!?:.+$
order: 4
- title: Others

View File

@@ -1,4 +1,4 @@
FROM ghcr.io/appleboy/drone-scp:1.6.13
FROM ghcr.io/appleboy/drone-scp:1.6.14
COPY entrypoint.sh /bin/entrypoint.sh

145
README.md
View File

@@ -14,59 +14,60 @@ Copy files and artifacts via SSH:
name: scp files
on: [push]
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: copy file via ssh password
uses: appleboy/scp-action@v0.1.5
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
source: "tests/a.txt,tests/b.txt"
target: your_server_target_folder_path
- uses: actions/checkout@v4
- name: copy file via ssh password
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
source: "tests/a.txt,tests/b.txt"
target: your_server_target_folder_path
```
## Input variables
See the [action.yml](./action.yml) file for more detail information.
* host - scp remote host
* port - scp remote port, default is `22`
* username - scp username
* password - scp password
* passphrase - the passphrase is usually to encrypt the private key
* fingerprint - fingerprint SHA256 of the host public key, default is to skip verification
* timeout - timeout for ssh to remote host, default is `30s`
* command_timeout - timeout for scp command, default is `10m`
* 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, must be a directory (**required**)
* source - scp file list (**required**)
* rm - remove target folder before upload data, default is `false`
* strip_components - remove the specified number of leading path elements.
* overwrite - use `--overwrite` flag with tar, overwrite existing files when extracting
* tar_tmp_path - temporary path for tar file on the dest host
* tar_exec - path to tar executable on the dest host. default is `tar`
* tar_dereference - use `--dereference` flag with tar, follow symlinks; archive and dump the files they point to
* use_insecure_cipher - include more ciphers with use_insecure_cipher (see [#15](https://github.com/appleboy/scp-action/issues/15))
- host - scp remote host
- port - scp remote port, default is `22`
- username - scp username
- password - scp password
- passphrase - the passphrase is usually to encrypt the private key
- protocol - The IP protocol to use. Valid values are `tcp`. `tcp4` or `tcp6`. Default to `tcp`.
- fingerprint - fingerprint SHA256 of the host public key, default is to skip verification
- timeout - timeout for ssh to remote host, default is `30s`
- command_timeout - timeout for scp command, default is `10m`
- 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, must be a directory (**required**)
- source - scp file list (**required**)
- rm - remove target folder before upload data, default is `false`
- strip_components - remove the specified number of leading path elements.
- overwrite - use `--overwrite` flag with tar, overwrite existing files when extracting
- tar_tmp_path - temporary path for tar file on the dest host
- tar_exec - path to tar executable on the dest host. default is `tar`
- tar_dereference - use `--dereference` flag with tar, follow symlinks; archive and dump the files they point to
- use_insecure_cipher - include more ciphers with use_insecure_cipher (see [#15](https://github.com/appleboy/scp-action/issues/15))
SSH Proxy Setting:
* proxy_host - proxy host
* proxy_port - proxy port, default is `22`
* proxy_username - proxy username
* proxy_password - proxy password
* proxy_passphrase - the passphrase is usually to encrypt the private key
* proxy_timeout - timeout for ssh to proxy host, default is `30s`
* proxy_key - content of ssh proxy private key.
* proxy_key_path - path of ssh proxy private key
* proxy_fingerprint - fingerprint SHA256 of the host public key, default is to skip verification
* proxy_use_insecure_cipher - include more ciphers with use_insecure_cipher (see [#15](https://github.com/appleboy/scp-action/issues/15))
- proxy_host - proxy host
- proxy_port - proxy port, default is `22`
- proxy_username - proxy username
- proxy_password - proxy password
- proxy_protocol - The IP protocol to use. Valid values are `tcp`. `tcp4` or `tcp6`. Default to `tcp`.
- proxy_passphrase - the passphrase is usually to encrypt the private key
- proxy_timeout - timeout for ssh to proxy host, default is `30s`
- proxy_key - content of ssh proxy private key.
- proxy_key_path - path of ssh proxy private key
- proxy_fingerprint - fingerprint SHA256 of the host public key, default is to skip verification
- proxy_use_insecure_cipher - include more ciphers with use_insecure_cipher (see [#15](https://github.com/appleboy/scp-action/issues/15))
## Setting up a SSH Key
@@ -106,9 +107,9 @@ See the detail information about [SSH login without password](http://www.linuxpr
**A note** from one of our readers: Depending on your version of SSH you might also have to do the following changes:
* Put the public key in `.ssh/authorized_keys2`
* Change the permissions of `.ssh` to 700
* Change the permissions of `.ssh/authorized_keys2` to 640
- Put the public key in `.ssh/authorized_keys2`
- Change the permissions of `.ssh` to 700
- Change the permissions of `.ssh/authorized_keys2` to 640
### If you are using OpenSSH
@@ -137,7 +138,7 @@ Copy file via a SSH password:
```yaml
- name: copy file via ssh password
uses: appleboy/scp-action@v0.1.5
uses: appleboy/scp-action@v0.1.7
with:
host: example.com
username: foo
@@ -147,11 +148,25 @@ Copy file via a SSH password:
target: your_server_target_folder_path
```
Using the environment variables
```yaml
- name: copy file via ssh password
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ env.HOST }}
username: ${{ env.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ env.PORT }}
source: "tests/a.txt,tests/b.txt"
target: ${{ env.TARGET_PATH }}
```
Copy file via a SSH key:
```yaml
- name: copy file via ssh key
uses: appleboy/scp-action@v0.1.5
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
@@ -165,7 +180,7 @@ Example configuration for ignore list:
```yaml
- name: copy file via ssh key
uses: appleboy/scp-action@v0.1.5
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
@@ -178,7 +193,7 @@ Example configuration for ignore list:
Example configuration for multiple servers:
```diff
uses: appleboy/scp-action@v0.1.5
uses: appleboy/scp-action@v0.1.7
with:
- host: "example.com"
+ host: "foo.com,bar.com"
@@ -192,7 +207,7 @@ Example configuration for multiple servers:
Example configuration for exclude custom files:
```yaml
uses: appleboy/scp-action@v0.1.5
uses: appleboy/scp-action@v0.1.7
with:
host: "example.com"
username: foo
@@ -206,27 +221,27 @@ Example configuration for exclude custom files:
Upload artifact files to remote server:
```yaml
deploy:
name: deploy artifact
runs-on: ubuntu-latest
steps:
deploy:
name: deploy artifact
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- run: echo hello > world.txt
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: my-artifact
path: world.txt
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: my-artifact
path: distfiles
- name: copy file to server
uses: appleboy/scp-action@v0.1.5
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
@@ -240,7 +255,7 @@ Remove the specified number of leading path elements:
```yaml
- name: remove the specified number of leading path elements
uses: appleboy/scp-action@v0.1.5
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
@@ -271,12 +286,12 @@ foobar
Only copy files that are newer than the corresponding destination files:
```yaml
changes:
name: test changed-files
runs-on: ubuntu-latest
steps:
changes:
name: test changed-files
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Get changed files
id: changed-files
@@ -286,7 +301,7 @@ Only copy files that are newer than the corresponding destination files:
separator: ","
- name: copy file to server
uses: appleboy/scp-action@v0.1.5
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
@@ -300,7 +315,7 @@ Protecting a Private Key. The purpose of the passphrase is usually to encrypt th
```diff
- name: ssh key with passphrase
uses: appleboy/scp-action@v0.1.5
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
@@ -329,7 +344,7 @@ Convert the target path to a Unix path: `/c/path/to/target/`
```diff
- name: Copy to Windows
uses: appleboy/scp-action@v0.1.5
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}

View File

@@ -1,84 +1,80 @@
name: 'SCP Command to Transfer Files'
description: 'How to Use SCP Command to Transfer Files/Folders in Linux'
author: 'Bo-Yi Wu'
name: "SCP Command to Transfer Files"
description: "How to Use SCP Command to Transfer Files/Folders in Linux"
author: "Bo-Yi Wu"
inputs:
host:
description: 'scp remote host'
description: "scp remote host"
port:
description: 'scp remote port'
default: 22
description: "scp remote port"
default: "22"
username:
description: 'scp username'
description: "scp username"
password:
description: 'scp password'
description: "scp password"
protocol:
description: "The IP protocol to use. Valid values are 'tcp'. 'tcp4' or 'tcp6'. Default to tcp."
default: "tcp"
timeout:
description: 'timeout for ssh to remote host'
description: "timeout for ssh to remote host"
default: "30s"
command_timeout:
description: 'timeout for scp command'
description: "timeout for scp command"
default: "10m"
key:
description: 'content of ssh private key. ex raw content of ~/.ssh/id_rsa'
description: "content of ssh private key. ex raw content of ~/.ssh/id_rsa"
key_path:
description: 'path of ssh private key'
description: "path of ssh private key"
passphrase:
description: 'ssh key passphrase'
description: "ssh key passphrase"
fingerprint:
description: 'fingerprint SHA256 of the host public key, default is to skip verification'
description: "fingerprint SHA256 of the host public key, default is to skip verification"
use_insecure_cipher:
description: 'include more ciphers with use_insecure_cipher'
default: false
description: "include more ciphers with use_insecure_cipher"
target:
description: 'target path on the server, must be a directory path.'
description: "target path on the server, must be a directory path."
source:
description: 'scp file list'
description: "scp file list"
rm:
description: 'remove target folder before upload data'
default: false
description: "remove target folder before upload data"
debug:
description: 'enable debug message'
default: false
description: "enable debug message"
strip_components:
description: 'remove the specified number of leading path elements'
default: 0
description: "remove the specified number of leading path elements"
overwrite:
description: 'use --overwrite flag with tar'
default: false
description: "use --overwrite flag with tar"
tar_dereference:
description: 'use --dereference flag with tar'
default: false
description: "use --dereference flag with tar"
tar_tmp_path:
description: 'temporary path for tar file on the dest host'
description: "temporary path for tar file on the dest host"
tar_exec:
description: 'temporary path for tar file on the dest host'
default: 'tar'
description: "temporary path for tar file on the dest host"
default: "tar"
proxy_host:
description: 'ssh proxy remote host'
description: "ssh proxy remote host"
proxy_port:
description: 'ssh proxy remote port'
default: 22
description: "ssh proxy remote port"
default: "22"
proxy_username:
description: 'ssh proxy username'
description: "ssh proxy username"
proxy_password:
description: 'ssh proxy password'
description: "ssh proxy password"
proxy_passphrase:
description: 'ssh proxy key passphrase'
description: "ssh proxy key passphrase"
proxy_timeout:
description: 'timeout for ssh to proxy host'
description: "timeout for ssh to proxy host"
default: "30s"
proxy_key:
description: 'content of ssh proxy private key. ex raw content of ~/.ssh/id_rsa'
description: "content of ssh proxy private key. ex raw content of ~/.ssh/id_rsa"
proxy_key_path:
description: 'path of ssh proxy private key'
description: "path of ssh proxy private key"
proxy_fingerprint:
description: 'fingerprint SHA256 of the host public key, default is to skip verification'
description: "fingerprint SHA256 of the host public key, default is to skip verification"
proxy_use_insecure_cipher:
description: 'include more ciphers with use_insecure_cipher'
default: false
description: "include more ciphers with use_insecure_cipher"
runs:
using: 'docker'
image: 'Dockerfile'
using: "docker"
image: "Dockerfile"
branding:
icon: 'copy'
color: 'gray-dark'
icon: "copy"
color: "gray-dark"