Compare commits

...

75 commits
2.0 ... master

Author SHA1 Message Date
Steven Agyekum
22a7777152
Merge pull request #69 from Burnett01/release/7.0.2
Release/7.0.2
2025-01-19 15:36:00 +01:00
Steven Agyekum
3cccb68511
Update SECURITY.md 2025-01-19 15:32:42 +01:00
Steven Agyekum
e642759b84
new version 7.0.2 (with rsync 3.4.0), deprecate old versions, remove dead links
The latest rsync version 3.4.0 fixes a wide variety of CVE's:

CVE-2024-12084 -⁠ Heap Buffer Overflow in Checksum Parsing.

CVE-2024-12085 -⁠ Info Leak via uninitialized Stack contents defeats ASLR.

CVE-2024-12086 -⁠ Server leaks arbitrary client files.

CVE-2024-12087 -⁠ Server can make client write files outside of destination directory using symbolic links.

CVE-2024-12088 -⁠ -⁠-⁠safe-⁠links Bypass.

CVE-2024-12747 -⁠ symlink race condition.

See their press release: https://download.samba.org/pub/rsync/NEWS#3.4.0

The latest action version 7.0.2 is using rsync 3.4.0, so please use that.
2025-01-19 15:29:07 +01:00
Steven Agyekum
76404482ea
always force-upgrade rsync to get the latest security upgrades 2025-01-19 15:19:29 +01:00
Steven Agyekum
d19dd4a0be
Merge pull request #68 from ilyabrin/patch-1
Update README.md
2024-09-22 11:35:23 +02:00
Ilya Brin
f825a1ed74
Update README.md
added syntax highlighting
2024-09-14 14:32:58 +03:00
Steven Agyekum
796cf0d5e4
Merge pull request #61 from Burnett01/release/7.0.1
- Pin @JoshPiper [drinternet/rsync](https://github.com/JoshPiper/rsync-docker) image by SHA-256 hash rather than version.  (Immutability)
Added via #60 

The docker image of this action is now pinned to the specific SHA-256 hash of the version rather than just the version.
This means for the latest `drinternet/rsync:v1.4.4` the corresponding hash is `drinternet/rsync@sha256:15b2949838074bd93c49421c22380396a0cd53a322439e799ac87afcadcfe234`

Check for validation: https://hub.docker.com/layers/drinternet/rsync/v1.4.4/images/sha256-15b2949838074bd93c49421c22380396a0cd53a322439e799ac87afcadcfe234

With that, usage of this action is even more secure due to a consistent dependency chain of trust,
since changes accompanied by a docker image hash are immutable.

Thanks to @XComp
2024-03-31 18:11:10 +02:00
Steven Agyekum
b2bc75ad2c
Merge pull request #60 from XComp/use-hash-instead-of-version-tag
Use SHA instead of Docker version tag for base image to allow for consistent code execution.
2024-03-31 17:50:56 +02:00
Steven Agyekum
93c0d7acae
upd: mention version 7.0.1 2024-03-30 10:49:50 +01:00
Steven Agyekum
13aa4f9f57
update year to 2024 2024-03-30 10:46:13 +01:00
Matthias Pohl
b16614048b
Use SHA instead of Docker version tag for base image to allow for consistent code execution. 2024-03-28 17:53:03 +01:00
Steven Agyekum
e1c5b900e9
Merge pull request #59 from Burnett01/release/7.0.0
Release/7.0.0
2024-03-06 15:06:24 +01:00
Steven Agyekum
93f02b856f
chore: adjust readme for release 7.0.0 2024-03-06 15:04:26 +01:00
Steven Agyekum
21c0e5a9d9
chore: mention latest Alpine 3.19.1 2024-03-06 14:33:58 +01:00
Steven Agyekum
c88a1dbded
chore: adjust for EOL, DEPRECATION and MAINTENANCE 2024-03-06 14:33:02 +01:00
Steven Agyekum
b9a68ac619
chore!: Versions 4.x EOL, 5.x DEPRECATED, 6.x MAINTENANCE
- All versions 4.x are now EOL and no longer maintained
- All versions 5.x are now DEPRECATED and will become EOL within Q2 2024
- All versions  6.x are now MAINTENANCE and will become DEPRECATED within Q4 2024
2024-03-06 12:35:07 +01:00
Steven Agyekum
f479c97783
chore: mention new legacy_allow_rsa_hostkeys option 2024-03-06 12:29:40 +01:00
Steven Agyekum
008719532f
feat: configuarable legacy RSA hostkeys support
Ability to configure legacy rsa hostkeys support for
OpenSSH servers < 8.8.
Related to #24 and  9603fc8
2024-03-06 12:20:39 +01:00
Steven Agyekum
9603fc8186
feat: Make usage of legacy rsa hostkeys conditional
The usage of RSA host keys introduced with c7baefdc23 
was adjusted to make it conditional/configurable and to keep
backward compatibility
2024-03-06 12:16:35 +01:00
Steven Agyekum
580c98fc2e
Merge pull request #58 from Burnett01/release/5.3
Backmerge unofficial release/5.3 into new upcoming rlease/7.0.0
2024-03-06 12:04:45 +01:00
Steven Agyekum
ee287eb1f0
feat: Update base image to latest 1.4.4 (apline 3.19.1) 2024-03-06 11:58:08 +01:00
Steven Agyekum
c04732dab2
added v6 as new major 2023-06-08 18:05:17 +02:00
Steven Agyekum
fb06973f0e
Merge pull request #45 from Burnett01/release/6.0.0
Release/6.0.0
2023-06-08 17:54:57 +02:00
Steven Agyekum
45d84ad5f6
New version 6.0.0
- It is no longer possible to use an empty string as remote_path (Fixes #44) (Thanks to @maximilliangeorge)
- Updated checkout action in examples from v2 to v3
- Added disclaimer to media site-links
- Overall readme improvements
2023-06-08 17:54:10 +02:00
Steven Agyekum
d732b39732
improved string empty check for remote_path 2023-06-08 17:35:29 +02:00
Steven Agyekum
570fd6bb52
fix empty string check 2023-06-08 17:27:31 +02:00
Steven Agyekum
bef106d127
validate remote_path is not empty 2023-06-08 17:23:41 +02:00
Steven Agyekum
b247bfd3af
versions correction 2023-06-01 11:49:29 +02:00
Steven Agyekum
f17a58e4ba
adjust readme with correct versions 2023-06-01 11:48:45 +02:00
Steven Agyekum
8bb79ee6b5
Merge pull request #42 from Burnett01/dependabot/docker/drinternet/rsync-v1.4.3 2023-04-01 17:59:03 +02:00
dependabot[bot]
b2007e683f
Bump drinternet/rsync from v1.4.2 to v1.4.3
Bumps drinternet/rsync from v1.4.2 to v1.4.3.

---
updated-dependencies:
- dependency-name: drinternet/rsync
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-01 02:56:43 +00:00
Steven Agyekum
48dde0d741
Merge pull request #35 from Burnett01/dependabot/docker/drinternet/rsync-v1.4.2
Bump drinternet/rsync from v1.4.1 to v1.4.2
2022-12-11 20:22:59 +01:00
dependabot[bot]
4b36c0937b
Bump drinternet/rsync from v1.4.1 to v1.4.2
Bumps drinternet/rsync from v1.4.1 to v1.4.2.

---
updated-dependencies:
- dependency-name: drinternet/rsync
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 02:03:49 +00:00
Steven Agyekum
2651e3eecb
Merge pull request #34 from Burnett01/release/5.2.1
Release/5.2.1
2022-08-01 18:02:21 +02:00
Steven Agyekum
a9c15493e0
mention version 5.2.1 2022-08-01 17:59:24 +02:00
Steven Agyekum
b107255845
Merge pull request #33 from Burnett01/dependabot/docker/drinternet/rsync-v1.4.1
Bump drinternet/rsync from v1.4.0 to v1.4.1
2022-08-01 17:50:38 +02:00
Steven Agyekum
d987a9a536
Merge pull request #32 from Burnett01/dependabot/docker/drinternet/rsync-v1.4.1
Bump drinternet/rsync from v1.4.0 to v1.4.1
2022-08-01 17:31:49 +02:00
dependabot[bot]
de20664c6e
Bump drinternet/rsync from v1.4.0 to v1.4.1
Bumps drinternet/rsync from v1.4.0 to v1.4.1.

---
updated-dependencies:
- dependency-name: drinternet/rsync
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 02:08:20 +00:00
Steven Agyekum
d2a4efa87c
Update with suggestions from #31
#31
2022-07-30 10:19:44 +02:00
Steven Agyekum
a078b62820
Merge pull request #24 from jasongill/patch-1
Re-allow RSA host keys with SSH
2022-03-24 19:06:39 +01:00
Jason Gill
c7baefdc23
Allow RSA host keys
RSA host keys are disabled by default on OpenSSH 8.8+ which is used by the base Alpine image, but many servers still use RSA host keys
2022-03-02 12:29:53 -05:00
Steven Agyekum
9f40ee1996
version 3.0 is EOL (see #23) 2022-01-01 19:29:16 +01:00
Steven Agyekum
0dc935cdec
Merge pull request #23 from Burnett01/feature/maintenance-2022
Version 5.2
2022-01-01 19:16:33 +01:00
dependabot[bot]
4afbe87441
Bump drinternet/rsync from v1.3.0 to v1.4.0 (#22)
Bumps drinternet/rsync from v1.3.0 to v1.4.0.

---
updated-dependencies:
- dependency-name: drinternet/rsync
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-01 19:07:48 +01:00
Steven Agyekum
6ae12186da
bump version to 5.2 in Readme 2022-01-01 19:07:03 +01:00
Steven Agyekum
4a950331e5
dropped support for 3.0 2022-01-01 19:02:50 +01:00
Steven Agyekum
057a69d147
Update LICENSE 2022-01-01 19:00:50 +01:00
Steven Agyekum
164dafd7fc
Create dependabot.yml 2021-09-01 12:47:46 +02:00
Steven Agyekum
b943ffe476
Release/v5.1 (#15)
* update base image drinternet/rsync:v1.3.0

* Base Image updates:  alpine 3.14.1 latest

* use v5.1 in examples

* support for v5.x

* mention Alpine version
2021-08-12 18:45:01 +02:00
Steven Agyekum
342e70b07e
Release/v5 (#13)
* Reference JoshPiper/rsync-docker @ 1.1.0

* See: https://github.com/JoshPiper/rsync-docker/tree/1.1.0
* New features: Support passphrase protected keys

* supply SSH_PASS (key passphrase) to agent-add

Read more about the behavior: https://github.com/JoshPiper/rsync-docker#agent-askpass

* add new remote_key_pass config option

* Update README.md

* Update README.md

* 2.0 is EOL

* support 5.0, drop 2.0

* default to empty string

* reference JoshPiper/rsync-docker @ v1.2.0
2021-08-02 21:57:01 +02:00
Steven Agyekum
a93a577f3f
add more blogs/media 2021-04-03 15:02:42 +02:00
Steven Agyekum
22f8d1ffe8
2021 2021-01-01 17:46:52 +01:00
Steven Agyekum
695f58ca67
mention blogs 2020-10-05 18:46:16 +02:00
Steven Agyekum
b1aa5210b1
Create CONTRIBUTING.md 2020-06-27 15:55:57 +02:00
Steven Agyekum
5aaa93368b
Create CODE_OF_CONDUCT.md 2020-06-27 15:55:31 +02:00
Steven Agyekum
248befb7da
Create SECURITY.md 2020-06-27 15:53:22 +02:00
Steven Agyekum
23a557dceb
Update README.md 2020-06-23 00:08:44 +02:00
Steven Agyekum
ea3f2b7314
improve code-formatting 2020-06-22 21:40:12 +02:00
Steven Agyekum
469a77e7aa
use actions/checkout@v2 for even faster deployments
The actions/checkout@v2 action uses a checkout depth of 1 by default.
There is no more need to set it manually.
2020-03-27 14:55:02 +01:00
Steven Agyekum
819cb701d2
Update README.md 2020-01-08 20:10:18 +01:00
Steven Agyekum
c269e19dd0
Changes in 4.0 2020-01-05 14:47:18 +01:00
Steven Agyekum
c39ab06b30
Merge pull request #4 from JoshPiper/feat/rsync-image
Feat/rsync image
2020-01-05 14:40:05 +01:00
JoshPiper
9f59b515f6
Update entrypoint.sh 2020-01-05 11:19:21 +00:00
JoshPiper
c5464e03ed
Use sh not bash. 2020-01-05 11:11:59 +00:00
JoshPiper
0010c2adf6
Update entrypoint.sh 2020-01-05 11:06:14 +00:00
JoshPiper
c6d9be15a7
Update Dockerfile 2020-01-05 11:03:17 +00:00
Steven Agyekum
d75a44a646
2020 2019-12-31 16:54:40 +01:00
Steven Agyekum
c47cfee594
Version 3.0 - faster deployments
* Feat/new base image
2019-12-27 16:39:11 +01:00
Steven Agyekum
7e62b51e32
Update README.md 2019-12-27 16:37:44 +01:00
Steven Agyekum
f8c929a1f4
Update README.md 2019-12-27 16:33:45 +01:00
Steven Agyekum
6a989b68a1
Update README.md 2019-12-27 16:29:01 +01:00
Steven Agyekum
6fa9b56771
Update Dockerfile 2019-12-27 16:14:47 +01:00
Steven Agyekum
f5c5431bf6
Update entrypoint.sh 2019-12-27 16:12:10 +01:00
Steven Agyekum
20b1f5b4b8
Update Dockerfile 2019-12-27 16:11:54 +01:00
Steven Agyekum
1bbe8382e5
Update Dockerfile 2019-12-27 16:08:00 +01:00
9 changed files with 302 additions and 53 deletions

6
.github/dependabot.yml vendored Normal file
View file

@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: docker
directory: /
schedule:
interval: monthly

76
CODE_OF_CONDUCT.md Normal file
View file

@ -0,0 +1,76 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team via issues. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

1
CONTRIBUTING.md Normal file
View file

@ -0,0 +1 @@
Feel free to contribute to this project.

View file

@ -1,12 +1,12 @@
FROM ubuntu:latest
# drinternet/rsync@v1.4.4
FROM drinternet/rsync@sha256:15b2949838074bd93c49421c22380396a0cd53a322439e799ac87afcadcfe234
# Update
RUN apt-get update
# Install packages
RUN apt-get -yq install rsync openssh-client
# always force-upgrade rsync to get the latest security fixes
RUN apk update && apk add --no-cache --upgrade rsync
RUN rm -rf /var/cache/apk/*
# Copy entrypoint
ADD entrypoint.sh /entrypoint.sh
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

View file

@ -1,7 +1,7 @@
MIT License
Copyright (c) 2019 Contention
Copyright (c) 2019 Burnett01
Copyright (c) 2019-2022 Contention
Copyright (c) 2019-2024 Burnett01
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

192
README.md
View file

@ -1,11 +1,13 @@
# rsync deployments
Forked from [Contention/rsync-deployments](https://github.com/Contention/rsync-deployments)
This GitHub Action (amd64) deploys files in `GITHUB_WORKSPACE` to a remote folder via rsync over ssh.
Use this action in a CD workflow which leaves deployable code in `GITHUB_WORKSPACE`.
This GitHub Action deploys files in `GITHUB_WORKSPACE` to a folder on a server via rsync over ssh.
The base-image [drinternet/rsync](https://github.com/JoshPiper/rsync-docker/) of this action is very small and is based on Alpine 3.19.1 (no cache) which results in fast deployments.
Use this action in a build/test workflow which leaves deployable code in `GITHUB_WORKSPACE`.
Alpine version: [3.19.1](https://alpinelinux.org/posts/Alpine-3.19.1-released.html)
Rsync version: [3.4.0-r0](https://download.samba.org/pub/rsync/NEWS#3.4.0)
---
@ -15,7 +17,9 @@ Use this action in a build/test workflow which leaves deployable code in `GITHUB
- `rsh` - Remote shell commands
- `path` - The source path. Defaults to GITHUB_WORKSPACE
- `legacy_allow_rsa_hostkeys` - Enables support for legacy RSA host keys on OpenSSH 8.8+. ("true" / "false")
- `path` - The source path. Defaults to GITHUB_WORKSPACE and is relative to it
- `remote_path`* - The deployment target path
@ -27,17 +31,25 @@ Use this action in a build/test workflow which leaves deployable code in `GITHUB
- `remote_key`* - The remote ssh key
- `remote_key_pass` - The remote ssh key passphrase (if any)
``* = Required``
## Required secret
## Required secret(s)
This action needs a `DEPLOY_KEY` secret variable. This should be the private key part of a ssh key pair. The public key part should be added to the authorized_keys file on the server that receives the deployment. This should be set in the Github secrets section and then referenced as the `remote_key` input.
This action needs secret variables for the ssh private key of your key pair. The public key part should be added to the authorized_keys file on the server that receives the deployment. The secret variable should be set in the Github secrets section of your org/repo and then referenced as the `remote_key` input.
> Always use secrets when dealing with sensitive inputs!
For simplicity, we are using `DEPLOY_*` as the secret variables throughout the examples.
## Current Version: 7.0.2
## Example usage
Simple:
```
```yml
name: DEPLOY
on:
push:
@ -48,9 +60,9 @@ jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v3
- name: rsync deployments
uses: burnett01/rsync-deployments@2.0
uses: burnett01/rsync-deployments@7.0.2
with:
switches: -avzr --delete
path: src/
@ -62,20 +74,14 @@ jobs:
Advanced:
```
name: DEPLOY
on:
push:
branches:
- master
```yml
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v3
- name: rsync deployments
uses: burnett01/rsync-deployments@2.0
uses: burnett01/rsync-deployments@7.0.2
with:
switches: -avzr --delete --exclude="" --include="" --filter=""
path: src/
@ -86,38 +92,162 @@ jobs:
remote_key: ${{ secrets.DEPLOY_KEY }}
```
For better security, I suggest you create additional secrets for remote_host, remote_port and remote_user inputs.
```
name: DEPLOY
on:
push:
branches:
- master
For better **security**, I suggest you create additional secrets for remote_host, remote_port, remote_user and remote_path inputs.
```yml
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v3
- name: rsync deployments
uses: burnett01/rsync-deployments@2.0
uses: burnett01/rsync-deployments@7.0.2
with:
switches: -avzr --delete
path: src/
remote_path: /var/www/html/
remote_path: ${{ secrets.DEPLOY_PATH }}
remote_host: ${{ secrets.DEPLOY_HOST }}
remote_port: ${{ secrets.DEPLOY_PORT }}
remote_user: ${{ secrets.DEPLOY_USER }}
remote_key: ${{ secrets.DEPLOY_KEY }}
```
If your private key is passphrase protected you should use:
```yml
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: rsync deployments
uses: burnett01/rsync-deployments@7.0.2
with:
switches: -avzr --delete
path: src/
remote_path: ${{ secrets.DEPLOY_PATH }}
remote_host: ${{ secrets.DEPLOY_HOST }}
remote_port: ${{ secrets.DEPLOY_PORT }}
remote_user: ${{ secrets.DEPLOY_USER }}
remote_key: ${{ secrets.DEPLOY_KEY }}
remote_key_pass: ${{ secrets.DEPLOY_KEY_PASS }}
```
---
## Version 1.0 (EOL)
#### Legacy RSA Hostkeys support for OpenSSH Servers >= 8.8+
Looking for version 1.0?
If your remote OpenSSH Server still uses RSA hostkeys, then you have to
manually enable legacy support for this by using ``legacy_allow_rsa_hostkeys: "true"``.
```yml
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: rsync deployments
uses: burnett01/rsync-deployments@7.0.2
with:
switches: -avzr --delete
legacy_allow_rsa_hostkeys: "true"
path: src/
remote_path: ${{ secrets.DEPLOY_PATH }}
remote_host: ${{ secrets.DEPLOY_HOST }}
remote_port: ${{ secrets.DEPLOY_PORT }}
remote_user: ${{ secrets.DEPLOY_USER }}
remote_key: ${{ secrets.DEPLOY_KEY }}
```
See [#49](https://github.com/Burnett01/rsync-deployments/issues/49) and [#24](https://github.com/Burnett01/rsync-deployments/issues/24) for more information.
---
## Version 7.0.0 & 7.0.1 (DEPRECATED)
Check here:
- https://github.com/Burnett01/rsync-deployments/tree/7.0.0 (alpine 3.19.1)
- https://github.com/Burnett01/rsync-deployments/tree/7.0.1 (alpine 3.19.1)
---
## Version 6.0 (EOL)
Check here:
- https://github.com/Burnett01/rsync-deployments/tree/6.0 (alpine 3.17.2)
---
## Version 5.0, 5.1 & 5.2 & 5.x (EOL)
Check here:
- https://github.com/Burnett01/rsync-deployments/tree/5.0 (alpine 3.11.x)
- https://github.com/Burnett01/rsync-deployments/tree/5.1 (alpine 3.14.1)
- https://github.com/Burnett01/rsync-deployments/tree/5.2 (alpine 3.15.0)
- https://github.com/Burnett01/rsync-deployments/tree/5.2.1 (alpine 3.16.1)
- https://github.com/Burnett01/rsync-deployments/tree/5.2.2 (alpine 3.17.2)
---
## Version 4.0 & 4.1 (EOL)
Check here:
- https://github.com/Burnett01/rsync-deployments/tree/4.0
- https://github.com/Burnett01/rsync-deployments/tree/4.1
Version 4.0 & 4.1 use the ``drinternet/rsync:1.0.1`` base-image.
---
## Version 3.0 (EOL)
Check here: https://github.com/Burnett01/rsync-deployments/tree/3.0
Version 3.0 uses the ``alpine:latest`` base-image directly.<br>
Consider upgrading to 4.0 that uses a docker-image ``drinternet/rsync:1.0.1`` that is<br>
based on ``alpine:latest``and heavily optimized for rsync.
## Version 2.0 (EOL)
Check here: https://github.com/Burnett01/rsync-deployments/tree/2.0
Version 2.0 uses a larger base-image (``ubuntu:latest``).<br>
Consider upgrading to 3.0 for even faster deployments.
## Version 1.0 (EOL)
Check here: https://github.com/Burnett01/rsync-deployments/tree/1.0
Please note that version 1.0 has reached end of life state.
---
## Acknowledgements
+ This project is a fork of [Contention/rsync-deployments](https://github.com/Contention/rsync-deployments)
+ Base image [JoshPiper/rsync-docker](https://github.com/JoshPiper/rsync-docker)
---
## Media
This action was featured in multiple blogs across the globe:
> Disclaimer: The author & co-authors are not responsible for the content of the site-links below.
- https://elijahverdoorn.com/2020/04/14/automating-deployment-with-github-actions/
- https://www.vektor-inc.co.jp/post/github-actions-deploy/
- https://webpick.info/automatiser-avec-github-actions/
- https://matthias-andrasch.eu/blog/2021/tutorial-webseite-mittels-github-actions-deployment-zu-uberspace-uebertragen-rsync/
- https://jishuin.proginn.com/p/763bfbd38928
- https://cloud.tencent.com/developer/article/1786522

21
SECURITY.md Normal file
View file

@ -0,0 +1,21 @@
# Security Policy
## Supported Versions
The following versions are currently being supported with security updates:
| Version | Supported | Rsync version |
| ------- | ------------------ | ------------------ |
| 7.0.2 | :white_check_mark: | >= 3.4.0 |
| 7.0.1 | :warning: DEPRECATED | < 3.4.0 |
| 7.0.0 | :warning: DEPRECATED | < 3.4.0|
| 6.x | :x: EOL |< 3.4.0|
| 5.x | :x: EOL |< 3.4.0|
| 4.x | :x: EOL |< 3.4.0|
| 3.0 | :x: EOL |< 3.4.0|
| 2.0 | :x: EOL |< 3.4.0|
| 1.0 | :x: EOL |< 3.4.0|
## Reporting a Vulnerability
You can report a vulnerability by creating an issue.

View file

@ -9,6 +9,10 @@ inputs:
description: 'The remote shell argument'
required: false
default: ''
legacy_allow_rsa_hostkeys:
description: 'Enables support for legacy RSA host keys on OpenSSH 8.8+'
required: false
default: 'false'
path:
description: 'The local path'
required: false
@ -29,6 +33,10 @@ inputs:
remote_key:
description: 'The remote key'
required: true
remote_key_pass:
description: 'The remote key passphrase'
required: false
default: ''
runs:
using: 'docker'
image: 'Dockerfile'

View file

@ -1,18 +1,25 @@
#!/bin/bash
#!/bin/sh
if [ -z "$(echo "$INPUT_REMOTE_PATH" | awk '{$1=$1};1')" ]; then
echo "The remote_path can not be empty. see: github.com/Burnett01/rsync-deployments/issues/44"
exit 1
fi
# Start the SSH agent and load key.
source agent-start "$GITHUB_ACTION"
echo "$INPUT_REMOTE_KEY" | SSH_PASS="$INPUT_REMOTE_KEY_PASS" agent-add
# Add strict errors.
set -eu
# Set deploy key
SSH_PATH="$HOME/.ssh"
# Variables.
LEGACY_RSA_HOSTKEYS="-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa"
LEGACY_RSA_HOSTKEYS=$([ "$INPUT_LEGACY_ALLOW_RSA_HOSTKEYS" = "true" ] && echo "$LEGACY_RSA_HOSTKEYS" || echo "")
# Create .ssh dir if it doesn't exist
[ -d "$SSH_PATH" ] || mkdir "$SSH_PATH"
SWITCHES="$INPUT_SWITCHES"
RSH="ssh -o StrictHostKeyChecking=no $LEGACY_RSA_HOSTKEYS -p $INPUT_REMOTE_PORT $INPUT_RSH"
LOCAL_PATH="$GITHUB_WORKSPACE/$INPUT_PATH"
DSN="$INPUT_REMOTE_USER@$INPUT_REMOTE_HOST"
# Place deploy_key into .ssh dir
echo "$INPUT_REMOTE_KEY" > "$SSH_PATH/key"
# Set r+w to user only
chmod 600 "$SSH_PATH/key"
# Do deployment
sh -c "rsync $INPUT_SWITCHES -e 'ssh -i $SSH_PATH/key -o StrictHostKeyChecking=no -p $INPUT_REMOTE_PORT $INPUT_RSH' $GITHUB_WORKSPACE/$INPUT_PATH $INPUT_REMOTE_USER@$INPUT_REMOTE_HOST:$INPUT_REMOTE_PATH"
# Deploy.
sh -c "rsync $SWITCHES -e '$RSH' $LOCAL_PATH $DSN:$INPUT_REMOTE_PATH"