Compare commits

..

307 commits
v1.0.0 ... main

Author SHA1 Message Date
github-actions
a1aa0b6cf9 chore(release): 5.1.1 [skip ci]
## [5.1.1](https://github.com/easingthemes/ssh-deploy/compare/v5.1.0...v5.1.1) (2024-07-24)

### Bug Fixes

* Update README.md ([f007431](f007431332))
2024-07-24 17:04:53 +00:00
Dragan Filipović
f007431332
fix: Update README.md 2024-07-24 19:04:28 +02:00
github-actions
ece05a2275 chore(release): 5.1.0 [skip ci]
# [5.1.0](https://github.com/easingthemes/ssh-deploy/compare/v5.0.3...v5.1.0) (2024-07-24)

### Features

* Add deleteFile function to helpers module ([1befdb1](1befdb1c6b))
* apply deleteFile function to remoteCmd ([b82eced](b82eced457))
2024-07-24 16:55:35 +00:00
Dragan Filipović
b99511bf85
Merge pull request #184 from Armadillidiid/feat/delete-script-after-exec
Feature: Delete Script After Execution
2024-07-24 18:55:06 +02:00
Emmanuel Isenah
b82eced457 feat: apply deleteFile function to remoteCmd 2024-03-17 22:21:09 +01:00
Emmanuel Isenah
1befdb1c6b feat: Add deleteFile function to helpers module 2024-03-17 22:19:34 +01:00
github-actions
01a39e3348 chore(release): 5.0.3 [skip ci]
## [5.0.3](https://github.com/easingthemes/ssh-deploy/compare/v5.0.2...v5.0.3) (2024-02-27)

### Bug Fixes

* trigger automated release ([4d8bbf0](4d8bbf0deb))
2024-02-27 08:58:54 +00:00
Dragan Filipović
f517598798
Merge pull request #180 from alekw/main
fix: Update actions to Node.js 20
2024-02-27 09:58:22 +01:00
Aleksander Wolak
4d8bbf0deb fix: trigger automated release 2024-02-26 23:55:50 +01:00
Aleksander Wolak
428f2b152b fix own action version 2024-02-26 23:48:33 +01:00
github-actions
8c3965fd5f chore(release): 5.0.2 [skip ci]
## [5.0.2](https://github.com/easingthemes/ssh-deploy/compare/v5.0.1...v5.0.2) (2024-02-18)

### Bug Fixes

