{"id":23387256,"url":"https://github.com/wp-forge/secure-rsync-deploy","last_synced_at":"2025-08-20T10:05:32.242Z","repository":{"id":221266453,"uuid":"747460751","full_name":"wp-forge/secure-rsync-deploy","owner":"wp-forge","description":null,"archived":false,"fork":false,"pushed_at":"2024-02-07T05:38:30.000Z","size":3,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-11T17:54:01.953Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wp-forge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-24T01:03:27.000Z","updated_at":"2025-05-28T18:03:27.000Z","dependencies_parsed_at":"2024-02-07T03:24:30.821Z","dependency_job_id":"50324b5a-04b7-46d7-a1cf-591a524521fc","html_url":"https://github.com/wp-forge/secure-rsync-deploy","commit_stats":null,"previous_names":["wp-forge/secure-rsync-deploy"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/wp-forge/secure-rsync-deploy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wp-forge%2Fsecure-rsync-deploy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wp-forge%2Fsecure-rsync-deploy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wp-forge%2Fsecure-rsync-deploy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wp-forge%2Fsecure-rsync-deploy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wp-forge","download_url":"https://codeload.github.com/wp-forge/secure-rsync-deploy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wp-forge%2Fsecure-rsync-deploy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271299775,"owners_count":24735417,"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","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-12-22T01:15:24.338Z","updated_at":"2025-08-20T10:05:32.192Z","avatar_url":"https://github.com/wp-forge.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Secure Rsync Deploy\n\nThis GitHub Action deploys files from a local directory on GitHub Actions to a folder on a remote server using rsync over SSH.\n\n## Inputs\n\n- `DEPLOY_KEY` _(required)_ — The private key part of an SSH key pair. Using [GitHub deploy keys](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys) are recommended. The public key part of the SSH key should be added to the `~/.ssh/authorized_keys` file on the server that receives the deployment. The private key should be stored as an Actions secret in your GitHub repo, environment, or organization. \n\n- `HOST` _(required)_ — Remote host name or IP address (e.g. example.com or 101.186.66.124). Using a [GitHub Actions configuration variable](https://docs.github.com/en/actions/learn-github-actions/variables#using-the-vars-context-to-access-configuration-variable-values) is recommended.\n\n- `USER` _(required)_ — The username to use on the remote server. Using a [GitHub Actions configuration variable](https://docs.github.com/en/actions/learn-github-actions/variables#using-the-vars-context-to-access-configuration-variable-values) is recommended.\n\n- `REMOTE_PATH` _(required)_ — The file path on the remote server that should be synced. For example: `/var/www/html/`. Using a [GitHub Actions configuration variable](https://docs.github.com/en/actions/learn-github-actions/variables#using-the-vars-context-to-access-configuration-variable-values) is recommended.\n\n- `LOCAL_PATH` _(optional)_ — The local folder to be synced, relative to the GitHub workspace. Defaults to the GitHub workspace directory.\n\n- `FLAGS` _(optional)_ — Provide any initial rsync options. The default flags are `--archive --checksum --compress --delete-after --force --recursive -verbose`.\n\n- `OPTIONS` _(optional)_ — Provide any additional rsync options. The default options are `--include-from=.distinclude --exclude-from=.distignore --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r`. This means that, **by default, you will need a `.distinclude` and a `.distignore` file in the root of your project**. These files can contain an include/exclude pattern on each line.\n\n## Example Usage\n\n### Basic Example\n\nThis example excludes all optional values and uses variables and secrets to customize the configuration. All changes are deployed whenever code is pushed to the `main` branch.\n\n```yml\nname: Deploy to production\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: wp-forge/secure-rsync-deploy@1.0.0\n        with:\n          USER: ${{ vars.SERVER_USER }}\n          HOST: ${{ vars.SERVER_HOST }}\n          REMOTE_PATH: ${{ vars.SERVER_PATH }}\n          DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}\n\n```\n\n### Advanced Example\n\nThis example includes all optional values and uses variables and secrets to customize the required options. All changes are deployed whenever a new release is published on GitHub.\n\n\n```yml\nname: Deploy to production\n\non:\n  release:\n    types:\n      - published\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: wp-forge/secure-rsync-deploy@1.0.0\n        with:\n          FLAGS: -aczrv --delete\n          OPTIONS: --exclude=/.* --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r\n          LOCAL_PATH: /dist/\n          USER: ${{ vars.SERVER_USER }}\n          HOST: ${{ vars.SERVER_HOST }}\n          REMOTE_PATH: ${{ vars.SERVER_PATH }}\n          DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}\n\n```\n\n## REMINDER!\nA misconfiguration could result in a loss of files on the remote server. Please backup your remote files before testing or imlementing this action! \n\nAlso, be sure to check the options (including the defaults) to make sure you are happy with them.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwp-forge%2Fsecure-rsync-deploy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwp-forge%2Fsecure-rsync-deploy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwp-forge%2Fsecure-rsync-deploy/lists"}