{"id":14110466,"url":"https://github.com/Burnett01/rsync-deployments","last_synced_at":"2025-08-01T10:33:55.316Z","repository":{"id":38027380,"uuid":"225893917","full_name":"Burnett01/rsync-deployments","owner":"Burnett01","description":"GitHub Action for deploying code via rsync over ssh","archived":false,"fork":false,"pushed_at":"2024-09-22T09:35:24.000Z","size":122,"stargazers_count":367,"open_issues_count":3,"forks_count":60,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-05T03:40:41.614Z","etag":null,"topics":["action","actions","continuous-delivery","continuous-deployment","deploy","deployment","devops","docker","github","github-action","github-actions","passphrase","rsync","ssh","ssh-key"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Burnett01.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-04T15:05:39.000Z","updated_at":"2024-12-03T01:20:56.000Z","dependencies_parsed_at":"2024-01-29T06:14:05.500Z","dependency_job_id":"f583a755-0a78-4c66-a836-8a2a48cd0c95","html_url":"https://github.com/Burnett01/rsync-deployments","commit_stats":{"total_commits":79,"total_committers":7,"mean_commits":"11.285714285714286","dds":"0.31645569620253167","last_synced_commit":"8bb79ee6b5bb65498903b07b4b7bc08de66311ae"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Burnett01%2Frsync-deployments","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Burnett01%2Frsync-deployments/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Burnett01%2Frsync-deployments/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Burnett01%2Frsync-deployments/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Burnett01","download_url":"https://codeload.github.com/Burnett01/rsync-deployments/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228369359,"owners_count":17909237,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["action","actions","continuous-delivery","continuous-deployment","deploy","deployment","devops","docker","github","github-action","github-actions","passphrase","rsync","ssh","ssh-key"],"created_at":"2024-08-14T10:02:51.755Z","updated_at":"2025-08-01T10:33:55.292Z","avatar_url":"https://github.com/Burnett01.png","language":"Shell","readme":"# rsync deployments\n\nThis GitHub Action (amd64) deploys files in `GITHUB_WORKSPACE` to a remote folder via rsync over ssh. \n\nUse this action in a CD workflow which leaves deployable code in `GITHUB_WORKSPACE`.\n\nThe 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.\n\nAlpine version: [3.19.1](https://alpinelinux.org/posts/Alpine-3.19.1-released.html)\nRsync version: [3.4.0-r0](https://download.samba.org/pub/rsync/NEWS#3.4.0)\n\n---\n\n## Inputs\n\n- `switches`* - The first is for any initial/required rsync flags, eg: `-avzr --delete`\n\n- `rsh` - Remote shell commands\n\n- `legacy_allow_rsa_hostkeys` - Enables support for legacy RSA host keys on OpenSSH 8.8+. (\"true\" / \"false\")\n\n- `path` - The source path. Defaults to GITHUB_WORKSPACE and is relative to it\n\n- `remote_path`* - The deployment target path\n\n- `remote_host`* - The remote host\n\n- `remote_port` - The remote port. Defaults to 22\n\n- `remote_user`* - The remote user\n\n- `remote_key`* - The remote ssh key\n\n- `remote_key_pass` - The remote ssh key passphrase (if any)\n\n``* = Required``\n\n## Required secret(s)\n\nThis 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.\n\n\u003e Always use secrets when dealing with sensitive inputs!\n\nFor simplicity, we are using `DEPLOY_*` as the secret variables throughout the examples.\n\n## Current Version: 7.0.2\n\n## Example usage\n\nSimple:\n\n```yml\nname: DEPLOY\non:\n  push:\n    branches:\n    - master\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v3\n    - name: rsync deployments\n      uses: burnett01/rsync-deployments@7.0.2\n      with:\n        switches: -avzr --delete\n        path: src/\n        remote_path: /var/www/html/\n        remote_host: example.com\n        remote_user: debian\n        remote_key: ${{ secrets.DEPLOY_KEY }}\n```\n\nAdvanced:\n\n```yml\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v3\n    - name: rsync deployments\n      uses: burnett01/rsync-deployments@7.0.2\n      with:\n        switches: -avzr --delete --exclude=\"\" --include=\"\" --filter=\"\"\n        path: src/\n        remote_path: /var/www/html/\n        remote_host: example.com\n        remote_port: 5555\n        remote_user: debian\n        remote_key: ${{ secrets.DEPLOY_KEY }}\n```\n\nFor better **security**, I suggest you create additional secrets for remote_host, remote_port, remote_user and remote_path inputs.\n\n```yml\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v3\n    - name: rsync deployments\n      uses: burnett01/rsync-deployments@7.0.2\n      with:\n        switches: -avzr --delete\n        path: src/\n        remote_path: ${{ secrets.DEPLOY_PATH }}\n        remote_host: ${{ secrets.DEPLOY_HOST }}\n        remote_port: ${{ secrets.DEPLOY_PORT }}\n        remote_user: ${{ secrets.DEPLOY_USER }}\n        remote_key: ${{ secrets.DEPLOY_KEY }}\n```\n\nIf your private key is passphrase protected you should use:\n\n```yml\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v3\n    - name: rsync deployments\n      uses: burnett01/rsync-deployments@7.0.2\n      with:\n        switches: -avzr --delete\n        path: src/\n        remote_path: ${{ secrets.DEPLOY_PATH }}\n        remote_host: ${{ secrets.DEPLOY_HOST }}\n        remote_port: ${{ secrets.DEPLOY_PORT }}\n        remote_user: ${{ secrets.DEPLOY_USER }}\n        remote_key: ${{ secrets.DEPLOY_KEY }}\n        remote_key_pass: ${{ secrets.DEPLOY_KEY_PASS }}\n```\n\n---\n\n#### Legacy RSA Hostkeys support for OpenSSH Servers \u003e= 8.8+\n\nIf your remote OpenSSH Server still uses RSA hostkeys, then you have to\nmanually enable legacy support for this by using ``legacy_allow_rsa_hostkeys: \"true\"``.\n\n```yml\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v3\n    - name: rsync deployments\n      uses: burnett01/rsync-deployments@7.0.2\n      with:\n        switches: -avzr --delete\n        legacy_allow_rsa_hostkeys: \"true\"\n        path: src/\n        remote_path: ${{ secrets.DEPLOY_PATH }}\n        remote_host: ${{ secrets.DEPLOY_HOST }}\n        remote_port: ${{ secrets.DEPLOY_PORT }}\n        remote_user: ${{ secrets.DEPLOY_USER }}\n        remote_key: ${{ secrets.DEPLOY_KEY }}\n```\n\nSee [#49](https://github.com/Burnett01/rsync-deployments/issues/49) and [#24](https://github.com/Burnett01/rsync-deployments/issues/24) for more information.\n\n---\n\n## Version 7.0.0 \u0026 7.0.1 (DEPRECATED)\n\nCheck here: \n\n- https://github.com/Burnett01/rsync-deployments/tree/7.0.0  (alpine 3.19.1)\n- https://github.com/Burnett01/rsync-deployments/tree/7.0.1  (alpine 3.19.1)\n  \n---\n\n## Version 6.0 (EOL)\n\nCheck here: \n\n- https://github.com/Burnett01/rsync-deployments/tree/6.0  (alpine 3.17.2)\n\n---\n\n## Version 5.0, 5.1 \u0026 5.2 \u0026 5.x (EOL)\n\nCheck here: \n\n- https://github.com/Burnett01/rsync-deployments/tree/5.0  (alpine 3.11.x)\n- https://github.com/Burnett01/rsync-deployments/tree/5.1  (alpine 3.14.1)\n- https://github.com/Burnett01/rsync-deployments/tree/5.2  (alpine 3.15.0)\n- https://github.com/Burnett01/rsync-deployments/tree/5.2.1  (alpine 3.16.1)\n- https://github.com/Burnett01/rsync-deployments/tree/5.2.2  (alpine 3.17.2)\n\n---\n\n## Version 4.0 \u0026 4.1 (EOL)\n\nCheck here: \n\n- https://github.com/Burnett01/rsync-deployments/tree/4.0\n- https://github.com/Burnett01/rsync-deployments/tree/4.1\n\nVersion 4.0 \u0026 4.1 use the ``drinternet/rsync:1.0.1`` base-image.\n\n---\n\n## Version 3.0 (EOL)\n\nCheck here: https://github.com/Burnett01/rsync-deployments/tree/3.0\n\nVersion 3.0 uses the ``alpine:latest`` base-image directly.\u003cbr\u003e\nConsider upgrading to 4.0 that uses a docker-image ``drinternet/rsync:1.0.1`` that is\u003cbr\u003e\nbased on ``alpine:latest``and heavily optimized for rsync.\n\n## Version 2.0 (EOL)\n\nCheck here: https://github.com/Burnett01/rsync-deployments/tree/2.0\n\nVersion 2.0 uses a larger base-image (``ubuntu:latest``).\u003cbr\u003e\nConsider upgrading to 3.0 for even faster deployments.\n\n## Version 1.0 (EOL)\n\nCheck here: https://github.com/Burnett01/rsync-deployments/tree/1.0\n\nPlease note that version 1.0 has reached end of life state.\n\n---\n\n## Acknowledgements\n\n+ This project is a fork of [Contention/rsync-deployments](https://github.com/Contention/rsync-deployments)\n+ Base image [JoshPiper/rsync-docker](https://github.com/JoshPiper/rsync-docker)\n\n---\n\n## Media\n\nThis action was featured in multiple blogs across the globe:\n\n\u003e Disclaimer: The author \u0026 co-authors are not responsible for the content of the site-links below.\n\n- https://elijahverdoorn.com/2020/04/14/automating-deployment-with-github-actions/\n\n- https://www.vektor-inc.co.jp/post/github-actions-deploy/\n\n- https://webpick.info/automatiser-avec-github-actions/\n\n- https://matthias-andrasch.eu/blog/2021/tutorial-webseite-mittels-github-actions-deployment-zu-uberspace-uebertragen-rsync/\n\n- https://jishuin.proginn.com/p/763bfbd38928\n\n- https://cloud.tencent.com/developer/article/1786522\n\n","funding_links":[],"categories":["Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBurnett01%2Frsync-deployments","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBurnett01%2Frsync-deployments","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBurnett01%2Frsync-deployments/lists"}