1 Commits

Author SHA1 Message Date
Bo-Yi Wu
209e8c05e0 chore: i/o timeout issue 2023-04-10 13:50:27 +08:00
3 changed files with 145 additions and 187 deletions

View File

@@ -1,12 +1,13 @@
name: scp files name: scp files
on: [push] on: [push]
jobs: jobs:
testing: testing:
name: test scp action name: test scp action
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: checkout - name: checkout
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: copy file via ssh password - name: copy file via ssh password
uses: ./ uses: ./
@@ -62,21 +63,43 @@ jobs:
target: "test" target: "test"
use_insecure_cipher: true use_insecure_cipher: true
- name: correct key but wrong password
uses: appleboy/scp-action@7af00892de6f8397c5c3393cfb3b32ae7f91b94b
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
password: abcdefg
port: ${{ secrets.PORT }}
source: "tests/a.txt,tests/b.txt"
target: "test"
- name: correct password but wrong key
uses: appleboy/scp-action@7af00892de6f8397c5c3393cfb3b32ae7f91b94b
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: abcdefg
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
source: "tests/a.txt,tests/b.txt"
target: "test"
deploy: deploy:
name: test deploy artifact name: deploy artifact
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: checkout - name: checkout
uses: actions/checkout@v4 uses: actions/checkout@v3
- run: echo hello > world.txt - run: echo hello > world.txt
- uses: actions/upload-artifact@v4 - uses: actions/upload-artifact@v3
with: with:
name: my-artifact name: my-artifact
path: world.txt path: world.txt
- uses: actions/download-artifact@v4 - uses: actions/download-artifact@v2
with: with:
name: my-artifact name: my-artifact
path: distfiles path: distfiles
@@ -96,11 +119,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: checkout - name: checkout
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: Get changed files - name: Get changed files
id: changed-files id: changed-files
uses: tj-actions/changed-files@v41 uses: tj-actions/changed-files@v35
with: with:
since_last_remote_commit: true since_last_remote_commit: true
separator: "," separator: ","
@@ -114,37 +137,3 @@ jobs:
port: ${{ secrets.PORT }} port: ${{ secrets.PORT }}
source: ${{ steps.changed-files.outputs.all_changed_files }} source: ${{ steps.changed-files.outputs.all_changed_files }}
target: test target: test
target:
name: test target folder
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: copy file to server
uses: ./
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@v4
- name: copy file to server
uses: ./
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

@@ -1,5 +1,5 @@
FROM ghcr.io/appleboy/drone-scp:1.6.13 FROM ghcr.io/appleboy/drone-scp:latest
COPY entrypoint.sh /bin/entrypoint.sh COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/bin/entrypoint.sh"] ENTRYPOINT ["/entrypoint.sh"]

View File

