mirror of
https://gitee.com/jiulinxiri/ssh-scp-deploy.git
synced 2026-03-11 12:32:56 +08:00
Compare commits
71 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3898ca4aab | ||
|
|
9a8b4bdad5 | ||
|
|
a6d3c9af27 | ||
|
|
5557c731df | ||
|
|
acf9c1fefc | ||
|
|
23d4c34561 | ||
|
|
ab06ee730f | ||
|
|
fc430f0194 | ||
|
|
afa413dc37 | ||
|
|
b7443178f2 | ||
|
|
96257c43a1 | ||
|
|
9433396123 | ||
|
|
829467f2f1 | ||
|
|
d4ff23a4b2 | ||
|
|
1b7bbc195c | ||
|
|
c4514ca69d | ||
|
|
6df7204981 | ||
|
|
0f1704d1ab | ||
|
|
bfa5c669b4 | ||
|
|
eee13f37dc | ||
|
|
546131ac6d | ||
|
|
cb11e978e7 | ||
|
|
988984a4c2 | ||
|
|
c842ff43ea | ||
|
|
3631d6aa3e | ||
|
|
c04eabd1e8 | ||
|
|
8f67304c1b | ||
|
|
11b60a4342 | ||
|
|
e700c123e8 | ||
|
|
f254055d37 | ||
|
|
62e6e5e80a | ||
|
|
858fc481b1 | ||
|
|
642835df3d | ||
|
|
8823857dea | ||
|
|
00d3f20007 | ||
|
|
d2658b1812 | ||
|
|
49294a1b9a | ||
|
|
601a3cdfc5 | ||
|
|
874eec1e4c | ||
|
|
21d9038bb4 | ||
|
|
8399b8ccf9 | ||
|
|
4856a9a4e9 | ||
|
|
7d22a8aeeb | ||
|
|
839788b727 | ||
|
|
5a27574133 | ||
|
|
5473b2d02c | ||
|
|
7d6ed29410 | ||
|
|
d744479d59 | ||
|
|
b4eb8f8a33 | ||
|
|
3393f06782 | ||
|
|
0cdc30a56f | ||
|
|
e3f5136f75 | ||
|
|
5b2be75e1a | ||
|
|
0cb5842c53 | ||
|
|
ad4bb0c9e0 | ||
|
|
40de7fd0b7 | ||
|
|
a9a68bc8ee | ||
|
|
2d5fd18c0b | ||
|
|
1b7e36c773 | ||
|
|
f0079adc5b | ||
|
|
796ad8132d | ||
|
|
67587a1976 | ||
|
|
7635795846 | ||
|
|
560f02a415 | ||
|
|
2ab605adf3 | ||
|
|
138c2fb2ea | ||
|
|
891f661b1b | ||
|
|
e5ccb99140 | ||
|
|
2f78613c53 | ||
|
|
f705dfd43a | ||
|
|
c3ed5c67e7 |
22
.github/workflows/main.yml
vendored
22
.github/workflows/main.yml
vendored
@@ -6,18 +6,34 @@ on:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
test:
|
||||
test-key:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
- uses: underscore69/ssh-scp-deploy@main
|
||||
- uses: marcodallasanta/ssh-scp-deploy@main
|
||||
with:
|
||||
local: "./"
|
||||
local: "LICENSE"
|
||||
remote: "~/"
|
||||
host: ${{secrets.HOST}}
|
||||
user: ${{secrets.USER}}
|
||||
key: ${{secrets.KEY}}
|
||||
pre_upload: echo "pre_upload 👈"
|
||||
post_upload: echo "post_upload 👉"
|
||||
|
||||
test-pass:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
- uses: marcodallasanta/ssh-scp-deploy@development
|
||||
with:
|
||||
local: "CHANGELOG.md"
|
||||
remote: "~/"
|
||||
host: ${{secrets.HOST}}
|
||||
user: ${{secrets.USER}}
|
||||
password: ${{secrets.PASSWORD}}
|
||||
pre_upload: echo "pre_upload 👈"
|
||||
post_upload: echo "post_upload 👉"
|
||||
44
CHANGELOG.md
44
CHANGELOG.md
@@ -1,9 +1,51 @@
|
||||
# [Unreleased]
|
||||
|
||||
## [v1.2.0] - 2021-03-22
|
||||
|
||||
### Added
|
||||
- [Issue #17](https://github.com/marcodallasanta/ssh-scp-deploy/issues/15) - Using /bin/sh instead of /bin/bash.
|
||||
|
||||
## [v1.1.0] - 2021-10-02
|
||||
|
||||
### Added
|
||||
- [Issue #15](https://github.com/marcodallasanta/ssh-scp-deploy/issues/15) - Added -p {INPUT_PORT} option.
|
||||
|
||||
## [v1.0.5] - 2021-09-08
|
||||
|
||||
### Fixed
|
||||
- [Issue #12](https://github.com/marcodallasanta/ssh-scp-deploy/issues/12) - Action never failed also when file/dir was not uploaded.
|
||||
|
||||
## [v1.0.4] - 2021-02-10
|
||||
|
||||
### Fixed
|
||||
- [Issue #9](https://github.com/marcodallasanta/ssh-scp-deploy/issues/9) - Wrong if on password.
|
||||
|
||||
## [v1.0.3] - 2021-02-08
|
||||
|
||||
### Fixed
|
||||
- Hardcoded user "ubuntu" in scp.
|
||||
|
||||
## [v1.0.2] - 2020-12-21
|
||||
|
||||
### Fixed
|
||||
- Dockerfile used to copy just entrypoint.sh.
|
||||
|
||||
## [v1.0.1] - 2020-12-21
|
||||
|
||||
### Fixed
|
||||
- Dockerfile used to copy just entrypoint.sh.
|
||||
|
||||
## [v1.0.0] - 2020-12-18
|
||||
|
||||
### Added
|
||||
- First definition of the action.
|
||||
|
||||
|
||||
[v1.0.0]: https://github.com/underscore69/ssh-scp-deploy/tree/v1.0.0
|
||||
[unreleased]: https://github.com/marcodallasanta/ssh-scp-deploy/compare/main...development
|
||||
[v1.1.0]: https://github.com/marcodallasanta/ssh-scp-deploy/tree/v1.1.0
|
||||
[v1.0.5]: https://github.com/marcodallasanta/ssh-scp-deploy/tree/v1.0.5
|
||||
[v1.0.4]: https://github.com/marcodallasanta/ssh-scp-deploy/tree/v1.0.4
|
||||
[v1.0.3]: https://github.com/marcodallasanta/ssh-scp-deploy/tree/v1.0.3
|
||||
[v1.0.2]: https://github.com/marcodallasanta/ssh-scp-deploy/tree/v1.0.2
|
||||
[v1.0.1]: https://github.com/marcodallasanta/ssh-scp-deploy/tree/v1.0.1
|
||||
[v1.0.0]: https://github.com/marcodallasanta/ssh-scp-deploy/tree/v1.0.0
|
||||
@@ -3,11 +3,9 @@ FROM alpine:latest
|
||||
RUN apk update && \
|
||||
apk add --no-cache ca-certificates \
|
||||
openssh-client \
|
||||
sshpass \
|
||||
bash
|
||||
sshpass
|
||||
|
||||
COPY LICENSE README.md /
|
||||
COPY entrypoint.sh with_key.sh with_pass.sh /
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
|
||||
4
LICENSE
4
LICENSE
@@ -1,7 +1,7 @@
|
||||
|
||||
The MIT License (MIT)
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 Marco Dalla Santa and contributors
|
||||
Copyright (c) 2020 Marco Dalla Santa
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
69
README.md
69
README.md
@@ -1,30 +1,67 @@
|
||||
<p align="center">
|
||||
<img src="resources/logo.png">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://docs.github.com/en/actions/creating-actions/about-actions#types-of-actions"><img alt="Action type" src="https://img.shields.io/badge/Docker%20action-262b31?logo=docker&logoColor=2496ed"></a>
|
||||
<a href="LICENSE"><img alt="License" src="https://img.shields.io/github/license/marcodallasanta/ssh-scp-deploy"></a>
|
||||
<a href="https://github.com/marcodallasanta/ssh-scp-deploy/actions?query=workflow%3ATest"><img alt="Pipeline status" src="https://github.com/marcodallasanta/ssh-scp-deploy/workflows/Test/badge.svg"></a>
|
||||
</p>
|
||||
|
||||
# ssh-scp-deploy
|
||||
|
||||
[](https://docs.github.com/en/actions/creating-actions/about-actions#types-of-actions)
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
[](./)
|
||||
## ❔ Why should I use this action?
|
||||
|
||||
This action provide an easy and higly customizable way to upload files via scp and execute a set of command via ssh before or/and after.
|
||||
Because this action provide an easy and highly customizable way to upload files via scp and execute a set of command via ssh before or/and after.
|
||||
I use this action to deploy my personal projects to remote server, restarting the needed services or to do a simple upload via scp.
|
||||
|
||||
## Supported runners
|
||||
## 🏃 Supported runners
|
||||
[](https://docs.github.com/en/actions/creating-actions/about-actions#docker-container-actions)
|
||||
|
||||
## Usage
|
||||
|
||||
## 👤 Author
|
||||
|
||||
**Marco Dalla Santa**
|
||||
|
||||
* Twitter: [@marcodallasanta](https://twitter.com/marcodallasanta)
|
||||
* Github: [@marcodallasanta](https://github.com/marcodallasanta)
|
||||
* LinkedIn: [@marcodallasanta](https://linkedin.com/in/marcodallasanta)
|
||||
|
||||
|
||||
## ⚙️ Usage
|
||||
```yaml
|
||||
- uses: underscore69/ssh-scp-deploy@v1.0.0
|
||||
- uses: mdallasanta/ssh-scp-deploy@{version}
|
||||
with:
|
||||
local: './' # Local file path - REQUIRED false - DEFAULT ./
|
||||
remote: '~/' # Remote file path - REQUIRED false - DEFAULT ~/
|
||||
host: ${{secrets.HOST}} # Remote server address - REQUIRED true
|
||||
port: ${{secrets.PORT}} # Remote server port - REQUIRED false - DEFAULT 22
|
||||
remote: '~/' # Remote file path - REQUIRED false - DEFAULT ~/
|
||||
host: ${{secrets.HOST}} # Remote server address - REQUIRED true
|
||||
port: ${{secrets.PORT}} # Remote server port - REQUIRED false - DEFAULT 22
|
||||
user: ${{secrets.USER}} # Remote server user - REQUIRED true
|
||||
password: ${{secrets.PASSWORD}} # User password - REQUIRED at least one of "password" or "key"
|
||||
key: ${{secrets.KEY}} # Remote server private key - REQUIRED at least one of "password" or "key"
|
||||
pre_upload: echo "This will be executed before the upload!" # Command to run via ssh before scp upload - REQUIRED false
|
||||
post_upload: echo "This will be executed after the upload!" # Command to run via ssh after scp upload - REQUIRED false
|
||||
password: ${{secrets.PASSWORD}} # User password - REQUIRED at least one of "password" or "key"
|
||||
key: ${{secrets.KEY}} # Remote server private key - REQUIRED at least one of "password" or "key"
|
||||
pre_upload: echo "This will be executed before the upload!" # Command to run via ssh before scp upload - REQUIRED false
|
||||
post_upload: echo "This will be executed after the upload!" # Command to run via ssh after scp upload - REQUIRED false
|
||||
ssh_options: -o StrictHostKeyChecking=no # A set of ssh_option separated by -o - REQUIRED false - DEFAULT -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
|
||||
scp_options: -v # Flags to use during scp - REQUIRED false - DEFAULT ''
|
||||
```
|
||||
|
||||
## License
|
||||
The source code, scripts and documentation in this project are released under the [MIT License](LICENSE)
|
||||
## 🤝 Contributing
|
||||
|
||||
Contributions, issues and feature requests are welcome!
|
||||
|
||||
Feel free to check [issues page](https://github.com/mdallasanta/ssh-scp-deploy/issues).
|
||||
|
||||
## 🙏 Thanks
|
||||
|
||||
Thanks to:
|
||||
|
||||
- [Raphaël Bussa](https://github.com/raphaelbussa) for help in testing.
|
||||
- [jamesremuscat](https://github.com/jamesremuscat) for resolving [issue#15](https://github.com/marcodallasanta/ssh-scp-deploy/issues/15)
|
||||
- [Blake Drumm](https://github.com/x-limitless-x) for resolving [issue#19](https://github.com/marcodallasanta/ssh-scp-deploy/issues/19)
|
||||
|
||||
|
||||
## 📝 License
|
||||
|
||||
Copyright © 2020-2022 [Marco Dalla Santa](https://github.com/marcodallasanta)
|
||||
|
||||
The source code, scripts and documentation in this project are released under the [MIT License](LICENSE)
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
#!/bin/bash
|
||||
PASSWORD=${INPUT_PASSWORD}
|
||||
KEY=${INPUT_KEY}
|
||||
if [ -z "$PRE_UPLOAD" and "$PASSWORD"]; then
|
||||
#!/bin/sh
|
||||
|
||||
PASSWORD=${INPUT_PASSWORD};
|
||||
KEY=${INPUT_KEY};
|
||||
|
||||
if [ -z "$KEY" ] && [ -z "$PASSWORD" ]; then
|
||||
echo "🔑 Please provide at least a key or a password...";
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
if [[ ! -z "$KEY" ]]; then
|
||||
if [[ -n "$KEY" ]]; then
|
||||
echo "🔑 Using key file...";
|
||||
. with_key.sh;
|
||||
source /with_key.sh;
|
||||
else
|
||||
echo "🔑 Using password...";
|
||||
. with_pass.sh;
|
||||
source /with_pass.sh;
|
||||
fi
|
||||
BIN
resources/logo.png
Normal file
BIN
resources/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.6 KiB |
32
with_key.sh
32
with_key.sh
@@ -1,3 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo "🔑 Adding ssh key..." &&
|
||||
eval $(ssh-agent -s) &&
|
||||
ssh-add <(echo "${INPUT_KEY}") &&
|
||||
@@ -5,20 +7,32 @@ echo "🔐 Added ssh key";
|
||||
|
||||
PRE_UPLOAD=${INPUT_PRE_UPLOAD}
|
||||
if [ ! -z "$PRE_UPLOAD" ]; then
|
||||
echo "👌 Executing pre-upload script..." &&
|
||||
ssh ${INPUT_SSH_OPTIONS} ${INPUT_USER}@${INPUT_HOST} "$INPUT_PRE_UPLOAD && exit" &&
|
||||
echo "✅ Executed pre-upload script";
|
||||
{
|
||||
echo "👌 Executing pre-upload script..." &&
|
||||
ssh ${INPUT_SSH_OPTIONS} -p "${INPUT_PORT}" ${INPUT_USER}@${INPUT_HOST} "$INPUT_PRE_UPLOAD && exit" &&
|
||||
echo "✅ Executed pre-upload script"
|
||||
} || {
|
||||
echo "😢 Something went wrong during pre-upload script" && exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
echo "🚚 Uploading via scp..." &&
|
||||
scp ${INPUT_SSH_OPTIONS} ${INPUT_SCP_OPTIONS} -P "${INPUT_PORT}" -r ${INPUT_LOCAL} ubuntu@${INPUT_HOST}:"${INPUT_REMOTE}" &&
|
||||
echo "🙌 Uploaded via scp";
|
||||
{
|
||||
echo "🚚 Uploading via scp..." &&
|
||||
scp ${INPUT_SSH_OPTIONS} ${INPUT_SCP_OPTIONS} -P "${INPUT_PORT}" -r ${INPUT_LOCAL} ${INPUT_USER}@${INPUT_HOST}:"${INPUT_REMOTE}" &&
|
||||
echo "🙌 Uploaded via scp"
|
||||
} || {
|
||||
echo "😢 Something went wrong during upload" && exit 1
|
||||
}
|
||||
|
||||
POST_UPLOAD=${INPUT_POST_UPLOAD}
|
||||
if [ ! -z "$POST_UPLOAD" ]; then
|
||||
echo "👌 Executing post-upload script..." &&
|
||||
ssh ${INPUT_SSH_OPTIONS} ${INPUT_USER}@${INPUT_HOST} "$POST_UPLOAD && exit" &&
|
||||
echo "✅ Executed post-upload script";
|
||||
{
|
||||
echo "👌 Executing post-upload script..." &&
|
||||
ssh ${INPUT_SSH_OPTIONS} -p "${INPUT_PORT}" ${INPUT_USER}@${INPUT_HOST} "$POST_UPLOAD && exit" &&
|
||||
echo "✅ Executed post-upload script"
|
||||
} || {
|
||||
echo "😢 Something went wrong during post-upload script" && exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
echo "🎉 Done";
|
||||
32
with_pass.sh
32
with_pass.sh
@@ -1,19 +1,33 @@
|
||||
#!/bin/sh
|
||||
|
||||
PRE_UPLOAD=${INPUT_PRE_UPLOAD}
|
||||
if [ ! -z "$PRE_UPLOAD" ]; then
|
||||
echo "👌 Executing pre-upload script..." &&
|
||||
sshpass -p ${PASSWORD} ssh ${INPUT_SSH_OPTIONS} ${INPUT_USER}@${INPUT_HOST} "$INPUT_PRE_UPLOAD && exit" &&
|
||||
echo "✅ Executed pre-upload script";
|
||||
{
|
||||
echo "👌 Executing pre-upload script..." &&
|
||||
sshpass -p ${PASSWORD} ssh ${INPUT_SSH_OPTIONS} -p "${INPUT_PORT}" ${INPUT_USER}@${INPUT_HOST} "$INPUT_PRE_UPLOAD && exit" &&
|
||||
echo "✅ Executed pre-upload script"
|
||||
} || {
|
||||
echo "😢 Something went wrong during pre-upload script" && exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
echo "🚚 Uploading via scp..." &&
|
||||
sshpass -p ${PASSWORD} scp ${INPUT_SSH_OPTIONS} ${INPUT_SCP_OPTIONS} -P "${INPUT_PORT}" -r ${INPUT_LOCAL} ubuntu@${INPUT_HOST}:"${INPUT_REMOTE}" &&
|
||||
echo "🙌 Uploaded via scp";
|
||||
{
|
||||
echo "🚚 Uploading via scp..." &&
|
||||
sshpass -p ${PASSWORD} scp ${INPUT_SSH_OPTIONS} ${INPUT_SCP_OPTIONS} -P "${INPUT_PORT}" -r ${INPUT_LOCAL} ${INPUT_USER}@${INPUT_HOST}:"${INPUT_REMOTE}" &&
|
||||
echo "🙌 Uploaded via scp"
|
||||
} || {
|
||||
echo "😢 Something went wrong during upload" && exit 1
|
||||
}
|
||||
|
||||
POST_UPLOAD=${INPUT_POST_UPLOAD}
|
||||
if [ ! -z "$POST_UPLOAD" ]; then
|
||||
echo "👌 Executing post-upload script..." &&
|
||||
sshpass -p ${PASSWORD} ssh ${INPUT_SSH_OPTIONS} ${INPUT_USER}@${INPUT_HOST} "$POST_UPLOAD && exit" &&
|
||||
echo "✅ Executed post-upload script";
|
||||
{
|
||||
echo "👌 Executing post-upload script..." &&
|
||||
sshpass -p ${PASSWORD} ssh ${INPUT_SSH_OPTIONS} -p "${INPUT_PORT}" ${INPUT_USER}@${INPUT_HOST} "$POST_UPLOAD && exit" &&
|
||||
echo "✅ Executed post-upload script"
|
||||
} || {
|
||||
echo "😢 Something went wrong during post-upload script" && exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
echo "🎉 Done";
|
||||
Reference in New Issue
Block a user