* added the missing declarations [#177](https://github.com/easingthemes/ssh-deploy/issues/177) ([bb271fe](bb271fe4c6))
* Fix default values used incorrectly. ([a1b383f](a1b383f560))
2024-02-18 17:44:58 +00:00
Dragan Filipović
186d0277e9
Merge pull request #178 from skyArony/fix-#177
fix: added the missing declarations #177
2024-02-18 18:44:30 +01:00
skyArony
a1b383f560 fix: Fix default values used incorrectly. 2024-02-18 22:43:02 +08:00
Aleksander Wolak
d42d2576ab further fixes 2024-02-16 01:06:08 +01:00
Aleksander Wolak
bed42ef321 further fixes 2024-02-16 00:56:27 +01:00
Aleksander Wolak
07d369f5c8 update well known actions 2024-02-16 00:53:05 +01:00
skyArony
bb271fe4c6 fix: added the missing declarations #177 2024-02-02 16:31:41 +08:00
github-actions
3b7118ee8b chore(release): 5.0.1 [skip ci]
## [5.0.1](https://github.com/easingthemes/ssh-deploy/compare/v5.0.0...v5.0.1) (2024-01-31)

### Bug Fixes

* Add info for Permission denied issue. ([845b578](845b578606))
2024-01-31 01:00:14 +00:00
Dragan Filipović
845b578606
fix: Add info for Permission denied issue. 2024-01-31 01:59:36 +01:00
Dragan Filipović
725ce37b9f
Update stale to 90 days 2024-01-18 21:46:42 +01:00
github-actions
16bb35ed0b chore(release): 5.0.0 [skip ci]
# [5.0.0](https://github.com/easingthemes/ssh-deploy/compare/v4.1.10...v5.0.0) (2023-12-12)

* Merge pull request #173 from jeromelachaud/main ([ac1908e](ac1908e5d2)), closes [#173](https://github.com/easingthemes/ssh-deploy/issues/173)

### BREAKING CHANGES

* update to use nodeJS v20
* update to use nodeJS v20
2023-12-12 21:29:39 +00:00
Dragan Filipović
ac1908e5d2
Merge pull request #173 from jeromelachaud/main
BREAKING CHANGE: update to use nodeJS v20

BREAKING CHANGE: update to use nodeJS v20
2023-12-12 22:29:07 +01:00
Jerome Lachaud
d77e3dfdc8 BREAKING CHANGE: update to use nodeJS v20 2023-10-25 13:19:20 +00:00
github-actions
aa1c48118d chore(release): 4.1.10 [skip ci]
## [4.1.10](https://github.com/easingthemes/ssh-deploy/compare/v4.1.9...v4.1.10) (2023-09-30)

### Bug Fixes

* normalize line endings in SSH key for the underlying OS ([3f5d9aa](3f5d9aab1a))
2023-09-30 15:13:25 +00:00
Dragan Filipović
448aa45aa1
Merge pull request #156 from mansandersson/fix-key-line-endings
Normalize line endings in SSH key for the underlying OS
2023-09-30 17:12:46 +02:00
Måns Andersson
3f5d9aab1a fix: normalize line endings in SSH key for the underlying OS 2023-09-28 20:05:00 +02:00
github-actions
2942523001 chore(release): 4.1.9 [skip ci]
## [4.1.9](https://github.com/easingthemes/ssh-deploy/compare/v4.1.8...v4.1.9) (2023-09-24)

### Bug Fixes

* add compiled file ([627ac29](627ac29ece))
* add uuid for ssh scripts ([66f6e4b](66f6e4b367))
2023-09-24 15:37:24 +00:00
Dragan Filipović
ef20db4468
Merge pull request #167 from easingthemes/feature/#131-use-unique-file-name-for-scripts
fix: add uuid for ssh scripts
2023-09-24 17:36:52 +02:00
Dragan Filipovic
627ac29ece fix: add compiled file 2023-09-24 17:35:00 +02:00
Dragan Filipovic
66f6e4b367 fix: add uuid for ssh scripts 2023-09-24 17:29:49 +02:00
Dragan Filipović
d91ea7e0f7
Merge pull request #144 from shoshins/70-no-private-key-password-option
#70 - There is no Password option for Rsync SSH. Documentation is up…
2023-09-24 17:16:11 +02:00
Dragan Filipović
28d946e487
Merge pull request #154 from olivertappin/main
Correct typo in README.md
2023-09-24 16:58:48 +02:00
Dragan Filipović
3ab5951ec1
Merge pull request #141 from dbryan0516/remote-cmd-error
Added SCRIPT_BEFORE_REQUIRED and SCRIPT_AFTER_REQUIRED flags
2023-09-24 16:58:09 +02:00
Dragan Filipović
cf583aab4f
Merge pull request #153 from Triloworld/patch-2
Update README.md
2023-08-03 19:18:58 +02:00
Oliver Tappin
8ba86462c0
Correct typo in README.md 2023-06-28 20:36:01 +01:00
Patryk Padus
e7f0312c8c
Update README.md
In reference of this issue and comment: https://github.com/easingthemes/ssh-deploy/issues/149
2023-06-23 14:52:23 +02:00
Sergey Shoshin
35ccd2ccc4 #70 - There is no Password option for Rsync SSH. Documentation is updated 2023-04-25 18:11:13 +04:00
Dylan Bryan
ed53b09c84 Added build file 2023-04-18 17:33:08 -04:00
Dylan Bryan
f9797b28d5 Added SCRIPT_BEFORE_REQUIRED and SCRIPT_AFTER_REQUIRED flags for error throwing on remote cmd errors 2023-04-18 17:24:01 -04:00
github-actions
3884c8554f chore(release): 4.1.8 [skip ci]
## [4.1.8](https://github.com/easingthemes/ssh-deploy/compare/v4.1.7...v4.1.8) (2023-02-21)

### Bug Fixes

* rebuild and update readme ([98025d6](98025d680e))
2023-02-21 22:13:02 +00:00
Dragan Filipović
168ff9f4b8
Merge pull request #124 from easingthemes/bugfix/rebuild
fix: rebuild and update readme
2023-02-21 23:12:21 +01:00
Dragan Filipovic
98025d680e fix: rebuild and update readme 2023-02-21 23:11:54 +01:00
Dragan Filipović
88cc5ade97
Merge pull request #123 from sdelfi/fix/update-dist
chore: build dist
2023-02-21 23:06:19 +01:00
Stanislav Salnikov
ad7eefb5ae chore: build dist 2023-02-21 23:03:40 +01:00
github-actions
54dca654be chore(release): 4.1.7 [skip ci]
## [4.1.7](https://github.com/easingthemes/ssh-deploy/compare/v4.1.6...v4.1.7) (2023-02-21)

### Bug Fixes

* [#120](https://github.com/easingthemes/ssh-deploy/issues/120) check undefined data ([2fbb060](2fbb06015d))
2023-02-21 21:36:50 +00:00
Dragan Filipović
b0ee052eb0
Merge pull request #122 from easingthemes/bugfix/#120-inputs-string-bug
fix: #120 check undefined data
2023-02-21 22:36:10 +01:00
Dragan Filipovic
2fbb06015d fix: #120 check undefined data 2023-02-21 22:35:05 +01:00
github-actions
51b2009841 chore(release): 4.1.6 [skip ci]
## [4.1.6](https://github.com/easingthemes/ssh-deploy/compare/v4.1.5...v4.1.6) (2023-02-21)

### Bug Fixes

* [#118](https://github.com/easingthemes/ssh-deploy/issues/118) check undefined default values rebuild ([54f8b6c](54f8b6c60b))
2023-02-21 17:02:47 +00:00
Dragan Filipović
530a3691f2
Merge pull request #121 from easingthemes/bugfix/#118-default-value-check
Bugfix/#118 default value check
2023-02-21 18:02:04 +01:00
Dragan Filipovic
509caf1bb9 Merge branch 'main' into bugfix/#118-default-value-check 2023-02-21 18:01:00 +01:00
Dragan Filipovic
54f8b6c60b fix: #118 check undefined default values rebuild 2023-02-21 18:00:23 +01:00
github-actions
d9d134f8e5 chore(release): 4.1.5 [skip ci]
## [4.1.5](https://github.com/easingthemes/ssh-deploy/compare/v4.1.4...v4.1.5) (2023-02-21)

### Bug Fixes

* [#118](https://github.com/easingthemes/ssh-deploy/issues/118) check undefined default values ([f0c02fb](f0c02fb2a5))
2023-02-21 16:12:23 +00:00
Dragan Filipović
e7b2312bc9
Merge pull request #119 from easingthemes/bugfix/#118-default-value-check
fix: #118 check undefined default values
2023-02-21 17:11:53 +01:00
Dragan Filipovic
f0c02fb2a5 fix: #118 check undefined default values 2023-02-21 17:10:24 +01:00
github-actions
ae4970d4cf chore(release): 4.1.4 [skip ci]
## [4.1.4](https://github.com/easingthemes/ssh-deploy/compare/v4.1.3...v4.1.4) (2023-02-21)

### Bug Fixes

* [#113](https://github.com/easingthemes/ssh-deploy/issues/113) limit ssh script input ([5894f5e](5894f5e290))
2023-02-21 16:03:56 +00:00
Dragan Filipovic
5894f5e290 fix: #113 limit ssh script input 2023-02-21 17:03:16 +01:00
github-actions
c381b885db chore(release): 4.1.3 [skip ci]
## [4.1.3](https://github.com/easingthemes/ssh-deploy/compare/v4.1.2...v4.1.3) (2023-02-21)

### Bug Fixes

* [#113](https://github.com/easingthemes/ssh-deploy/issues/113) limit ssh script output - rebuild ([756a522](756a522533))
2023-02-21 15:56:09 +00:00
Dragan Filipovic
756a522533 fix: #113 limit ssh script output - rebuild 2023-02-21 16:55:32 +01:00
github-actions
45cee3db2e chore(release): 4.1.2 [skip ci]
## [4.1.2](https://github.com/easingthemes/ssh-deploy/compare/v4.1.1...v4.1.2) (2023-02-21)

### Bug Fixes

* [#113](https://github.com/easingthemes/ssh-deploy/issues/113) limit ssh script output ([59827af](59827af83c))
2023-02-21 15:54:41 +00:00
Dragan Filipovic
59827af83c fix: #113 limit ssh script output 2023-02-21 16:53:56 +01:00
github-actions
adb1a2ce99 chore(release): 4.1.1 [skip ci]
## [4.1.1](https://github.com/easingthemes/ssh-deploy/compare/v4.1.0...v4.1.1) (2023-02-21)

### Bug Fixes

* fix default TARGET ([4d08634](4d086346af))
2023-02-21 14:37:18 +00:00
Dragan Filipovic
4d086346af fix: fix default TARGET 2023-02-21 15:36:29 +01:00
Dragan Filipovic
056fb0fea7 [e2e] use main for latest tests 2023-02-21 14:50:41 +01:00
Dragan Filipovic
d7e6989d58 [e2e] rebuild: log default values 2023-02-21 14:46:17 +01:00
Dragan Filipovic
0fb307eb41 [e2e] log default values 2023-02-21 14:43:52 +01:00
Dragan Filipovic
a7b7e1e49d [e2e] add default values test 2023-02-21 14:38:27 +01:00
github-actions
e995cb4b7b chore(release): 4.1.0 [skip ci]
# [4.1.0](https://github.com/easingthemes/ssh-deploy/compare/v4.0.5...v4.1.0) (2023-02-19)

### Features

* add ssh port from VARs, fix package-lock ([808b002](808b0020d4))
2023-02-19 17:30:20 +00:00
Dragan Filipovic
808b0020d4 feat: add ssh port from VARs, fix package-lock 2023-02-19 18:29:35 +01:00
Dragan Filipović
d5e1f75798
Merge pull request #116 from Cascade-Lab/sb-fix-host-scan-port
Use custom port for host scan
2023-02-19 18:25:20 +01:00
Sebastian Blesgen
a1e01b2fad Use custom port for host scan 2023-02-10 18:55:53 +01:00
github-actions
164a3e861e chore(release): 4.0.5 [skip ci]
## [4.0.5](https://github.com/easingthemes/ssh-deploy/compare/v4.0.4...v4.0.5) (2023-01-06)

### Bug Fixes

* fix manual release action ([245b7a9](245b7a9d2f))
2023-01-06 20:51:37 +00:00
Dragan Filipović
426f06d922
Merge pull request #106 from easingthemes/manual-release
fix: fix manual release action
2023-01-06 21:50:57 +01:00
Dragan Filipovic
245b7a9d2f fix: fix manual release action 2023-01-06 21:50:25 +01:00
Dragan Filipović
4c8eee72bd
Merge pull request #105 from npiasecki/fix-remote-port
Add remote port
2023-01-05 20:21:22 +01:00
Nicholas Piasecki
0a1df91f97 Add remote port 2023-01-04 12:18:09 -05:00
github-actions
845b7f6f1f chore(release): 4.0.4 [skip ci]
## [4.0.4](https://github.com/easingthemes/ssh-deploy/compare/v4.0.3...v4.0.4) (2023-01-03)

### Bug Fixes

* update sub dependencies ([2a32c8d](2a32c8dcde))
2023-01-03 22:41:11 +00:00
Dragan Filipovic
2a32c8dcde fix: update sub dependencies 2023-01-03 23:40:24 +01:00
github-actions
0b63b85565 chore(release): 4.0.3 [skip ci]
## [4.0.3](https://github.com/easingthemes/ssh-deploy/compare/v4.0.2...v4.0.3) (2023-01-03)

### Bug Fixes

* update v3 e2e test ([450bf42](450bf423f3))
2023-01-03 22:16:09 +00:00
Dragan Filipovic
450bf423f3 fix: update v3 e2e test 2023-01-03 23:15:21 +01:00
github-actions
affc58a8b7 chore(release): 4.0.2 [skip ci]
## [4.0.2](https://github.com/easingthemes/ssh-deploy/compare/v4.0.1...v4.0.2) (2023-01-03)

### Bug Fixes

* add githubWorkspace as default source root ([3ef66d0](3ef66d0be9))
2023-01-03 22:08:02 +00:00
github-actions
8c12d45929 patch: Trigger Manual Release 2023-01-03 22:07:41 +00:00
Dragan Filipović
85987f4567
Merge pull request #101 from easingthemes/bugfix/src-dir
fix: add githubWorkspace as default source root
2023-01-03 23:05:33 +01:00
Dragan Filipovic
3ef66d0be9 fix: add githubWorkspace as default source root 2023-01-03 23:02:41 +01:00
github-actions
79363f2b74 chore(release): 4.0.1 [skip ci]
## [4.0.1](https://github.com/easingthemes/ssh-deploy/compare/v4.0.0...v4.0.1) (2023-01-03)

### Bug Fixes

* fix default source if empty ([9f191f4](9f191f4263))
2023-01-03 20:57:09 +00:00
Dragan Filipović
7c21074882
Merge pull request #99 from easingthemes/bugfix/fix-empty-src
fix: fix default source if empty
2023-01-03 21:56:33 +01:00
Dragan Filipovic
9f191f4263 fix: fix default source if empty 2023-01-03 21:55:45 +01:00
Dragan Filipovic
006cf3021d Add v3 e2e 2023-01-03 19:29:28 +01:00
github-actions
8be4106fce chore(release): 4.0.0 [skip ci]
# [4.0.0](https://github.com/easingthemes/ssh-deploy/compare/v3.4.3...v4.0.0) (2023-01-03)

### Bug Fixes

* rebuild ([2169399](2169399fef))

### Performance Improvements

* update default rsync options ([2be7efb](2be7efb376))

### BREAKING CHANGES

* Default rsync options updated to speed up default deployments.
from `rltgoDzvO` to `-rlgoDzvc -i`
2023-01-03 08:34:27 +00:00
Dragan Filipović
7c9b40539e
Merge pull request #96 from easingthemes/feature/default-rsync-options
feat: update default rsync options
2023-01-03 09:33:49 +01:00
Dragan Filipovic
2169399fef fix: rebuild 2023-01-03 09:25:16 +01:00
Dragan Filipovic
2be7efb376 perf: update default rsync options
BREAKING CHANGE: Default rsync options updated to speed up default deployments.
from `rltgoDzvO` to `-rlgoDzvc -i`
2023-01-03 09:21:19 +01:00
Dragan Filipovic
e6e41a57ec Merge branch 'temp3' 2023-01-03 03:39:52 +01:00
github-actions
c8d57ec8b4 chore(release): 3.4.3 [skip ci]
## [3.4.3](https://github.com/easingthemes/ssh-deploy/compare/v3.4.2...v3.4.3) (2023-01-03)

### Bug Fixes

* move e2e tests typo branch name ([6d3554b](6d3554b01e))
2023-01-03 03:38:43 +01:00
github-actions
8bf58fb293 chore(release): 3.4.3 [skip ci]
## [3.4.3](https://github.com/easingthemes/ssh-deploy/compare/v3.4.2...v3.4.3) (2023-01-03)

### Bug Fixes

* move e2e tests typo branch name ([6d3554b](6d3554b01e))
2023-01-03 02:29:31 +00:00
Dragan Filipovic
6d3554b01e fix: move e2e tests typo branch name 2023-01-03 03:28:39 +01:00
github-actions
8ad0b68b03 chore(release): 3.4.2 [skip ci]
## [3.4.2](https://github.com/easingthemes/ssh-deploy/compare/v3.4.1...v3.4.2) (2023-01-03)

### Bug Fixes

* Update changelog ([765f5ff](765f5ffd31))
2023-01-03 02:26:00 +00:00
Dragan Filipovic
765f5ffd31 fix: Update changelog 2023-01-03 03:25:23 +01:00
github-actions
bd84b4a501 chore(release): 3.4.1 [skip ci]
## [3.4.1](https://github.com/easingthemes/ssh-deploy/compare/v3.4.0...v3.4.1) (2023-01-03)

### Bug Fixes

* move e2e tests to main branch ([0069fae](0069faea9f))
2023-01-03 02:13:05 +00:00
Dragan Filipovic
0069faea9f fix: move e2e tests to main branch 2023-01-03 03:11:47 +01:00
github-actions
f6dd2006c5 chore(release): 3.4.0 [skip ci]
# [3.4.0](https://github.com/easingthemes/ssh-deploy/compare/v3.3.4...v3.4.0) (2023-01-03)

### Bug Fixes

* yaml step name ([5c13615](5c13615d4b))

### Features

* Add multi source and multi target support ([73a65ec](73a65ec97c))
2023-01-03 02:10:04 +00:00
Dragan Filipović
923bc68f1a
Merge pull request #95 from easingthemes/feature/multi-src
feat: Add multi source and multi target support
2023-01-03 03:09:17 +01:00
Dragan Filipovic
5c13615d4b fix: yaml step name 2023-01-03 03:03:07 +01:00
Dragan Filipovic
73a65ec97c feat: Add multi source and multi target support 2023-01-03 02:49:54 +01:00
Dragan Filipovic
98ee38d52e BREAKING CHANGE: Update inputs for multi src and pattern args 2023-01-02 23:50:02 +01:00
Dragan Filipovic
bfa025c10c improve echo in e2e 2023-01-02 23:08:06 +01:00
github-actions
a73c81ee7b chore(release): 3.3.4 [skip ci]
## [3.3.4](https://github.com/easingthemes/ssh-deploy/compare/v3.3.3...v3.3.4) (2023-01-02)

### Bug Fixes

* Add visible Rsync CMD for debugging ([91b6d28](91b6d280ae))
2023-01-02 21:59:55 +00:00
Dragan Filipovic
91b6d280ae fix: Add visible Rsync CMD for debugging 2023-01-02 22:59:19 +01:00
Dragan Filipovic
4f233a7f45 add bigger test files 2023-01-02 22:40:20 +01:00
github-actions
47f78aa96e chore(release): 3.3.3 [skip ci]
## [3.3.3](https://github.com/easingthemes/ssh-deploy/compare/v3.3.2...v3.3.3) (2023-01-02)

### Bug Fixes

* log buffer from rsync stdout ([8e19e0d](8e19e0d6bc))
2023-01-02 21:31:56 +00:00
Dragan Filipovic
8e19e0d6bc fix: log buffer from rsync stdout 2023-01-02 22:30:57 +01:00
Dragan Filipovic
da62405174 fix wrong args 2023-01-02 22:05:57 +01:00
Dragan Filipovic
2a85c96230 add more complex e2e tests 2023-01-02 22:02:16 +01:00
github-actions
ac90bba983 chore(release): 3.3.2 [skip ci]
## [3.3.2](https://github.com/easingthemes/ssh-deploy/compare/v3.3.1...v3.3.2) (2023-01-02)

### Bug Fixes

* Add manual inputs for e2e test ([8f71595](8f715957ab))
2023-01-02 20:46:02 +00:00
Dragan Filipovic
05ddb64347 Rebuild 2023-01-02 21:45:14 +01:00
Dragan Filipovic
8f715957ab fix: Add manual inputs for e2e test 2023-01-02 21:44:34 +01:00
github-actions
1b29e52589 chore(release): 3.3.1 [skip ci]
## [3.3.1](https://github.com/easingthemes/ssh-deploy/compare/v3.3.0...v3.3.1) (2023-01-02)

### Bug Fixes

* Log rsync command ([85f4a96](85f4a96743))
2023-01-02 20:38:50 +00:00
Dragan Filipovic
18abe921d8 Merge branch 'bckp2' 2023-01-02 21:38:07 +01:00
Dragan Filipovic
85f4a96743 fix: Log rsync command 2023-01-02 21:37:23 +01:00
github-actions
c59d8e4eeb chore(release): 3.3.0 [skip ci]
# [3.3.0](https://github.com/easingthemes/ssh-deploy/compare/v3.2.0...v3.3.0) (2023-01-02)

### Features

* Add SSH_CMD_ARGS support ([51a0063](51a00631e2))
2023-01-02 20:33:17 +00:00
Dragan Filipovic
5c0c73092e Merge branch 'bckp' 2023-01-02 21:32:08 +01:00
Dragan Filipovic
51a00631e2 feat: Add SSH_CMD_ARGS support 2023-01-02 21:31:04 +01:00
Dragan Filipović
4a7a6fbdf2
Update CHANGELOG.md 2023-01-02 21:21:04 +01:00
Dragan Filipović
fe4bee416c
Update CHANGELOG.md 2023-01-02 21:17:40 +01:00
github-actions
18600dc04b chore(release): 3.2.0 [skip ci]
# [3.2.0](https://github.com/easingthemes/ssh-deploy/compare/v3.1.1...v3.2.0) (2023-01-02)

### Features

* Add SSH remote script support -  before and after rsync ([2cd8a82](2cd8a820e2))
2023-01-02 20:14:22 +00:00
Dragan Filipovic
2cd8a820e2 feat: Add SSH remote script support - before and after rsync
fix: remove _unsafe _dirname

feat: add sshCmdArgs option

fix: Add promise instead of callback

fix: improve logs

fix: Add simple command exists instead of a plugin

fix: add non interactive install

feat: add onStderr and onStdout logs

fix: Improve reject messages

feat: Add RSYNC_STDOUT env variable

feat: Update emojis

fix: update workflow actions
2023-01-02 21:13:46 +01:00
github-actions
f4029512e4 chore(release): 3.1.1 [skip ci]
## [3.1.1](https://github.com/easingthemes/ssh-deploy/compare/v3.1.0...v3.1.1) (2023-01-02)

### Bug Fixes

* use main branch for e2e testes ([21451fe](21451fec97))
2023-01-02 20:09:00 +00:00
Dragan Filipovic
21451fec97 fix: use main branch for e2e testes 2023-01-02 21:08:00 +01:00
Dragan Filipović
ec9347f8c6
Feature/ssh cmd (#94)
* feat: Add SSH remote script support -  before and after rsync

* fix: remove __dirname

* feat: add sshCmdArgs option

* Add promise instead of callback

* fix: improve logs

* fix: Add simple command exists instead of a plugin

* add non interactive install

* feat: add onStderr and onStdout logs

* Improve reject messages

* feat: Add RSYNC_STDOUT env variable

* emoji updates

* fix: update workflow actions
2023-01-02 21:06:33 +01:00
Dragan Filipović
a5d8edb941
Update README.md 2022-12-31 15:20:15 +01:00
Dragan Filipović
38b80f1762
Update README.md 2022-12-31 15:13:32 +01:00
Dragan Filipović
cde8aae19c
Add stale issues Action 2022-12-31 15:11:04 +01:00
github-actions
5d811fd34f chore(release): 3.1.0 [skip ci]
# [3.1.0](https://github.com/easingthemes/ssh-deploy/compare/v3.0.1...v3.1.0) (2022-12-31)

### Features

* add e2e tests ([40f855a](40f855a08b))
2022-12-31 09:34:03 +00:00
Dragan Filipovic
40f855a08b feat: add e2e tests 2022-12-31 10:33:16 +01:00
Dragan Filipovic
45bf266280 Remove Key log 2022-12-31 10:30:19 +01:00
Dragan Filipović
650beff82c
Merge pull request #93 from easingthemes/feature/add-tests
Feature/add tests
2022-12-31 10:27:15 +01:00
Dragan Filipovic
b6ac6f5c98 readd workflows 2022-12-31 10:25:56 +01:00
Dragan Filipovic
58395110fa revert wrong package 2022-12-31 10:24:28 +01:00
Dragan Filipovic
34a75bf467 remove unused package 2022-12-31 10:23:56 +01:00
Dragan Filipovic
dd4fa994f1 switch back to main 2022-12-31 10:22:36 +01:00
Dragan Filipovic
fe5dbcff69 Remove ssh test 2022-12-31 10:22:07 +01:00
Dragan Filipovic
148d625f1d permissions fix 2022-12-31 10:20:28 +01:00
Dragan Filipovic
c685549dfc persmissions fix 2022-12-31 10:19:52 +01:00
Dragan Filipovic
4eea1db3aa mkdir remote 2022-12-31 10:17:50 +01:00
Dragan Filipovic
caa0281bf4 build it again 2022-12-31 10:15:39 +01:00
Dragan Filipovic
2121ba96bc update apt 2022-12-31 10:15:28 +01:00
Dragan Filipovic
b65c6688d1 host rsync 2022-12-31 10:14:04 +01:00
Dragan Filipovic
3e2f0214fc build it! 2022-12-31 10:07:22 +01:00
Dragan Filipovic
45eb75d449 inherit 2022-12-31 10:06:06 +01:00
Dragan Filipovic
4b6681d89c {stdio: 'inherit'} 2022-12-31 10:04:57 +01:00
Dragan Filipovic
70415f9f9d rsyncVersion 2022-12-31 10:02:46 +01:00
Dragan Filipovic
5403dab9a0 rsync check 2022-12-31 10:00:32 +01:00
Dragan Filipovic
11f58724d7 Build Action 2022-12-31 09:54:38 +01:00
Dragan Filipovic
5404854e81 envz 2022-12-31 09:53:43 +01:00
Dragan Filipovic
4efe6b6c40 print vars 2022-12-31 09:48:17 +01:00
Dragan Filipovic
a52870b487 test 2022-12-31 03:16:48 +01:00
Dragan Filipovic
d85914e1f9 test 2022-12-31 03:15:04 +01:00
Dragan Filipovic
152ee9d6b2 test 2022-12-31 02:43:57 +01:00
Dragan Filipovic
aeee708bee test 2022-12-31 02:43:17 +01:00
Dragan Filipovic
fd8e654d7e eval ssh-agent -s 2022-12-30 16:04:25 +01:00
Dragan Filipovic
0f6376161f add key 2022-12-30 16:01:47 +01:00
Dragan Filipovic
4d8753359e test ssh 2022-12-30 15:59:05 +01:00
Dragan Filipovic
f67f2211cb env3 2022-12-30 15:48:53 +01:00
Dragan Filipovic
e577b525ca env2 2022-12-30 15:46:37 +01:00
Dragan Filipovic
a3ddddcc15 env 2022-12-30 15:44:38 +01:00
Dragan Filipovic
68642e11e3 env 2022-12-30 15:44:09 +01:00
Dragan Filipovic
2f8e6000d2 env vars test 2022-12-30 15:40:28 +01:00
Dragan Filipovic
8073f2b34c test env vars 2022-12-30 15:36:34 +01:00
Dragan Filipovic
25ffb03f81 run on current branch 2022-12-30 15:26:24 +01:00
Dragan Filipovic
6662bf770e run on main branch 2022-12-30 15:25:45 +01:00
Dragan Filipovic
c7bd38757d replace nodeCMD with exec 2022-12-30 15:23:23 +01:00
Dragan Filipovic
692d3fee7d start nginx for testing 2022-12-30 14:29:31 +01:00
Dragan Filipovic
f7c067b07e fix env 2022-12-30 11:21:24 +01:00
Dragan Filipovic
d334a45df7 fix paths 2022-12-30 10:29:20 +01:00
Dragan Filipovic
a3412294d1 remove unused envs 2022-12-29 23:28:40 +01:00
Dragan Filipovic
a9382b67a2 e2e docker 2022-12-29 23:14:51 +01:00
Dragan Filipovic
2fdbdb60e6 get host info 2022-12-29 16:01:41 +01:00
Dragan Filipovic
416e17545e silent ssh-keygen 2022-12-29 15:55:39 +01:00
Dragan Filipovic
5f8d616f95 fix branch name 2022-12-29 15:51:02 +01:00
Dragan Filipovic
cc49ab6239 typo fix 2022-12-29 15:50:00 +01:00
Dragan Filipovic
b1a31cce80 test on current branch 2022-12-29 15:47:33 +01:00
Dragan Filipovic
8e3acd84f2 start e2e 2022-12-29 15:46:56 +01:00
github-actions
f2f261e6bd chore(release): 3.0.1 [skip ci]
## [3.0.1](https://github.com/easingthemes/ssh-deploy/compare/v3.0.0...v3.0.1) (2022-10-28)

### Bug Fixes

* readme update ([80a7f53](80a7f53ec9)), closes [#67](https://github.com/easingthemes/ssh-deploy/issues/67)
2022-10-28 02:16:55 +00:00
Dragan Filipovic
80a7f53ec9 fix: readme update
Fixes #67
2022-10-28 04:16:02 +02:00
github-actions
d4d82006e8 chore(release): 3.0.0 [skip ci]
# [3.0.0](https://github.com/easingthemes/ssh-deploy/compare/v2.2.11...v3.0.0) (2022-10-28)

### Bug Fixes

* plugins versions ([2f40dde](2f40dde84f))

* Merge pull request #83 from easingthemes/feature/#82-update-node-version ([76660a8](76660a8456)), closes [#83](https://github.com/easingthemes/ssh-deploy/issues/83) [easingthemes/feature/#82](https://github.com/easingthemes/feature//issues/82)

### BREAKING CHANGES

* update to use nodeJS v16
2022-10-28 02:03:03 +00:00
Dragan Filipović
2de13b41b4
Merge pull request #84 from easingthemes/feature/#82-update-node-version
fix: plugins versions
2022-10-28 04:02:32 +02:00
Dragan Filipovic
2f40dde84f fix: plugins versions 2022-10-28 04:01:24 +02:00
Dragan Filipović
76660a8456
Merge pull request #83 from easingthemes/feature/#82-update-node-version
BREAKING CHANGE: update to use nodeJS v16
2022-10-28 03:48:26 +02:00
Dragan Filipovic
12adb9b839 BREAKING CHANGE: update to use nodeJS v16
Since it's used in Github environment it should not have any impact in usage.
Just in case major version updated.

Fixes #82
2022-10-28 03:44:28 +02:00
github-actions
c711f2c339 chore(release): 2.2.11 [skip ci]
## [2.2.11](https://github.com/easingthemes/ssh-deploy/compare/v2.2.10...v2.2.11) (2021-05-28)

### Bug Fixes

* remove change npm to public ([3c36af7](3c36af7577))
2021-05-28 00:23:46 +00:00
Dragan Filipović
824072bc5a
Merge pull request #60 from easingthemes/feature/package-json-automation-6
fix: remove change npm to public
2021-05-28 02:22:56 +02:00
Dragan Filipovic
3c36af7577 fix: remove change npm to public 2021-05-28 02:22:36 +02:00
github-actions
649339f4bb chore(release): 2.2.10 [skip ci]
## [2.2.10](https://github.com/easingthemes/ssh-deploy/compare/v2.2.9...v2.2.10) (2021-05-27)

### Bug Fixes

* add assets to semantic-release git ([0867b12](0867b12954))
2021-05-27 23:24:30 +00:00
Dragan Filipović
66e6843055
Merge pull request #59 from easingthemes/feature/package-json-automation-5
fix: add assets to semantic-release git
2021-05-28 01:23:43 +02:00
Dragan Filipovic
0867b12954 fix: add assets to semantic-release git 2021-05-28 01:23:17 +02:00
github-actions
d71ce0f0b2 chore(release): 2.2.9 [skip ci]
## [2.2.9](https://github.com/easingthemes/ssh-deploy/compare/v2.2.8...v2.2.9) (2021-05-27)

### Bug Fixes

* change npm to public ([191c82d](191c82d9b4))
2021-05-27 22:38:16 +00:00
Dragan Filipović
382db98e53
Merge pull request #58 from easingthemes/feature/package-json-automation-4
fix: change npm to public
2021-05-28 00:37:29 +02:00
Dragan Filipovic
191c82d9b4 fix: change npm to public 2021-05-28 00:37:06 +02:00
github-actions
5109c975e9 chore(release): 2.2.8 [skip ci]
## [2.2.8](https://github.com/easingthemes/ssh-deploy/compare/v2.2.7...v2.2.8) (2021-05-27)

### Bug Fixes

* update npm package name ([9c4e411](9c4e4119ad))
2021-05-27 22:33:51 +00:00
Dragan Filipović
76882263e5
Merge pull request #57 from easingthemes/feature/package-json-automation-3
fix: update npm package name
2021-05-28 00:33:13 +02:00
Dragan Filipovic
9c4e4119ad fix: update npm package name 2021-05-28 00:32:37 +02:00
github-actions
fbeaefca08 chore(release): 2.2.7 [skip ci]
## [2.2.7](https://github.com/easingthemes/ssh-deploy/compare/v2.2.6...v2.2.7) (2021-05-27)

### Bug Fixes

* minify dist ([87551c3](87551c3893))
2021-05-27 22:24:50 +00:00
Dragan Filipović
f04642c1f5
Merge pull request #56 from easingthemes/feature/package-json-automation-2
Feature/package json automation 2
2021-05-28 00:24:06 +02:00
Dragan Filipovic
fdf6057d5e ci: try package.json npm enabled 2021-05-28 00:23:28 +02:00
Dragan Filipovic
87551c3893 fix: minify dist 2021-05-28 00:23:04 +02:00
github-actions
83d848a9e4 chore(release): 2.2.6 [skip ci]
## [2.2.6](https://github.com/easingthemes/ssh-deploy/compare/v2.2.5...v2.2.6) (2021-05-27)

### Bug Fixes

* add NPM token ([2197bc6](2197bc60ef))
2021-05-27 22:02:20 +00:00
Dragan Filipović
9c02ed6208
Merge pull request #55 from easingthemes/feature/package-json-automation-1
fix: add NPM token
2021-05-28 00:01:28 +02:00
Dragan Filipovic
2197bc60ef fix: add NPM token 2021-05-27 23:57:27 +02:00
github-actions
eb4a19604b chore(release): 2.2.5 [skip ci]
## [2.2.5](https://github.com/easingthemes/ssh-deploy/compare/v2.2.4...v2.2.5) (2021-05-27)

### Bug Fixes

* semantic-release/npm update config ([40096bf](40096bf224))
2021-05-27 21:40:47 +00:00
Dragan Filipović
09342ca039
Merge pull request #54 from easingthemes/feature/package-json-automation
fix: semantic-release/npm update config
2021-05-27 23:40:02 +02:00
Dragan Filipovic
40096bf224 fix: semantic-release/npm update config 2021-05-27 23:39:43 +02:00
github-actions
4383250122 chore(release): 2.2.4 [skip ci]
## [2.2.4](https://github.com/easingthemes/ssh-deploy/compare/v2.2.3...v2.2.4) (2021-05-27)

### Bug Fixes

* add branch instead of a version in a readme ([8218c8e](8218c8ed95))
2021-05-27 21:35:25 +00:00
Dragan Filipović
142b71c9e1
Merge pull request #53 from easingthemes/feature/readme-update
fix: add branch instead of a version in a readme
2021-05-27 23:34:31 +02:00
Dragan Filipovic
8218c8ed95 fix: add branch instead of a version in a readme 2021-05-27 23:33:55 +02:00
github-actions
b75a6aac49 chore(release): 2.2.3 [skip ci]
## [2.2.3](https://github.com/easingthemes/ssh-deploy/compare/v2.2.2...v2.2.3) (2021-05-27)

### Bug Fixes

* codeql yaml syntax update ([87ad671](87ad6713b5))
2021-05-27 21:20:23 +00:00
Dragan Filipović
a0be71d296
Merge pull request #52 from easingthemes/feature/codeql-fix
fix: codeql yaml syntax update
2021-05-27 23:19:39 +02:00
Dragan Filipovic
87ad6713b5 fix: codeql yaml syntax update 2021-05-27 23:16:38 +02:00
github-actions
b12dcbe93c chore(release): 2.2.2 [skip ci]
## [2.2.2](https://github.com/easingthemes/ssh-deploy/compare/v2.2.1...v2.2.2) (2021-05-27)

### Bug Fixes

* codeql build ([5e456a4](5e456a475a))
2021-05-27 21:14:04 +00:00
Dragan Filipović
c984a47bf5
Merge pull request #51 from easingthemes/feature/codeql-fix
fix: codeql build
2021-05-27 23:13:23 +02:00
Dragan Filipovic
5e456a475a fix: codeql build 2021-05-27 23:12:03 +02:00
github-actions
a9eda89ad7 chore(release): 2.2.1 [skip ci]
## [2.2.1](https://github.com/easingthemes/ssh-deploy/compare/v2.2.0...v2.2.1) (2021-05-27)

### Bug Fixes

* add package json auto updates ([ce56d75](ce56d75fc1))
2021-05-27 21:08:10 +00:00
Dragan Filipović
3cfa1cdc25
Merge pull request #50 from easingthemes/feature/release-npm-update
fix: add package json auto updates
2021-05-27 23:07:30 +02:00
Dragan Filipovic
ce56d75fc1 fix: add package json auto updates 2021-05-27 23:06:40 +02:00
github-actions
74b3a2aba4 chore(release): 2.2.0 [skip ci]
# [2.2.0](https://github.com/easingthemes/ssh-deploy/compare/v2.1.7...v2.2.0) (2021-05-27)

### Bug Fixes

* only=prod package json ([95f4dc8](95f4dc8069))
* replace i with ci ([50d1f57](50d1f576f9))
* update ncc ([20a0cae](20a0cae1ae))
* update plugins ([b2adc00](b2adc00c92))
* update plugins ([a50a999](a50a999528))

### Features

* add semantic-release-action ([ac3c9b5](ac3c9b51d5))
2021-05-27 21:00:10 +00:00
Dragan Filipović
77bfc8c169
Merge pull request #49 from easingthemes/feature/release-ci-update
feat: add semantic-release-action
2021-05-27 22:59:32 +02:00
Dragan Filipovic
ac3c9b51d5 feat: add semantic-release-action 2021-05-27 22:56:27 +02:00
Dragan Filipović
a0be893c82
Merge pull request #48 from easingthemes/feature/dependencies-update
Feature/dependencies update
2021-05-27 22:38:28 +02:00
Dragan Filipovic
50d1f576f9 fix: replace i with ci 2021-05-27 22:08:42 +02:00
Dragan Filipovic
20a0cae1ae fix: update ncc 2021-05-27 22:04:06 +02:00
Dragan Filipovic
95f4dc8069 fix: only=prod package json 2021-05-27 22:03:15 +02:00
Dragan Filipovic
b2adc00c92 fix: update plugins 2021-05-27 21:51:19 +02:00
Dragan Filipovic
a50a999528 fix: update plugins 2021-05-27 21:51:10 +02:00
github-actions
1242867d7a 2.1.9 2021-04-16 23:24:55 +00:00
Dragan Filipovic
33648ba2ca CI - test tags 2021-04-17 01:03:01 +02:00
github-actions
40a3789c05 2.1.8 2021-04-16 22:56:33 +00:00
github-actions
7e2c0f29d6 2.1.7 2021-04-16 22:41:08 +00:00
Dragan Filipovic
e9c43c6900 CI - use ci instead of install 2021-04-17 00:39:39 +02:00
Dragan Filipovic
9ae3c340cb CI add git user data 2021-04-17 00:36:22 +02:00
Dragan Filipovic
386c8766a0 CI - split git commands 2021-04-17 00:28:36 +02:00
Dragan Filipovic
130901534a CI - typo fix 2021-04-17 00:24:54 +02:00
Dragan Filipovic
8b977327bb CI - split git commands 2021-04-17 00:22:34 +02:00
Dragan Filipović
880f3b6b88
Merge pull request #43 from easingthemes/feature/CI-add-tag-action
Feature/ci add tag action
2021-04-17 00:18:03 +02:00
Dragan Filipovic
ec4a00fe02 CI - typo fix 2021-04-17 00:17:27 +02:00
Dragan Filipovic
a04c641775 CI - add steps names 2021-04-17 00:12:22 +02:00
Dragan Filipovic
9483c83d88 CI fix input vars 2021-04-17 00:08:19 +02:00
Dragan Filipovic
e41d593e15 CI add actions for build and tag 2021-04-17 00:06:00 +02:00
Dragan Filipović
9ab3993555
Merge pull request #35 from easingthemes/feature/RSYNC-exclude-option
RSYNC use excludeFirst instead of exclude
2021-03-24 18:50:40 +01:00
Dragan Filipovic
07265c8c95 RSYNC use excludeFirst instead of exclude 2021-03-24 18:48:12 +01:00
Dragan Filipović
a27b8667de
Merge pull request #32 from peterkracik/master
Exclude folder parameter
2021-03-15 09:54:06 +01:00
Peter Kracik
2b38f7bf7a Added exclude parameter 2021-03-12 07:42:12 +01:00
Peter Kracik
cd3b869a28
Update action.yml 2021-03-12 07:26:41 +01:00
Dragan Filipovic
191986574c [DOCS] Readme update 2020-09-18 23:35:33 +02:00
Dragan Filipovic
d41b136666 [BUILD] rebuild 2020-09-18 23:31:43 +02:00
Dragan Filipovic
1ac1bcb558 [VERSION] version bump 2020-09-18 23:31:31 +02:00
Dragan Filipovic
c14eb85faf [DOCS] Readme update 2020-09-18 23:29:28 +02:00
Dragan Filipovic
2bc5e10d4d [Formatting] formatting updates 2020-09-18 23:26:31 +02:00
Dragan Filipović
4f928a3efc
Merge pull request #15 from easingthemes/dependabot/npm_and_yarn/lodash-4.17.19
Bump lodash from 4.17.15 to 4.17.19
2020-08-16 22:52:37 +02:00
dependabot[bot]
aac4cbf0db
Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-21 08:46:30 +00:00
Dragan Filipovic
4042d3876f [build] update package lock 2020-07-01 01:01:48 +02:00
Dragan Filipovic
68f9da66f0 [version] prepare rc.1 2020-07-01 00:56:10 +02:00
Dragan Filipovic
073bd0b6f6 [build] rebuild 2020-07-01 00:54:42 +02:00
Dragan Filipovic
14eb503e62 [action] get input vars from ENV or WITH workflow settings 2020-07-01 00:54:24 +02:00
Dragan Filipovic
a9e37f3cb5 [version] increase version 2020-07-01 00:20:13 +02:00
Dragan Filipović
ff615959b6
Merge pull request #11 from aperezdc/master
action.yml: Add mising declaration for the ARGS parameter
2020-07-01 00:17:59 +02:00
Adrian Perez de Castro
5c4b90e3f8
action.yml: Add mising declaration for the ARGS parameter 2020-06-30 23:03:20 +03:00
Dragan Filipović
66b3ffb0f7
Merge pull request #10 from easingthemes/9-Readme-update-ssh-keys
#9 Add link to more info about SSH keys
2020-06-29 21:10:59 +02:00
Dragan Filipovic
037d157977 #9 Add link to more info about SSH keys 2020-06-29 21:09:04 +02:00
Dragan Filipović
e34308df6c
Merge pull request #6 from perlun/patch-1
README.md: fix typo
2020-06-15 22:03:58 +02:00
Per Lundberg
ad838db71f
README.md: fix typo 2020-06-06 23:36:28 +03:00
Dragan Filipovic
7f1c0e0111 [docs] Update version naming 2020-04-11 23:20:56 +02:00
Dragan Filipovic
54f2361d27 [docs] Update readme 2020-04-11 23:08:36 +02:00
Dragan Filipovic
101b6c13a0 [code] hotfix dist 2020-04-11 17:44:56 +02:00
Dragan Filipovic
ac4f0895a6 [code] hotfix 2020-04-11 17:42:37 +02:00
Dragan Filipović
0711330570
Merge pull request #5 from easingthemes/feature/SSH-DEPLOY-refactor
Feature/ssh deploy refactor
2020-04-11 17:25:18 +02:00
Dragan Filipovic
62063532be Merge branch 'master' into feature/SSH-DEPLOY-refactor
# Conflicts:
#	.gitignore
#	README.md
#	dist/index.js
#	src/index.js
2020-04-11 16:54:21 +02:00
Dragan Filipović
1a29114d7b
Merge pull request #4 from GarryOne/patch-1
Improved error handling. Added to README.md PM key generation details
2020-04-11 16:40:33 +02:00
Dragan Filipovic
e23436526e [readme] update Readme 2020-04-11 16:33:22 +02:00
Dragan Filipovic
bf3218eb12 [readme] update Readme 2020-04-11 16:30:28 +02:00
Dragan Filipovic
7269cb396a [dist] rebuild 2020-04-11 16:30:11 +02:00
Dragan Filipovic
460751d7c3 [code] split helpers into separate files 2020-04-11 16:29:20 +02:00
Dragan Filipovic
9cdc72374b [action] add required params 2020-04-11 16:27:09 +02:00
Dragan Filipovic
19689edd76 [tests] add editorconfig and eslint 2020-04-11 16:26:19 +02:00
Mardari Igor
53c00dce2b
Update README.md 2020-04-11 13:11:34 +03:00
GarryOne
140e959df8 Added key generation details to README.md 2020-03-27 01:17:37 +02:00
GarryOne
00e4d7e856 Added cmd to rsync error output 2020-03-27 01:10:01 +02:00
GarryOne
37e21b5b6b Added error display for rsync 2020-03-27 00:05:33 +02:00
GarryOne
19dbe22d4f Removed console.log 2020-03-26 23:47:55 +02:00
GarryOne
733f9fc153 Added console.log(process.env) 2020-03-26 23:27:22 +02:00
GarryOne
749cc36d5d Added .idea to .gitignore 2020-03-25 05:33:08 +02:00
GarryOne
f09a8d0277 Removed console.log() 2020-03-25 05:28:27 +02:00
GarryOne
82ccbba7dc Added field key to validation message 2020-03-25 05:20:29 +02:00
GarryOne
ff832e4e77 Built src/index.js 2020-03-25 05:08:01 +02:00
Mardari Igor
3f84fa4ae1
Set ssh to false 2020-03-25 04:50:26 +02:00
Dragan Filipović
c28aa7215e
Merge pull request #3 from JZLeung/patch-1
fix: 修复 ARGS 为空时导致 rsync 执行错误问题。
2020-03-24 00:04:15 +01:00
Leung-JZ
caaa95b651
fix: 修复 ARGS 为空时导致 rsync 执行错误问题。
由于 ARGS 非必填,当其为空时,报错:

⚠️ An error happened:(. Cannot read property 'match' of undefined TypeError: Cannot read property 'match' of undefined
2020-03-12 09:16:23 +08:00
Dragan Filipović
d86da2b0b7
Merge pull request #2 from Triloworld/patch-1
Update README.md - version bump
2020-01-09 22:21:19 +01:00
Dragan Filipović
445db7826b
Merge pull request #1 from fmal/feat/remote-port
add optional `REMOTE_PORT` env to configuration
2020-01-09 22:19:49 +01:00
Patryk Padus
4a2dc47c39
Update README.md
It is required as node10 isn't supported and generate error

Download action repository 'easingthemes/ssh-deploy@v2.0.2'
##[error]Specified argument was out of the range of valid values. (Parameter ''using: node10' is not supported, use 'docker' or 'node12' instead.')
##[error]Fail to load /home/runner/work/_actions/easingthemes/ssh-deploy/v2.0.2/action.yml
2020-01-08 15:41:02 +01:00
Filip Malinowski
0d77a6681b add optional REMOTE_PORT env to configuration 2019-12-29 18:17:28 +01:00
Dragan Filipovic
a3d2df0501 [version] Add author 2019-10-03 01:17:24 +02:00
Dragan Filipovic
7d63f7f134 [version] Description update 2019-10-03 01:07:28 +02:00
Dragan Filipovic
5fdc019220 [version] version bump 2019-10-03 00:52:55 +02:00
Dragan Filipovic
177ffc3a2a [version] Readme update 2019-10-03 00:51:32 +02:00
Dragan Filipovic
b5d54bf446 [action] fix node version 2019-10-03 00:24:52 +02:00
Dragan Filipovic
a20c19a8d1 [version] Readme update 2019-10-03 00:17:19 +02:00
Dragan Filipovic
4bf88310d4 [engine] use NodeJS instead of Docker 2019-10-02 23:58:26 +02:00
Dragan Filipovic
81256f2671 [engine] use NodeJS instead of Docker 2019-10-02 23:52:52 +02:00
Dragan Filipovic
3c2d851430 [ci] remove already available cli 2019-10-01 00:23:18 +02:00
28 changed files with 5096 additions and 73 deletions

11
.editorconfig Normal file
View file

@ -0,0 +1,11 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
max_line_length = 120
tab_width = 4
trim_trailing_whitespace = true

25
.eslintrc.js Normal file
View file

@ -0,0 +1,25 @@
module.exports = {
env: {
commonjs: true,
es6: true,
node: true
},
extends: [
'airbnb-base'
],
globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly'
},
parserOptions: {
ecmaVersion: 2018
},
rules: {
'comma-dangle': [
'error',
'never'
],
'no-console': 'off',
'object-curly-newline': 'off'
}
};

31
.github/workflows/build.yml vendored Normal file
View file

@ -0,0 +1,31 @@
name: Build
on:
push:
branches: [ '**' ]
pull_request:
branches: [ $default-branch ]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
node-version: [20.x]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm ci
- name: Build Library
run: npm run build
- name: Run Tests
run: npm test --if-present

47
.github/workflows/codeql-analysis.yml vendored Normal file
View file

@ -0,0 +1,47 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ main ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
schedule:
- cron: '20 12 * * 0'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
steps:
- name: Checkout
uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
- run: |
npm ci
npm run build --if-present
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3

104
.github/workflows/e2e-manual.yml vendored Normal file
View file

@ -0,0 +1,104 @@
name: e2e Manual Test
on:
workflow_dispatch:
inputs:
ARGS:
description: 'ARGS'
required: true
default: '-rlgoDzvc -i --delete --chmod=ugo+rwX --progress'
EXCLUDE:
description: 'EXCLUDE'
required: true
default: 'skip_dir/, /node_modules/'
SSH_CMD_ARGS:
description: 'SSH_CMD_ARGS'
required: true
default: '-o StrictHostKeyChecking=no, -o UserKnownHostsFile=/dev/null'
env:
TEST_HOST_DOCKER: ./test
TEST_USER: test
jobs:
e2e-manual:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# ----------------------------------------------------------------
# START E2E Test Specific - steps
# ----------------------------------------------------------------
- name: E2E Test Specific - Clean up old test files
run: |
docker stop ssh-host-container || true && docker rm ssh-host-container || true
- name: E2E Test Specific - Create ssh keys
run: |
echo $HOME
ls -la $HOME
ssh-keygen -m PEM -t rsa -b 4096 -f "$HOME/.ssh/id_rsa" -N ""
eval `ssh-agent -s`
ssh-add "$HOME/.ssh/id_rsa"
ssh-add -l
echo "SSH_PRIVATE_KEY<<EOF" >> $GITHUB_ENV
cat $HOME/.ssh/id_rsa >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: E2E Test Specific - Build Host Server Image
working-directory: ${{ env.TEST_HOST_DOCKER }}
run: |
docker build \
-t ssh-host-image . \
--build-arg SSH_PUB_KEY="$(cat $HOME/.ssh/id_rsa.pub)"
docker run -d -p 8822:22 --name=ssh-host-container ssh-host-image
docker exec ssh-host-container sh -c "hostname --ip-address" > ip.txt
echo "REMOTE_HOST<<EOF" >> $GITHUB_ENV
cat ip.txt >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
shell: bash
- name: E2E Test Specific - Create project file
run: |
mkdir test_project2 && cd "$_"
truncate -s 5MB info2.txt
cd ../
mkdir test_project && cd "$_"
touch index.html
date +"%Y-%m-%d %H:%M:%S,%3N" >> index.html
truncate -s 50MB image.svg
truncate -s 5MB info.txt
truncate -s 500MB big_file.txt
mkdir skip_dir && cd "$_"
truncate -s 5MB text_in_skip_dir.txt
cd ../
cat index.html
echo "test_project:" && ls -lR
echo "skip_dir:" && ls -lR skip_dir
# ----------------------------------------------------------------
# END E2E Test Specific - steps
# ----------------------------------------------------------------
- name: e2e Test ssh-deploy action
uses: easingthemes/ssh-deploy@main
env:
# ENV Vars created in previous steps:
# SSH_PRIVATE_KEY: $EXAMPLE_SSH_PRIVATE_KEY
# REMOTE_HOST: $EXAMPLE_REMOTE_HOST
REMOTE_USER: ${{ env.TEST_USER }}
ARGS: ${{ github.event.inputs.ARGS }}
SSH_CMD_ARGS: ${{ github.event.inputs.SSH_CMD_ARGS }}
SOURCE: test_project/ test_project2/
TARGET: /var/www/html/
EXCLUDE: ${{ github.event.inputs.EXCLUDE }}
SCRIPT_BEFORE: |
whoami
ls -lR /var/www/html/
SCRIPT_AFTER: |
ls -lR /var/www/html/
echo $RSYNC_STDOUT

179
.github/workflows/e2e.yml vendored Normal file
View file

@ -0,0 +1,179 @@
name: e2e Test
on:
push:
branches: [ 'main' ]
env:
TEST_HOST_DOCKER: ./test
TEST_USER: test
TEST_USER2: test2
jobs:
e2e:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# : ---------------------------------------------------------------
# : START E2E Test Specific - steps
# : ----------------------------------------------------------------
- name: E2E Test Specific - Clean up old test files
run: |
docker stop ssh-host-container || true && docker rm ssh-host-container || true
- name: E2E Test Specific - Create ssh keys
run: |
echo $HOME
ls -la $HOME
ssh-keygen -m PEM -t rsa -b 4096 -f "$HOME/.ssh/id_rsa" -N ""
eval `ssh-agent -s`
ssh-add "$HOME/.ssh/id_rsa"
ssh-add -l
echo "SSH_PRIVATE_KEY<<EOF" >> $GITHUB_ENV
cat $HOME/.ssh/id_rsa >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: E2E Test Specific - Build Host Server Image
working-directory: ${{ env.TEST_HOST_DOCKER }}
run: |
docker build \
-t ssh-host-image . \
--build-arg SSH_PUB_KEY="$(cat $HOME/.ssh/id_rsa.pub)"
docker run -d -p 8822:22 --name=ssh-host-container ssh-host-image
docker exec ssh-host-container sh -c "hostname --ip-address" > ip.txt
echo "REMOTE_HOST<<EOF" >> $GITHUB_ENV
cat ip.txt >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
shell: bash
- name: E2E Test Specific - Create project file
run: |
mkdir test_project2 && cd "$_"
truncate -s 5MB info2.txt
cd ../
mkdir test_project && cd "$_"
touch index.html
date +"%Y-%m-%d %H:%M:%S,%3N" >> index.html
truncate -s 50MB image.svg
truncate -s 5MB info.txt
truncate -s 500MB big_file.txt
mkdir skip_dir && cd "$_"
truncate -s 5MB text_in_skip_dir.txt
cd ../
cat index.html
echo "test_project:" && ls -lR
echo "skip_dir:" && ls -lR skip_dir
# ----------------------------------------------------------------
# END E2E Test Specific - steps
# ----------------------------------------------------------------
- name: set shared ENV variables for multi target deployment
run: |
echo "ARGS=-rlgoDzvcR -i --delete --chmod=ugo+rwX --progress" >> $GITHUB_ENV
echo "SSH_CMD_ARGS=-o StrictHostKeyChecking=no, -o UserKnownHostsFile=/dev/null" >> $GITHUB_ENV
echo "SOURCE=test_project/ test_project2/" >> $GITHUB_ENV
echo "EXCLUDE=skip_dir/, /node_modules/" >> $GITHUB_ENV
echo "SCRIPT_BEFORE<<EOF" >> $GITHUB_ENV
echo "whoami" >> $GITHUB_ENV
echo "ls -lR /var/www/html/" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
echo "SCRIPT_AFTER<<EOF" >> $GITHUB_ENV
echo $RSYNC_STDOUT >> $GITHUB_ENV
echo "ls -lR /var/www/html/" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: e2e Test ssh-deploy action - Target 1
uses: easingthemes/ssh-deploy@main
env:
# Shared ENV Vars created in previous steps
REMOTE_USER: ${{ env.TEST_USER }}
TARGET: /var/www/html/${{ env.TEST_USER }}
- name: e2e Test ssh-deploy action - Target 2
uses: easingthemes/ssh-deploy@main
env:
# Shared ENV Vars created in previous steps
REMOTE_USER: ${{ env.TEST_USER2 }}
TARGET: /var/www/html/${{ env.TEST_USER2 }}
- name: e2e Test ssh-deploy action - Default values
uses: easingthemes/ssh-deploy@main
env:
# Shared ENV Vars created in previous steps
REMOTE_USER: ${{ env.TEST_USER }}
e2e-v3:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# : ---------------------------------------------------------------
# : START E2E Test Specific - steps
# : ----------------------------------------------------------------
- name: E2E Test Specific - Clean up old test files
run: |
docker stop ssh-host-container || true && docker rm ssh-host-container || true
- name: E2E Test Specific - Create ssh keys
run: |
echo $HOME
ls -la $HOME
ssh-keygen -m PEM -t rsa -b 4096 -f "$HOME/.ssh/id_rsa" -N ""
eval `ssh-agent -s`
ssh-add "$HOME/.ssh/id_rsa"
ssh-add -l
echo "SSH_PRIVATE_KEY<<EOF" >> $GITHUB_ENV
cat $HOME/.ssh/id_rsa >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: E2E Test Specific - Build Host Server Image
working-directory: ${{ env.TEST_HOST_DOCKER }}
run: |
docker build \
-t ssh-host-image . \
--build-arg SSH_PUB_KEY="$(cat $HOME/.ssh/id_rsa.pub)"
docker run -d -p 8822:22 --name=ssh-host-container ssh-host-image
docker exec ssh-host-container sh -c "hostname --ip-address" > ip.txt
echo "REMOTE_HOST<<EOF" >> $GITHUB_ENV
cat ip.txt >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
shell: bash
- name: E2E Test Specific - Create project file
run: |
mkdir test_project2 && cd "$_"
truncate -s 5MB info2.txt
cd ../
mkdir test_project && cd "$_"
touch index.html
date +"%Y-%m-%d %H:%M:%S,%3N" >> index.html
truncate -s 50MB image.svg
truncate -s 5MB info.txt
truncate -s 500MB big_file.txt
mkdir skip_dir && cd "$_"
truncate -s 5MB text_in_skip_dir.txt
cd ../
cat index.html
echo "test_project:" && ls -lR
echo "skip_dir:" && ls -lR skip_dir
# ----------------------------------------------------------------
# END E2E Test Specific - steps
# ----------------------------------------------------------------
- name: e2e Test ssh-deploy action - Target 1
uses: easingthemes/ssh-deploy@main
env:
# Shared ENV Vars created in previous steps
REMOTE_USER: ${{ env.TEST_USER }}
TARGET: /var/www/html/${{ env.TEST_USER }}
SOURCE: test_project/
EXCLUDE: skip_dir/, /node_modules/
ARGS: -rlgoDzvcO

72
.github/workflows/manual-release.yml vendored Normal file
View file

@ -0,0 +1,72 @@
name: Manual Release
on:
workflow_dispatch:
inputs:
version:
description: 'Version'
type: choice
required: true
default: fix
options:
- fix
- feat
dryRun:
description: 'DryRun'
type: boolean
default: true
# ENV and Config
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
GIT_AUTHOR_NAME: github-actions
GIT_AUTHOR_EMAIL: github-actions@github.com
GIT_COMMITTER_NAME: github-actions
GIT_COMMITTER_EMAIL: github-actions@github.com
CI: true
CONFIG_NODE_VERSION: '["lts/*"]'
CONFIG_OS: '["ubuntu-latest"]'
# Main Job
jobs:
config:
runs-on: ubuntu-latest
outputs:
NODE_VERSION: ${{ steps.set-config.outputs.CONFIG_NODE_VERSION }}
OS: ${{ steps.set-config.outputs.CONFIG_OS }}
steps:
- id: set-config
run: |
echo "CONFIG_NODE_VERSION=${{ toJSON(env.CONFIG_NODE_VERSION) }}" >> $GITHUB_OUTPUT
echo "CONFIG_OS=${{ toJSON(env.CONFIG_OS) }}" >> $GITHUB_OUTPUT
release-manual:
name: Test, Build and force Release
needs: config
runs-on: ${{ matrix.OS }}
strategy:
matrix:
OS: ${{ fromJSON(needs.config.outputs.OS) }}
NODE_VERSION: ${{ fromJSON(needs.config.outputs.NODE_VERSION) }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.NODE_VERSION }}
- name: Commit trigger
run: |
git commit --allow-empty -m "${{ github.event.inputs.version }}: Trigger Manual Release"
- name: Install dependencies
run: npm ci
- name: Build Library
run: npm run build --if-present
- name: Run Tests
run: npm test --if-present
- name: Create a release - ${{ github.event.inputs.version }}
uses: cycjimmy/semantic-release-action@v4
with:
dry_run: ${{ github.event.inputs.dryRun == 'true' }}
extra_plugins: |
@semantic-release/changelog
@semantic-release/git

44
.github/workflows/release.yml vendored Normal file
View file

@ -0,0 +1,44 @@
name: Release
on:
push:
branches:
- main
jobs:
release:
name: Test, Build and Release
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest ]
node-version: [ 20.x ]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix['node-version'] }}
- name: Install dependencies
run: npm ci
- name: Build Library
run: npm run build --if-present
- name: Run Tests
run: npm test --if-present
- name: Release
uses: cycjimmy/semantic-release-action@v4
with:
dry_run: false
extra_plugins: |
@semantic-release/changelog
@semantic-release/git
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
GIT_AUTHOR_NAME: github-actions
GIT_AUTHOR_EMAIL: github-actions@github.com
GIT_COMMITTER_NAME: github-actions
GIT_COMMITTER_EMAIL: github-actions@github.com
CI: true

26
.github/workflows/stale.yml vendored Normal file
View file

@ -0,0 +1,26 @@
# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time.
#
# You can adjust the behavior by modifying this file.
# For more information, see:
# https://github.com/actions/stale
name: Close stale issues
on:
schedule:
- cron: '30 1 * * *'
jobs:
stale:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- uses: actions/stale@v9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
days-before-stale: 90
days-before-close: 15
stale-issue-label: 'stale'

22
.gitignore vendored Normal file
View file

@ -0,0 +1,22 @@
### Node template
# Logs
logs
*.log
npm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Dependency directories
node_modules/
# Optional npm cache directory
.npm
# dotenv environment variables file
.env
.env.test
# IDE
.idea
.vscode

22
.releaserc Normal file
View file

@ -0,0 +1,22 @@
{
"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
[
"@semantic-release/changelog",
{
"changelogFile": "docs/CHANGELOG.md"
}
],
["@semantic-release/npm", {
"npmPublish": false
}],
[
"@semantic-release/git",
{
"assets": ["docs/CHANGELOG.md", "package.json"]
}
]
]
}

View file

@ -1,22 +0,0 @@
FROM debian:9.5-slim
# Update
RUN apt-get update
# Install packages
RUN apt-get -yq install rsync openssh-client
# Label
LABEL "com.github.actions.name"="ssh deploy"
LABEL "com.github.actions.description"="For deploying code over ssh"
LABEL "com.github.actions.icon"="truck"
LABEL "com.github.actions.color"="green"
LABEL "repository"="http://github.com/easingthemes/ssh-deploy"
LABEL "homepage"="https://github.com/easingthemes/ssh-deploy"
LABEL "maintainer"="Dragan Filipovic <info@frontenddot.com>"
# Copy entrypoint
ADD entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

180
README.md
View file

@ -1,37 +1,116 @@
# ssh deployments
This GitHub Action deploys specific directory from `GITHUB_WORKSPACE` to a folder on a server via rsync over ssh.
Deploy code with rsync over ssh.
Execute remote scripts before or after rsync
NodeJS version is more than a minute `faster` than simple Docker version.
This GitHub Action deploys specific directory from `GITHUB_WORKSPACE` to a folder on a server via rsync over ssh, using NodeJS.
This action would usually follow a build/test action which leaves deployable code in `GITHUB_WORKSPACE`, eg `dist`;
In addition to rsync, this action provides scripts execution on remote host before and/or after rsync.
# Configuration
Pass configuration with `env` vars
1. `DEPLOY_KEY`
This should be the private key part of an ssh key pair. The public key part should be added to the authorized_keys file on the server that receives the deployment.
##### 1. `SSH_PRIVATE_KEY` [required]
Private key part of an SSH key pair.
The public key part should be added to the `authorized_keys` file on the server that receives the deployment.
More info for SSH keys: https://www.ssh.com/ssh/public-key-authentication
The keys should be generated using the PEM format. You can use this command
```
ssh-keygen -m PEM -t rsa -b 4096
```
**Please Note:** You should not set a Passphrase (keep it empty) for the private key you generated.
Because rsync ssh (used for deploy) does not support private key password to be entered as a command line parameter.
##### 2. `REMOTE_HOST` [required]
eg: mydomain.com
##### 3. `REMOTE_USER` [required]
eg: myusername
##### 4. `REMOTE_PORT` (optional, default '22')
eg: '59184'
##### 5. `ARGS` (optional, default '-rlgoDzvc -i')
2. `ARGS`
For any initial/required rsync flags, eg: `-avzr --delete`
3. `SOURCE`
The source directory, path relative to `$GITHUB_WORKSPACE` root, eg: `dist`
##### 6. `SOURCE` (optional, default '')
4. `TARGET`
The target directory, in the format`[USER]@[HOST]:[PATH]`
The source directory, path relative to `$GITHUB_WORKSPACE` root, eg: `dist/`.
Multiple sources should be separated by space.
##### 7. `TARGET` (optional, default '/home/REMOTE_USER/')
The target directory
##### 8. `EXCLUDE` (optional, default '')
path to exclude separated by `,`, ie: `/dist/, /node_modules/`
##### 9. `SCRIPT_BEFORE` (optional, default '')
Script to run on host machine before rsync. Single line or multiline commands.
Execution is preformed by storing commands in `.sh` file and executing it via `.bash` over `ssh`
If you have issues with `ssh` connection, use this var, eg `SCRIPT_BEFORE: ls`.
This will force `known_hosts` update, adding your host via `ssh-keyscan`.
##### 10. `SCRIPT_BEFORE_REQUIRED` (optional, default false)
If set to `true`, Job will fail if SCRIPT_BEFORE fails.
##### 11. `SCRIPT_AFTER` (optional, default '')
Script to run on host machine after rsync.
Rsync output is stored in `$RSYNC_STDOUT` env variable.
##### 12. `SCRIPT_AFTER_REQUIRED` (optional, default false)
If set to `true`, Job will fail if SCRIPT_AFTER fails.
##### 13. `SSH_CMD_ARGS` (optional, default '-o StrictHostKeyChecking=no')
A list of ssh arguments, they must be prefixed with -o and separated by a comma, for example: -o SomeArgument=no, -o SomeOtherArgument=5
# Usage
Use the latest version from Marketplace,eg: ssh-deploy@v5.1.0
or use the latest version from a branch, eg: ssh-deploy@main
```
- name: Deploy to Staging server
uses: easingthemes/ssh-deploy@v1.0.0
env:
DEPLOY_KEY: ${{ secrets.SERVER_SSH_KEY }}
ARGS: "-rltgoDzvO --delete"
SOURCE: "dist"
TARGET: ${{ secrets.SERVER_STAGING }}
uses: easingthemes/ssh-deploy@main
with:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
ARGS: "-rlgoDzvc -i"
SOURCE: "dist/"
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: ${{ secrets.REMOTE_TARGET }}
EXCLUDE: "/dist/, /node_modules/"
SCRIPT_BEFORE: |
whoami
ls -al
SCRIPT_AFTER: |
whoami
ls -al
echo $RSYNC_STDOUT
```
# Example usage
# Example usage in workflow
```
name: Node CI
@ -43,33 +122,60 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [10.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
- uses: actions/checkout@v3
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
node-version: '16.x'
- name: Install npm dependencies
run: |
npm install
run: npm install
- name: Run build task
run: |
npm run build --if-present
- name: Deploy to Staging server
uses: easingthemes/ssh-deploy@v1.0.0
env:
DEPLOY_KEY: ${{ secrets.SERVER_SSH_KEY }}
ARGS: "-rltgoDzvO --delete"
SOURCE: "dist"
TARGET: ${{ secrets.SERVER_STAGING }}
run: npm run build --if-present
- name: Deploy to Server
uses: easingthemes/ssh-deploy@main
with:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
ARGS: "-rlgoDzvc -i --delete"
SOURCE: "dist/"
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: ${{ secrets.REMOTE_TARGET }}
EXCLUDE: "/dist/, /node_modules/"
```
## Issues
This is a GitHub Action wrapping `rsync` via `ssh`. Only issues with action functionality can be fixed here.
Almost 95% of the issues are related to wrong SSH connection or `rsync` params and permissions.
These issues are not related to the action itself.
- Check manually your ssh connection from your client before opening a bug report.
- Check `rsync` params for your use-case. Default params are not necessarily going to be enough for everyone, it highly depends on your setup.
- Check manually your rsync command from your client before opening a bug report.
- `Deployment Failed, Permission denied (publickey,password)`: This issue occures in some cases, it is related to OS and ssh. This action can only provide a workaround:
- Use `SCRIPT_BEFORE` param, eg `SCRIPT_BEFORE: ls`. This will force `known_hosts` update, adding your host via `ssh-keyscan`.
- Or manually add public key to authorized_keys and add a new line to a private key.
I've added e2e test for this action.
Real example is executed on every PR merge to `main`.
Check actions tab for example.
When opening an issue, please add example of your step with env vars. You can add dummy values.
More info for SSH keys: https://www.ssh.com/ssh/public-key-authentication
## Tips
- Optional ENV variables are created for simple requirements.
For complex use cases, use `ARGS` and `SSH_CMD_ARGS` to fully configure `rsync` with all possible options.
- If you need to use multiple steps, eg multi targets deployment, save shared ENV variables in `>> $GITHUB_ENV`.
Check .github/workflows/e2e.yml for an example
- For multi sources, use -R ARG to manipulate folders structure.
- Great post about `rsync` options specific to usage of this action: https://logansnotes.com/2020/gh-action-site-deploy/
## Disclaimer
If you're using GitHub Actions, you'll probably already know that it's still in limited public beta, and GitHub advise against using Actions in production.
So, check your keys. Check your deployment paths. And use at your own risk.
Check your keys. Check your deployment paths. And use at your own risk.

62
action.yml Normal file
View file

@ -0,0 +1,62 @@
name: "ssh deploy"
description: "NodeJS action for FAST deployment with rsync/ssh and remote script execution before/after rsync"
author: "easingthemes"
inputs:
SSH_PRIVATE_KEY:
description: "Private key part of an SSH key pair"
required: true
REMOTE_HOST:
description: "Remote host"
required: true
REMOTE_USER:
description: "Remote user"
required: true
REMOTE_PORT:
description: "Remote port"
required: false
default: "22"
SOURCE:
description: "Source directory, path relative to `$GITHUB_WORKSPACE` root, eg: `dist/`"
required: false
default: ""
TARGET:
description: "Target directory"
required: false
default: ""
ARGS:
description: "Arguments to pass to rsync"
required: false
default: "-rlgoDzvc -i"
SSH_CMD_ARGS:
description: "An array of ssh arguments, they must be prefixed with -o and separated by a comma, for example: -o SomeArgument=no, -o SomeOtherArgument=5 "
required: false
default: "-o StrictHostKeyChecking=no"
EXCLUDE:
description: "paths to exclude separated by `,`, ie: `/dist/, /node_modules/`"
required: false
default: ""
SCRIPT_BEFORE:
description: "Script to run on host machine before rsync"
required: false
default: ""
SCRIPT_BEFORE_REQUIRED:
description: "If not an empty string, the action will fail if the before script fails. Note: The string 'false' will be treated as true"
required: false
default: ""
SCRIPT_AFTER:
description: "Script to run on host machine after rsync"
required: false
default: ""
SCRIPT_AFTER_REQUIRED:
description: "If not an empty string, the action will fail if the after script fails. Note: The string 'false' will be treated as true"
required: false
default: ""
outputs:
status:
description: "Status"
runs:
using: "node20"
main: "dist/index.js"
branding:
color: "green"
icon: "truck"

2
dist/index.js vendored Executable file

File diff suppressed because one or more lines are too long

403
docs/CHANGELOG.md Normal file
View file

@ -0,0 +1,403 @@
## [5.1.1](https://github.com/easingthemes/ssh-deploy/compare/v5.1.0...v5.1.1) (2024-07-24)
### Bug Fixes
* Update README.md ([f007431](https://github.com/easingthemes/ssh-deploy/commit/f007431332cb2dae49153363ad22fb9f90f4aa75))
# [5.1.0](https://github.com/easingthemes/ssh-deploy/compare/v5.0.3...v5.1.0) (2024-07-24)
### Features
* Add deleteFile function to helpers module ([1befdb1](https://github.com/easingthemes/ssh-deploy/commit/1befdb1c6bf3282aa34e6caa431cb2da23d2b17d))
* apply deleteFile function to remoteCmd ([b82eced](https://github.com/easingthemes/ssh-deploy/commit/b82eced4571cb3f63369d51760a81820ffb1bc7f))
## [5.0.3](https://github.com/easingthemes/ssh-deploy/compare/v5.0.2...v5.0.3) (2024-02-27)
### Bug Fixes
* trigger automated release ([4d8bbf0](https://github.com/easingthemes/ssh-deploy/commit/4d8bbf0debaade9fb03b8dc3be3c020955557b12))
## [5.0.2](https://github.com/easingthemes/ssh-deploy/compare/v5.0.1...v5.0.2) (2024-02-18)
### Bug Fixes
* added the missing declarations [#177](https://github.com/easingthemes/ssh-deploy/issues/177) ([bb271fe](https://github.com/easingthemes/ssh-deploy/commit/bb271fe4c69eeeacb986a38cdb3347104143c61f))
* Fix default values used incorrectly. ([a1b383f](https://github.com/easingthemes/ssh-deploy/commit/a1b383f560a7f52a65da3670e61efe6e02f8639a))
## [5.0.1](https://github.com/easingthemes/ssh-deploy/compare/v5.0.0...v5.0.1) (2024-01-31)
### Bug Fixes
* Add info for Permission denied issue. ([845b578](https://github.com/easingthemes/ssh-deploy/commit/845b578606c0c5a956c70caf61e00a7d2b13ee37))
# [5.0.0](https://github.com/easingthemes/ssh-deploy/compare/v4.1.10...v5.0.0) (2023-12-12)
* Merge pull request #173 from jeromelachaud/main ([ac1908e](https://github.com/easingthemes/ssh-deploy/commit/ac1908e5d2dc749496fdbe8a918aa073e3357d85)), closes [#173](https://github.com/easingthemes/ssh-deploy/issues/173)
### BREAKING CHANGES
* update to use nodeJS v20
* update to use nodeJS v20
## [4.1.10](https://github.com/easingthemes/ssh-deploy/compare/v4.1.9...v4.1.10) (2023-09-30)
### Bug Fixes
* normalize line endings in SSH key for the underlying OS ([3f5d9aa](https://github.com/easingthemes/ssh-deploy/commit/3f5d9aab1a743bd426a4d132d07f1f5e9ed0310c))
## [4.1.9](https://github.com/easingthemes/ssh-deploy/compare/v4.1.8...v4.1.9) (2023-09-24)
### Bug Fixes
* add compiled file ([627ac29](https://github.com/easingthemes/ssh-deploy/commit/627ac29ece9dc2f1185a50d1002bc2c968fc973c))
* add uuid for ssh scripts ([66f6e4b](https://github.com/easingthemes/ssh-deploy/commit/66f6e4b367ea39479c285234797a4e86c90d9abd))
## [4.1.8](https://github.com/easingthemes/ssh-deploy/compare/v4.1.7...v4.1.8) (2023-02-21)
### Bug Fixes
* rebuild and update readme ([98025d6](https://github.com/easingthemes/ssh-deploy/commit/98025d680e96a5c6c805e377a1b81de2f626aa1e))
## [4.1.7](https://github.com/easingthemes/ssh-deploy/compare/v4.1.6...v4.1.7) (2023-02-21)
### Bug Fixes
* [#120](https://github.com/easingthemes/ssh-deploy/issues/120) check undefined data ([2fbb060](https://github.com/easingthemes/ssh-deploy/commit/2fbb06015d1a6ffd32e0100aaf1a1a46949e990e))
## [4.1.6](https://github.com/easingthemes/ssh-deploy/compare/v4.1.5...v4.1.6) (2023-02-21)
### Bug Fixes
* [#118](https://github.com/easingthemes/ssh-deploy/issues/118) check undefined default values rebuild ([54f8b6c](https://github.com/easingthemes/ssh-deploy/commit/54f8b6c60b8f2f926d5ed9538557e5521a905d87))
## [4.1.5](https://github.com/easingthemes/ssh-deploy/compare/v4.1.4...v4.1.5) (2023-02-21)
### Bug Fixes
* [#118](https://github.com/easingthemes/ssh-deploy/issues/118) check undefined default values ([f0c02fb](https://github.com/easingthemes/ssh-deploy/commit/f0c02fb2a5b3b69bb91004dd49d409eb6adfe7cd))
## [4.1.4](https://github.com/easingthemes/ssh-deploy/compare/v4.1.3...v4.1.4) (2023-02-21)
### Bug Fixes
* [#113](https://github.com/easingthemes/ssh-deploy/issues/113) limit ssh script input ([5894f5e](https://github.com/easingthemes/ssh-deploy/commit/5894f5e29008feccaf42787330ec8f49f3ad50b0))
## [4.1.3](https://github.com/easingthemes/ssh-deploy/compare/v4.1.2...v4.1.3) (2023-02-21)
### Bug Fixes
* [#113](https://github.com/easingthemes/ssh-deploy/issues/113) limit ssh script output - rebuild ([756a522](https://github.com/easingthemes/ssh-deploy/commit/756a522533d2206203b5d13b5aa11c88b3313784))
## [4.1.2](https://github.com/easingthemes/ssh-deploy/compare/v4.1.1...v4.1.2) (2023-02-21)
### Bug Fixes
* [#113](https://github.com/easingthemes/ssh-deploy/issues/113) limit ssh script output ([59827af](https://github.com/easingthemes/ssh-deploy/commit/59827af83c934996efda72f9fbd1fcd0bb9ccaac))
## [4.1.1](https://github.com/easingthemes/ssh-deploy/compare/v4.1.0...v4.1.1) (2023-02-21)
### Bug Fixes
* fix default TARGET ([4d08634](https://github.com/easingthemes/ssh-deploy/commit/4d086346af62ac5d57fa37ee6bb46f8de8ad48c3))
# [4.1.0](https://github.com/easingthemes/ssh-deploy/compare/v4.0.5...v4.1.0) (2023-02-19)
### Features
* add ssh port from VARs, fix package-lock ([808b002](https://github.com/easingthemes/ssh-deploy/commit/808b0020d44b7c25ef1c13b3979ffdab4f503236))
## [4.0.5](https://github.com/easingthemes/ssh-deploy/compare/v4.0.4...v4.0.5) (2023-01-06)
### Bug Fixes
* fix manual release action ([245b7a9](https://github.com/easingthemes/ssh-deploy/commit/245b7a9d2fe5272ee34608f86a612d643694c23b))
## [4.0.4](https://github.com/easingthemes/ssh-deploy/compare/v4.0.3...v4.0.4) (2023-01-03)
### Bug Fixes
* update sub dependencies ([2a32c8d](https://github.com/easingthemes/ssh-deploy/commit/2a32c8dcde2d64394a3577decdd9c902f37a30f8))
## [4.0.3](https://github.com/easingthemes/ssh-deploy/compare/v4.0.2...v4.0.3) (2023-01-03)
### Bug Fixes
* update v3 e2e test ([450bf42](https://github.com/easingthemes/ssh-deploy/commit/450bf423f388777bde052ad7b5bc24eca392434d))
## [4.0.2](https://github.com/easingthemes/ssh-deploy/compare/v4.0.1...v4.0.2) (2023-01-03)
### Bug Fixes
* add githubWorkspace as default source root ([3ef66d0](https://github.com/easingthemes/ssh-deploy/commit/3ef66d0be999ee45434505e8bedea4f8b5b5a909))
## [4.0.1](https://github.com/easingthemes/ssh-deploy/compare/v4.0.0...v4.0.1) (2023-01-03)
### Bug Fixes
* fix default source if empty ([9f191f4](https://github.com/easingthemes/ssh-deploy/commit/9f191f42633c4a0f66054f0fc229c9e30a08f00c))
# [4.0.0](https://github.com/easingthemes/ssh-deploy/compare/v3.4.3...v4.0.0) (2023-01-03)
### Bug Fixes
* rebuild ([2169399](https://github.com/easingthemes/ssh-deploy/commit/2169399fef9a60a2fea1ab03cce4ec8c2371e5c2))
### Performance Improvements
* update default rsync options ([2be7efb](https://github.com/easingthemes/ssh-deploy/commit/2be7efb376866327c1d1209f51eb43f34f07b354))
### BREAKING CHANGES
* Default rsync options updated to speed up default deployments.
from `rltgoDzvO` to `-rlgoDzvc -i`
## [3.4.3](https://github.com/easingthemes/ssh-deploy/compare/v3.4.2...v3.4.3) (2023-01-03)
### Bug Fixes
* move e2e tests typo branch name ([6d3554b](https://github.com/easingthemes/ssh-deploy/commit/6d3554b01e9a05de9a9d2b30274bee411a4986ed))
## [3.4.2](https://github.com/easingthemes/ssh-deploy/compare/v3.4.1...v3.4.2) (2023-01-03)
### Bug Fixes
* Update changelog ([765f5ff](https://github.com/easingthemes/ssh-deploy/commit/765f5ffd3153c76442521c61c04656cafc182731))
## [3.4.1](https://github.com/easingthemes/ssh-deploy/compare/v3.4.0...v3.4.1) (2023-01-03)
### Bug Fixes
* move e2e tests to main branch ([0069fae](https://github.com/easingthemes/ssh-deploy/commit/0069faea9ff3ea3cdd095b0f2663c9e2bcd97480))
# [3.4.0](https://github.com/easingthemes/ssh-deploy/compare/v3.3.4...v3.4.0) (2023-01-03)
**Full Changelog**: https://github.com/easingthemes/ssh-deploy/compare/v3.1.0...v3.4.1
### Features
* Add SSH remote script support - before and after rsync ([2cd8a82](https://github.com/easingthemes/ssh-deploy/commit/2cd8a820e22135b7002fbe6a47cf33f99e2d337b))
* Add multi source and multi target support ([73a65ec](https://github.com/easingthemes/ssh-deploy/commit/73a65ec97c5046a53f6b4c40823be5fd3826ede0))
* Add SSH_CMD_ARGS support ([51a0063](https://github.com/easingthemes/ssh-deploy/commit/51a00631e2b91983fb610ca2157a673b9ae03c95))
* Add manual inputs for e2e test ([8f71595](https://github.com/easingthemes/ssh-deploy/commit/8f715957ab9283ab2934dd1e5be9d78f2eaf3fae))
### Bug Fixes
* Add visible Rsync CMD for debugging ([91b6d28](https://github.com/easingthemes/ssh-deploy/commit/91b6d280aee6a7ae666a11426fb356406f4a25a5))
* log buffer from rsync stdout ([8e19e0d](https://github.com/easingthemes/ssh-deploy/commit/8e19e0d6bc9b1c332925ce0268ad64b50728fae5))
* fix e2e yaml step name ([5c13615](https://github.com/easingthemes/ssh-deploy/commit/5c13615d4b7b0bda47f622ac5f4444484d8bcdb4))
## [3.3.4](https://github.com/easingthemes/ssh-deploy/compare/v3.3.3...v3.3.4) (2023-01-02)
### Bug Fixes
* Add visible Rsync CMD for debugging ([91b6d28](https://github.com/easingthemes/ssh-deploy/commit/91b6d280aee6a7ae666a11426fb356406f4a25a5))
## [3.3.3](https://github.com/easingthemes/ssh-deploy/compare/v3.3.2...v3.3.3) (2023-01-02)
### Bug Fixes
* log buffer from rsync stdout ([8e19e0d](https://github.com/easingthemes/ssh-deploy/commit/8e19e0d6bc9b1c332925ce0268ad64b50728fae5))
## [3.3.2](https://github.com/easingthemes/ssh-deploy/compare/v3.3.1...v3.3.2) (2023-01-02)
### Bug Fixes
* Add manual inputs for e2e test ([8f71595](https://github.com/easingthemes/ssh-deploy/commit/8f715957ab9283ab2934dd1e5be9d78f2eaf3fae))
## [3.3.1](https://github.com/easingthemes/ssh-deploy/compare/v3.3.0...v3.3.1) (2023-01-02)
### Bug Fixes
* Log rsync command ([85f4a96](https://github.com/easingthemes/ssh-deploy/commit/85f4a967435d7d44edf2fea628c9f59db5e890ee))
# [3.3.0](https://github.com/easingthemes/ssh-deploy/compare/v3.2.0...v3.3.0) (2023-01-02)
### Features
* Add SSH_CMD_ARGS support ([51a0063](https://github.com/easingthemes/ssh-deploy/commit/51a00631e2b91983fb610ca2157a673b9ae03c95))
# [3.2.0](https://github.com/easingthemes/ssh-deploy/pull/94/files) (2023-01-02)
### Features
* Add SSH remote script support - before and after rsync ([2cd8a82](https://github.com/easingthemes/ssh-deploy/pull/94/files))
* feat: add sshCmdArgs option
* feat: add onStderr and onStdout logs
* feat: Add RSYNC_STDOUT env variable
* feat: Update emojis
### Bug Fixes
* fix: remove _unsafe _dirname
* fix: Add promise instead of callback
* fix: improve logs
* fix: Add simple command exists instead of a plugin
* fix: add non interactive install
* fix: Improve reject messages
* fix: update workflow actions
## [3.1.1](https://github.com/easingthemes/ssh-deploy/compare/v3.1.0...v3.1.1) (2023-01-02)
### Bug Fixes
* use main branch for e2e testes ([21451fe](https://github.com/easingthemes/ssh-deploy/commit/21451fec978a02b55672490a2c11c6c17995ff95))
# [3.1.0](https://github.com/easingthemes/ssh-deploy/compare/v3.0.1...v3.1.0) (2022-12-31)
### Features
* add e2e tests ([40f855a](https://github.com/easingthemes/ssh-deploy/commit/40f855a08b4911c3f54b7a45306af355c6d87277))
## [3.0.1](https://github.com/easingthemes/ssh-deploy/compare/v3.0.0...v3.0.1) (2022-10-28)
### Bug Fixes
* readme update ([80a7f53](https://github.com/easingthemes/ssh-deploy/commit/80a7f53ec918930fd23f0524fec0b1d4f52183bf)), closes [#67](https://github.com/easingthemes/ssh-deploy/issues/67)
# [3.0.0](https://github.com/easingthemes/ssh-deploy/compare/v2.2.11...v3.0.0) (2022-10-28)
### Bug Fixes
* plugins versions ([2f40dde](https://github.com/easingthemes/ssh-deploy/commit/2f40dde84fde36f5b9b81ededd7090c5159d9885))
* Merge pull request #83 from easingthemes/feature/#82-update-node-version ([76660a8](https://github.com/easingthemes/ssh-deploy/commit/76660a8456dbf26e6328674e25d083941ddd645e)), closes [#83](https://github.com/easingthemes/ssh-deploy/issues/83) [easingthemes/feature/#82](https://github.com/easingthemes/feature//issues/82)
### BREAKING CHANGES
* update to use nodeJS v16
## [2.2.11](https://github.com/easingthemes/ssh-deploy/compare/v2.2.10...v2.2.11) (2021-05-28)
### Bug Fixes
* remove change npm to public ([3c36af7](https://github.com/easingthemes/ssh-deploy/commit/3c36af7577e5aee231cea5a01bb6cc83717d0e74))
## [2.2.10](https://github.com/easingthemes/ssh-deploy/compare/v2.2.9...v2.2.10) (2021-05-27)
### Bug Fixes
* add assets to semantic-release git ([0867b12](https://github.com/easingthemes/ssh-deploy/commit/0867b12954dee2b8a2cccb7dfea3b8f3aa62d679))
## [2.2.9](https://github.com/easingthemes/ssh-deploy/compare/v2.2.8...v2.2.9) (2021-05-27)
### Bug Fixes
* change npm to public ([191c82d](https://github.com/easingthemes/ssh-deploy/commit/191c82d9b441e26cf43f81041376dbf5ecdc1647))
## [2.2.8](https://github.com/easingthemes/ssh-deploy/compare/v2.2.7...v2.2.8) (2021-05-27)
### Bug Fixes
* update npm package name ([9c4e411](https://github.com/easingthemes/ssh-deploy/commit/9c4e4119ad64792e5435e4dbe574c56a3e70839c))
## [2.2.7](https://github.com/easingthemes/ssh-deploy/compare/v2.2.6...v2.2.7) (2021-05-27)
### Bug Fixes
* minify dist ([87551c3](https://github.com/easingthemes/ssh-deploy/commit/87551c38936fc91c0fbe3346ca43319d8098ac09))
## [2.2.6](https://github.com/easingthemes/ssh-deploy/compare/v2.2.5...v2.2.6) (2021-05-27)
### Bug Fixes
* add NPM token ([2197bc6](https://github.com/easingthemes/ssh-deploy/commit/2197bc60ef7870d4bd494966b314eabec1615bd7))
## [2.2.5](https://github.com/easingthemes/ssh-deploy/compare/v2.2.4...v2.2.5) (2021-05-27)
### Bug Fixes
* semantic-release/npm update config ([40096bf](https://github.com/easingthemes/ssh-deploy/commit/40096bf22459d1dd82172d2bd20c0c149e70b1e1))
## [2.2.4](https://github.com/easingthemes/ssh-deploy/compare/v2.2.3...v2.2.4) (2021-05-27)
### Bug Fixes
* add branch instead of a version in a readme ([8218c8e](https://github.com/easingthemes/ssh-deploy/commit/8218c8ed9514d772933e1ab4d1c725a7c05e149f))
## [2.2.3](https://github.com/easingthemes/ssh-deploy/compare/v2.2.2...v2.2.3) (2021-05-27)
### Bug Fixes
* codeql yaml syntax update ([87ad671](https://github.com/easingthemes/ssh-deploy/commit/87ad6713b53d454bd7ad6c4576cea7b2e3e2f4f3))
## [2.2.2](https://github.com/easingthemes/ssh-deploy/compare/v2.2.1...v2.2.2) (2021-05-27)
### Bug Fixes
* codeql build ([5e456a4](https://github.com/easingthemes/ssh-deploy/commit/5e456a475a15096d08ccd2aff2734b3f1250b308))
## [2.2.1](https://github.com/easingthemes/ssh-deploy/compare/v2.2.0...v2.2.1) (2021-05-27)
### Bug Fixes
* add package json auto updates ([ce56d75](https://github.com/easingthemes/ssh-deploy/commit/ce56d75fc1b62a99d72ffba70dcb24fcc3b6b3df))
# [2.2.0](https://github.com/easingthemes/ssh-deploy/compare/v2.1.7...v2.2.0) (2021-05-27)
### Bug Fixes
* only=prod package json ([95f4dc8](https://github.com/easingthemes/ssh-deploy/commit/95f4dc8069045c1f5f726e00cb519b46e4f14267))
* replace i with ci ([50d1f57](https://github.com/easingthemes/ssh-deploy/commit/50d1f576f95c0d7e8ce99fb1b2ab68b2594973e5))
* update ncc ([20a0cae](https://github.com/easingthemes/ssh-deploy/commit/20a0cae1ae81bcc430507363e800342976307a81))
* update plugins ([b2adc00](https://github.com/easingthemes/ssh-deploy/commit/b2adc00c92f129aef41ae46441411c2bebc0dbe4))
* update plugins ([a50a999](https://github.com/easingthemes/ssh-deploy/commit/a50a999528b503846cc7fdf26210f710bd95565a))
### Features
* add semantic-release-action ([ac3c9b5](https://github.com/easingthemes/ssh-deploy/commit/ac3c9b51d5cb52f4add40e2fc2dcc5e970153afc))

View file

@ -1,13 +0,0 @@
#!/bin/sh
set -eu
# Set deploy key
SSH_PATH="$HOME/.ssh"
mkdir "$SSH_PATH"
echo "$DEPLOY_KEY" > "$SSH_PATH/deploy_key"
chmod 600 "$SSH_PATH/deploy_key"
# Do deployment
sh -c "rsync $ARGS -e 'ssh -i $SSH_PATH/deploy_key -o StrictHostKeyChecking=no' $GITHUB_WORKSPACE/$SOURCE $TARGET"

3437
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

45
package.json Normal file
View file

@ -0,0 +1,45 @@
{
"name": "@draganfilipovic/ssh-deploy",
"version": "5.1.1",
"description": "Fast NodeJS action to deploy specific directory from `GITHUB_WORKSPACE` to a server via rsync over ssh.",
"main": "dist/index.js",
"files": [
"/dist",
"./action.yml",
"./README.md",
"LICENSE"
],
"scripts": {
"build": "npm run lint && ncc build ./src/index.js -o dist -m",
"lint": "eslint ./src/index.js",
"lint:fix": "eslint ./src/index.js --fix"
},
"repository": {
"type": "git",
"url": "git+https://github.com/easingthemes/ssh-deploy.git"
},
"keywords": [
"deploy",
"ssh",
"rsync"
],
"author": "Dragan Filipovic",
"license": "MIT",
"bugs": {
"url": "https://github.com/easingthemes/ssh-deploy/issues"
},
"homepage": "https://github.com/easingthemes/ssh-deploy#readme",
"dependencies": {
"rsyncwrapper": "^3.0.1"
},
"devDependencies": {
"@vercel/ncc": "^0.36.0",
"eslint": "^8.30.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-plugin-import": "^2.26.0"
},
"overrides": {
"word-wrap": "npm:@aashutoshrathi/word-wrap@1.2.5",
"semver": "^7.5.2"
}
}

95
src/helpers.js Normal file
View file

@ -0,0 +1,95 @@
const { existsSync, mkdirSync, writeFileSync, unlink } = require('fs');
const { join } = require('path');
const validateDir = (dir) => {
if (!dir) {
console.warn('⚠️ [DIR] dir is not defined');
return;
}
if (existsSync(dir)) {
console.log(`✅ [DIR] ${dir} dir exist`);
return;
}
console.log(`[DIR] Creating ${dir} dir in workspace root`);
mkdirSync(dir);
console.log('✅ [DIR] dir created.');
};
const handleError = (message, isRequired) => {
if (isRequired) {
throw new Error(message);
}
console.warn(message);
};
const writeToFile = ({ dir, filename, content, isRequired, mode = '0644' }) => {
validateDir(dir);
const filePath = join(dir, filename);
if (existsSync(filePath)) {
const message = `⚠️ [FILE] ${filePath} Required file exist.`;
handleError(message, isRequired);
return;
}
try {
console.log(`[FILE] writing ${filePath} file ...`, content.length);
writeFileSync(filePath, content, {
encoding: 'utf8',
mode
});
} catch (error) {
const message = `⚠️[FILE] Writing to file error. filePath: ${filePath}, message: ${error.message}`;
handleError(message, isRequired);
}
};
const deleteFile = ({ dir, filename, isRequired }) => {
validateDir(dir);
const filePath = join(dir, filename);
if (existsSync(filePath)) {
const message = `⚠️ [FILE] ${filePath} Required file exist.`;
handleError(message, isRequired);
return;
}
try {
console.log(`[FILE] Deleting ${filePath} file ...`);
unlink(filePath, (error) => {
if (error) {
throw new Error(error);
}
});
} catch (error) {
const message = `⚠️[FILE] Deleting file error. filePath: ${filePath}, message: ${error.message}`;
handleError(message, isRequired);
}
};
const validateRequiredInputs = (inputs) => {
const inputKeys = Object.keys(inputs);
const validInputs = inputKeys.filter((inputKey) => {
const inputValue = inputs[inputKey];
if (!inputValue) {
console.error(`❌ [INPUTS] ${inputKey} is mandatory`);
}
return inputValue;
});
if (validInputs.length !== inputKeys.length) {
throw new Error('⚠️ [INPUTS] Inputs not valid, aborting ...');
}
};
const snakeToCamel = (str) => str.replace(/[^a-zA-Z0-9]+(.)/g, (m, chr) => chr.toUpperCase());
module.exports = {
writeToFile,
deleteFile,
validateRequiredInputs,
snakeToCamel
};

48
src/index.js Normal file
View file

@ -0,0 +1,48 @@
#!/usr/bin/env node
const { sshDeploy } = require('./rsyncCli');
const { remoteCmdBefore, remoteCmdAfter } = require('./remoteCmd');
const { addSshKey, getPrivateKeyPath, updateKnownHosts } = require('./sshKey');
const { validateRequiredInputs } = require('./helpers');
const inputs = require('./inputs');
const run = async () => {
const {
source, remoteUser, remoteHost, remotePort,
deployKeyName, sshPrivateKey,
args, exclude, sshCmdArgs,
scriptBefore, scriptBeforeRequired,
scriptAfter, scriptAfterRequired,
rsyncServer
} = inputs;
// Validate required inputs
validateRequiredInputs({ sshPrivateKey, remoteHost, remoteUser });
// Add SSH key
addSshKey(sshPrivateKey, deployKeyName);
const { path: privateKeyPath } = getPrivateKeyPath(deployKeyName);
// Update known hosts if ssh command is present to avoid prompt
if (scriptBefore || scriptAfter) {
updateKnownHosts(remoteHost, remotePort);
}
// Check Script before
if (scriptBefore) {
await remoteCmdBefore(scriptBefore, privateKeyPath, scriptBeforeRequired);
}
/* eslint-disable object-property-newline */
await sshDeploy({
source, rsyncServer, exclude, remotePort,
privateKeyPath, args, sshCmdArgs
});
// Check script after
if (scriptAfter) {
await remoteCmdAfter(scriptAfter, privateKeyPath, scriptAfterRequired);
}
};
run()
.then((data = '') => {
console.log('✅ [DONE]', data);
})
.catch((error) => {
console.error('❌ [ERROR]', error.message);
process.exit(1);
});

50
src/inputs.js Normal file
View file

@ -0,0 +1,50 @@
const { snakeToCamel } = require('./helpers');
const inputNames = [
'REMOTE_HOST', 'REMOTE_USER', 'REMOTE_PORT',
'SSH_PRIVATE_KEY', 'DEPLOY_KEY_NAME',
'SOURCE', 'TARGET', 'ARGS', 'SSH_CMD_ARGS', 'EXCLUDE',
'SCRIPT_BEFORE', 'SCRIPT_AFTER', 'SCRIPT_BEFORE_REQUIRED', 'SCRIPT_AFTER_REQUIRED'];
const githubWorkspace = process.env.GITHUB_WORKSPACE;
const remoteUser = process.env.REMOTE_USER || process.env.INPUT_REMOTE_USER;
const defaultInputs = {
source: '',
target: `/home/${remoteUser}/`,
exclude: '',
args: '-rlgoDzvc -i',
sshCmdArgs: '-o StrictHostKeyChecking=no',
deployKeyName: `deploy_key_${remoteUser}_${Date.now()}`
};
const inputs = {
githubWorkspace
};
inputNames.forEach((input) => {
const inputName = snakeToCamel(input.toLowerCase());
const inputVal = process.env[input] || process.env[`INPUT_${input}`] || defaultInputs[inputName];
const validVal = inputVal === undefined ? defaultInputs[inputName] : inputVal;
let extendedVal = validVal;
// eslint-disable-next-line default-case
switch (inputName) {
case 'source':
extendedVal = validVal.split(' ').map((src) => `${githubWorkspace}/${src}`);
break;
case 'args':
extendedVal = validVal.split(' ');
break;
case 'exclude':
case 'sshCmdArgs':
extendedVal = validVal.split(',').map((item) => item.trim());
break;
}
inputs[inputName] = extendedVal;
});
inputs.sshServer = `${inputs.remoteUser}@${inputs.remoteHost}`;
inputs.rsyncServer = `${inputs.remoteUser}@${inputs.remoteHost}:${inputs.target}`;
module.exports = inputs;

47
src/remoteCmd.js Normal file
View file

@ -0,0 +1,47 @@
const { exec } = require('child_process');
const crypto = require('crypto');
const { sshServer, githubWorkspace, remotePort } = require('./inputs');
const { writeToFile, deleteFile } = require('./helpers');
const handleError = (message, isRequired, callback) => {
if (isRequired) {
callback(new Error(message));
} else {
console.warn(message);
}
};
// eslint-disable-next-line max-len
const remoteCmd = async (content, privateKeyPath, isRequired, label) => new Promise((resolve, reject) => {
const uuid = crypto.randomUUID();
const filename = `local_ssh_script-${label}-${uuid}.sh`;
try {
writeToFile({ dir: githubWorkspace, filename, content });
const dataLimit = 10000;
const rsyncStdout = (process.env.RSYNC_STDOUT || '').substring(0, dataLimit);
console.log(`Executing remote script: ssh -i ${privateKeyPath} ${sshServer}`);
exec(
`DEBIAN_FRONTEND=noninteractive ssh -p ${(remotePort || 22)} -i ${privateKeyPath} -o StrictHostKeyChecking=no ${sshServer} 'RSYNC_STDOUT="${rsyncStdout}" bash -s' < ${filename}`,
(err, data = '', stderr = '') => {
if (err) {
const message = `⚠️ [CMD] Remote script failed: ${err.message}`;
console.warn(`${message} \n`, data, stderr);
handleError(message, isRequired, reject);
} else {
const limited = data.substring(0, dataLimit);
console.log('✅ [CMD] Remote script executed. \n', limited, stderr);
deleteFile({ dir: githubWorkspace, filename });
console.log('✅ [FILE] Script file deleted.');
resolve(limited);
}
}
);
} catch (err) {
handleError(err.message, isRequired, reject);
}
});
module.exports = {
remoteCmdBefore: async (cmd, privateKeyPath, isRequired) => remoteCmd(cmd, privateKeyPath, isRequired, 'before'),
remoteCmdAfter: async (cmd, privateKeyPath, isRequired) => remoteCmd(cmd, privateKeyPath, isRequired, 'after')
};

86
src/rsyncCli.js Normal file
View file

@ -0,0 +1,86 @@
const { execSync } = require('child_process');
const nodeRsync = require('rsyncwrapper');
const nodeRsyncPromise = async (config) => new Promise((resolve, reject) => {
const logCMD = (cmd) => {
console.warn('================================================================');
console.log(cmd);
console.warn('================================================================');
};
try {
nodeRsync(config, (error, stdout, stderr, cmd) => {
if (error) {
console.error('❌ [Rsync] error: ');
console.error(error);
console.error('❌ [Rsync] stderr: ');
console.error(stderr);
console.error('❌️ [Rsync] stdout: ');
console.error(stdout);
console.error('❌ [Rsync] command: ');
logCMD(cmd);
reject(new Error(`${error.message}\n\n${stderr}`));
} else {
console.log('⭐ [Rsync] command finished: ');
logCMD(cmd);
resolve(stdout);
}
});
} catch (error) {
console.error('❌ [Rsync] command error: ', error.message, error.stack);
reject(error);
}
});
const validateRsync = async () => {
try {
execSync('rsync --version', { stdio: 'inherit' });
console.log('✅️ [CLI] Rsync exists');
return;
} catch (error) {
console.warn('⚠️ [CLI] Rsync doesn\'t exists', error.message);
}
console.log('[CLI] Start rsync installation with "apt-get" \n');
try {
execSync('sudo DEBIAN_FRONTEND=noninteractive apt-get -y update && sudo DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends -y install rsync', { stdio: 'inherit' });
console.log('✅ [CLI] Rsync installed. \n');
} catch (error) {
throw new Error(`⚠️ [CLI] Rsync installation failed. Aborting ... error: ${error.message}`);
}
};
const rsyncCli = async ({
source, rsyncServer, exclude, remotePort,
privateKeyPath, args, sshCmdArgs
}) => {
console.log(`[Rsync] Starting Rsync Action: ${source} to ${rsyncServer}`);
if (exclude && exclude.length > 0) console.log(`[Rsync] excluding folders ${exclude}`);
const defaultOptions = {
ssh: true,
recursive: true,
onStdout: (data) => console.log(data.toString()),
onStderr: (data) => console.error(data.toString())
};
// RSYNC COMMAND
/* eslint-disable object-property-newline */
return nodeRsyncPromise({
...defaultOptions,
src: source, dest: rsyncServer, excludeFirst: exclude, port: remotePort,
privateKey: privateKeyPath, args, sshCmdArgs
});
};
const sshDeploy = async (params) => {
await validateRsync();
const stdout = await rsyncCli(params);
console.log('✅ [Rsync] finished.', stdout);
process.env.RSYNC_STDOUT = `${stdout}`;
return stdout;
};
module.exports = {
sshDeploy
};

44
src/sshKey.js Normal file
View file

@ -0,0 +1,44 @@
const { join } = require('path');
const { execSync } = require('child_process');
const { EOL } = require('os');
const { writeToFile } = require('./helpers');
const KNOWN_HOSTS = 'known_hosts';
const getPrivateKeyPath = (filename = '') => {
const { HOME } = process.env;
const dir = join(HOME || '~', '.ssh');
const knownHostsPath = join(dir, KNOWN_HOSTS);
return {
dir,
filename,
path: join(dir, filename),
knownHostsPath
};
};
const addSshKey = (content, deployKeyName) => {
const { dir, filename } = getPrivateKeyPath(deployKeyName);
writeToFile({ dir, filename: KNOWN_HOSTS, content: '' });
console.log('✅ [SSH] known_hosts file ensured', dir);
writeToFile({ dir, filename, content: `${content}${EOL}`, isRequired: true, mode: '0400' });
console.log('✅ [SSH] key added to `.ssh` dir ', dir, filename);
};
const updateKnownHosts = (host, remotePort) => {
const { knownHostsPath } = getPrivateKeyPath();
console.log('[SSH] Adding host to `known_hosts` ....', host, knownHostsPath);
try {
execSync(`ssh-keyscan -p ${(remotePort || 22)} -H ${host} >> ${knownHostsPath}`, {
stdio: 'inherit'
});
} catch (error) {
console.error('❌ [SSH] Adding host to `known_hosts` ERROR', host, error.message);
}
console.log('✅ [SSH] Adding host to `known_hosts` DONE', host, knownHostsPath);
};
module.exports = {
getPrivateKeyPath,
updateKnownHosts,
addSshKey
};

5
test/.dockerignore Normal file
View file

@ -0,0 +1,5 @@
/node_modules
.gitignore
.gitattributes
LICENSE
README.md

42
test/Dockerfile Normal file
View file

@ -0,0 +1,42 @@
FROM nginx
ARG SSH_PUB_KEY
RUN apt update
RUN apt install openssh-server rsync sudo -y
RUN echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config.d/pub.conf
RUN echo "AuthorizedKeysFile .ssh/authorized_keys" >> /etc/ssh/sshd_config.d/pub.conf
RUN mkdir -p /var/www/html
RUN mkdir -p /var/www/html/test
RUN mkdir -p /var/www/html/test2
RUN chmod -R 775 /var/www/html
RUN useradd -rm -d /home/test -s /bin/bash -g root -G sudo -u 1000 test
RUN usermod -aG sudo test
RUN mkdir -p /home/test/.ssh
RUN echo "$SSH_PUB_KEY" > /home/test/.ssh/authorized_keys
RUN chmod 700 /home/test/.ssh
RUN chown -R test /home/test/.ssh
RUN useradd -rm -d /home/test2 -s /bin/bash -g root -G sudo -u 1002 test2
RUN usermod -aG sudo test2
RUN mkdir -p /home/test2/.ssh
RUN echo "$SSH_PUB_KEY" > /home/test2/.ssh/authorized_keys
RUN chmod 700 /home/test2/.ssh
RUN chown -R test2 /home/test2/.ssh
RUN service ssh start
RUN echo 'test:test' | chpasswd
RUN echo 'test2:test2' | chpasswd
EXPOSE 22
ADD entrypoint.sh /docker-entrypoint.d/entrypoint.sh
RUN chmod +x /docker-entrypoint.d/entrypoint.sh
CMD ["nginx", "-g", "daemon off;"]

3
test/entrypoint.sh Normal file
View file

@ -0,0 +1,3 @@
#!/bin/bash
/usr/sbin/sshd -D