@@ -19,9 +19,9 @@ jobs:
name: Build name: Build
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v0.1.4
- name: copy file via ssh password - name: copy file via ssh password
uses: appleboy/scp-action@v0.1.5 uses: appleboy/scp-action@v0.1.4
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@@ -137,7 +137,7 @@ Copy file via a SSH password:
```yaml ```yaml
- name: copy file via ssh password - name: copy file via ssh password
uses: appleboy/scp-action@v0.1.5 uses: appleboy/scp-action@v0.1.4
with: with:
host: example.com host: example.com
username: foo username: foo
@@ -151,7 +151,7 @@ Copy file via a SSH key:
```yaml ```yaml
- name: copy file via ssh key - name: copy file via ssh key
uses: appleboy/scp-action@v0.1.5 uses: appleboy/scp-action@v0.1.4
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@@ -165,7 +165,7 @@ Example configuration for ignore list:
```yaml ```yaml
- name: copy file via ssh key - name: copy file via ssh key
uses: appleboy/scp-action@v0.1.5 uses: appleboy/scp-action@v0.1.4
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@@ -178,7 +178,7 @@ Example configuration for ignore list:
Example configuration for multiple servers: Example configuration for multiple servers:
```diff ```diff
uses: appleboy/scp-action@v0.1.5 uses: appleboy/scp-action@v0.1.4
with: with:
- host: "example.com" - host: "example.com"
+ host: "foo.com,bar.com" + host: "foo.com,bar.com"
@@ -192,7 +192,7 @@ Example configuration for multiple servers:
Example configuration for exclude custom files: Example configuration for exclude custom files:
```yaml ```yaml
uses: appleboy/scp-action@v0.1.5 uses: appleboy/scp-action@v0.1.4
with: with:
host: "example.com" host: "example.com"
username: foo username: foo
@@ -220,13 +220,13 @@ Upload artifact files to remote server:
name: my-artifact name: my-artifact
path: world.txt path: world.txt
- uses: actions/download-artifact@v3 - uses: actions/download-artifact@v2
with: with:
name: my-artifact name: my-artifact
path: distfiles path: distfiles
- name: copy file to server - name: copy file to server
uses: appleboy/scp-action@v0.1.5 uses: appleboy/scp-action@v0.1.4
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@@ -240,7 +240,7 @@ Remove the specified number of leading path elements:
```yaml ```yaml
- name: remove the specified number of leading path elements - name: remove the specified number of leading path elements
uses: appleboy/scp-action@v0.1.5 uses: appleboy/scp-action@v0.1.4
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@@ -251,23 +251,6 @@ Remove the specified number of leading path elements:
strip_components: 1 strip_components: 1
``` ```
Old target structure:
```sh
foobar
└── tests
├── a.txt
└── b.txt
```
New target structure:
```sh
foobar
├── a.txt
└── b.txt
```
Only copy files that are newer than the corresponding destination files: Only copy files that are newer than the corresponding destination files:
```yaml ```yaml
@@ -286,7 +269,7 @@ Only copy files that are newer than the corresponding destination files:
separator: "," separator: ","
- name: copy file to server - name: copy file to server
uses: appleboy/scp-action@v0.1.5 uses: appleboy/scp-action@v0.1.4
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@@ -296,11 +279,28 @@ Only copy files that are newer than the corresponding destination files:
target: your_server_target_folder_path target: your_server_target_folder_path
``` ```
Old target structure:
```sh
foobar
└── tests
├── a.txt
└── b.txt
```
New target structure:
```sh
foobar
├── a.txt
└── b.txt
```
Protecting a Private Key. The purpose of the passphrase is usually to encrypt the private key. This makes the key file by itself useless to an attacker. It is not uncommon for files to leak from backups or decommissioned hardware, and hackers commonly exfiltrate files from compromised systems. Protecting a Private Key. The purpose of the passphrase is usually to encrypt the private key. This makes the key file by itself useless to an attacker. It is not uncommon for files to leak from backups or decommissioned hardware, and hackers commonly exfiltrate files from compromised systems.
```diff ```diff
- name: ssh key with passphrase - name: ssh key with passphrase
uses: appleboy/scp-action@v0.1.5 uses: appleboy/scp-action@v0.1.4
with: with:
host: ${{ secrets.HOST }} host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
@@ -310,34 +310,3 @@ Protecting a Private Key. The purpose of the passphrase is usually to encrypt th
source: "tests/a.txt,tests/b.txt" source: "tests/a.txt,tests/b.txt"
target: your_server_target_folder_path target: your_server_target_folder_path
``` ```
When copying files from a Linux runner to a Windows server, you should:
1. Download git for Windows
2. Change the default OpenSSH shell to git bach with the following powershell command.
3. Set `tar_dereference` and `rm` variable to `true` in the YAML file
4. Avoid putting the `port` value through a variable
5. Convert the target path to a Unix path: `/c/path/to/target/`
Change the default OpenSSH shell to git bach with the following powershell command.
```powershell
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "$env:Programfiles\Git\bin\bash.exe" -PropertyType String -Force
```
Convert the target path to a Unix path: `/c/path/to/target/`
```diff
- name: Copy to Windows
uses: appleboy/scp-action@v0.1.5
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: 22
source: 'your_source_path'
- target: 'C:\path\to\target'
+ target: '/c/path/to/target/'
+ tar_dereference: true
+ rm: true
```