Compare commits

..

6 Commits
v1 ... master

Author SHA1 Message Date
appleboy 7179e72a3f
ci: update GitHub workflows to use latest action versions
- Update actions/setup-go to v6 in the goreleaser workflow
- Update tj-actions/changed-files to v47 in stable and testing workflows

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2025-09-16 22:58:49 +08:00
Bo-Yi Wu eb443bd494
feat: avoid redundant binary downloads and notify when skipping (#210)
* feat: avoid redundant binary downloads and notify when skipping

- Skip downloading the binary if it already exists, and print a message instead

Signed-off-by: appleboy <appleboy.tw@gmail.com>

* Update entrypoint.sh

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Signed-off-by: appleboy <appleboy.tw@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-08-31 10:31:45 +08:00
appleboy 9132c85c5f
ci: update GitHub Actions to latest major versions
- Update actions/checkout to version 5 throughout workflow files
- Update actions/download-artifact to version 5
- Update tj-actions/changed-files to version 46 in the testing workflow

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2025-08-31 10:04:38 +08:00
appleboy 7f18bf0ec8
docs: add v1 workflow version badge to all README files
- Add a v1 version badge for the stable workflow to all README files

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2025-04-27 12:46:41 +08:00
appleboy 35c03a241d
ci: rename testing workflow to clarify versioning
- Update workflow name from "testing v1" to "v1 version"

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2025-04-27 12:46:01 +08:00
appleboy 8b7c180c3f
ci: add comprehensive GitHub Actions tests for scp-action
- Add GitHub Actions workflow to test multiple scp-action configurations and scenarios
- Include job to test deployment of uploaded and downloaded artifacts via scp
- Include job to copy only changed files detected by tj-actions/changed-files
- Add test for stripping leading path components when copying files
- Add coverage for copying files to single and multiple hosts, including target folder variations
- Test scp-action usage with both SSH key and password authentication, with and without passphrases, and option for insecure cipher

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2025-04-27 12:45:00 +08:00
7 changed files with 167 additions and 10 deletions

View File

@ -18,7 +18,7 @@ jobs:
fetch-depth: 0
- name: Setup go
uses: actions/setup-go@v5
uses: actions/setup-go@v6
with:
go-version: "^1"

150
.github/workflows/stable.yml vendored 100644
View File

@ -0,0 +1,150 @@
name: v1 version
on: [push]
jobs:
testing:
name: test scp action
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v5
- name: copy file via ssh password
uses: appleboy/scp-action@v1
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
source: "tests/a.txt,tests/b.txt"
target: "test"
- name: copy file via ssh key
uses: appleboy/scp-action@v1
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
port: ${{ secrets.PORT }}
source: "tests/a.txt,tests/b.txt"
target: "test"
- name: remove the specified number of leading path elements
uses: appleboy/scp-action@v1
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
- name: ssh key with passphrase
uses: appleboy/scp-action@v1
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH2 }}
passphrase: ${{ secrets.PASSPHRASE }}
port: ${{ secrets.PORT }}
source: "tests/a.txt,tests/b.txt"
target: "test"
- name: use insecure cipher
uses: appleboy/scp-action@v1
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH2 }}
passphrase: ${{ secrets.PASSPHRASE }}
port: ${{ secrets.PORT }}
source: "tests/a.txt,tests/b.txt"
target: "test"
use_insecure_cipher: true
deploy:
name: test deploy artifact
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v5
- run: echo hello > world.txt
- uses: actions/upload-artifact@v4
with:
name: my-artifact
path: world.txt
- uses: actions/download-artifact@v5
with:
name: my-artifact
path: distfiles
- name: copy file to server
uses: appleboy/scp-action@v1
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
port: ${{ secrets.PORT }}
source: distfiles/*
target: test
changes:
name: test changed-files
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v5
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v47
with:
since_last_remote_commit: true
separator: ","
- name: copy file to server
uses: appleboy/scp-action@v1
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
port: ${{ secrets.PORT }}
source: ${{ steps.changed-files.outputs.all_changed_files }}
target: test
target:
name: test target folder
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v5
- name: copy file to server
uses: appleboy/scp-action@v1
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
port: ${{ secrets.PORT }}
source: tests/a.txt,tests/b.txt
target: foobar foobar 1234
multipleHost:
name: test Multiple Host
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v5
- name: copy file to server
uses: appleboy/scp-action@v1
with:
host: ${{ secrets.HOST }}:${{ secrets.PORT }},${{ secrets.HOST }}:${{ secrets.PORT }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
port: 1024
source: tests/a.txt,tests/b.txt
target: foobar

View File

@ -6,7 +6,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: copy file via ssh password
uses: ./
@ -67,7 +67,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
- run: echo hello > world.txt
@ -76,7 +76,7 @@ jobs:
name: my-artifact
path: world.txt
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v5
with:
name: my-artifact
path: distfiles
@ -96,11 +96,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v45
uses: tj-actions/changed-files@v47
with:
since_last_remote_commit: true
separator: ","
@ -120,7 +120,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: copy file to server
uses: ./
@ -137,7 +137,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: copy file to server
uses: ./

View File

@ -4,6 +4,7 @@
[GitHub Action](https://github.com/features/actions) for copying files and artifacts via SSH.
[![v1 version](https://github.com/appleboy/scp-action/actions/workflows/stable.yml/badge.svg)](https://github.com/appleboy/scp-action/actions/workflows/stable.yml)
[![lint and test](https://github.com/appleboy/scp-action/actions/workflows/testing.yml/badge.svg)](https://github.com/appleboy/scp-action/actions/workflows/testing.yml)
> **Note:** Only supports **Linux** [docker](https://www.docker.com/) containers.

View File

@ -4,6 +4,7 @@
[GitHub Action](https://github.com/features/actions) 用于通过 SSH 复制文件和构建产物。
[![v1 version](https://github.com/appleboy/scp-action/actions/workflows/stable.yml/badge.svg)](https://github.com/appleboy/scp-action/actions/workflows/stable.yml)
[![lint and test](https://github.com/appleboy/scp-action/actions/workflows/testing.yml/badge.svg)](https://github.com/appleboy/scp-action/actions/workflows/testing.yml)
> **注意:** 仅支持 **Linux** [docker](https://www.docker.com/) 容器。

View File

@ -4,6 +4,7 @@
[GitHub Action](https://github.com/features/actions) 用於透過 SSH 複製檔案與產物。
[![v1 version](https://github.com/appleboy/scp-action/actions/workflows/stable.yml/badge.svg)](https://github.com/appleboy/scp-action/actions/workflows/stable.yml)
[![lint and test](https://github.com/appleboy/scp-action/actions/workflows/testing.yml/badge.svg)](https://github.com/appleboy/scp-action/actions/workflows/testing.yml)
> **注意:** 只支援 **Linux** [docker](https://www.docker.com/) 容器。

View File

@ -39,8 +39,12 @@ if [[ "${INPUT_CURL_INSECURE}" == 'true' ]]; then
INSECURE_OPTION="--insecure"
fi
if [[ ! -x "${TARGET}" ]]; then
curl -fsSL --retry 5 --keepalive-time 2 ${INSECURE_OPTION} "${DOWNLOAD_URL_PREFIX}/${CLIENT_BINARY}" -o "${TARGET}"
chmod +x "${TARGET}"
else
echo "Binary ${CLIENT_BINARY} already exists and is executable, skipping download."
fi
echo "======= CLI Version Information ======="
"${TARGET}" --version