The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
The {multideploy}
package provides tools for deploying
file changes across multiple GitHub repositories. It’s designed to help
you manage standardized configurations, CI/CD workflows, and other
common files that need to be synchronized across multiple
repositories.
You can install the development version of {multideploy}
from GitHub
with:
# install.packages("remotes")
::install_github("coatless-rpkg/multideploy") remotes
{multideploy}
uses the gh
package for
GitHub API authentication and querying. Before using
{multideploy}
, make sure you have a GitHub Personal Access
Token (PAT) set up:
# Set GitHub PAT (or use .Renviron)
Sys.setenv(GITHUB_PAT = askpass::askpass("What is your GitHub Personal Access Token (PAT)?"))
For regular use, it’s recommended to add your PAT to the git
credential system through the {gitcreds}
package:
::gitcreds_set() gitcreds
Here’s an example showing how to deploy a standardized CI workflow
file to multiple repositories using {multideploy}
:
library(multideploy)
# List repositories in an organization matching a pattern
<- repos("my-organization", filter_regex = "^api-")
repos
# Deploy a CI workflow file to the selected repositories
<- file_deploy(
results source_file = "templates/check-standard.yml",
target_path = ".github/workflows/R-CMD-check.yaml",
repos = repos
)
# View results
print(results)
[!IMPORTANT]
The GitHub PAT used for authentication must have the necessary permissions to access and modify the repositories’ workflows.
If you’re looking for more detailed examples on how to use
{multideploy}
, we step through the additional features of
the package within this section.
List and filter repositories across users or organizations:
# Get all public repositories for a user
<- repos("username", type = "public")
user_repos
# Get repositories for an organization matching a pattern
<- repos("orgname", filter_regex = "^data-")
org_repos
# List organizations you have access to
<- orgs() my_orgs
Deploy individual files or sets of files to multiple repositories:
# Deploy a single file
file_deploy("local/path/file.R", "remote/path/file.R", repos)
# Create a mapping of multiple files
<- file_mapping(
mapping "local/lint.R" = ".lintr",
"local/gitignore" = ".gitignore",
dir = "templates/workflows",
pattern = "\\.ya?ml$",
target_prefix = ".github/workflows/"
)
# Create pull requests with multiple file changes
pr_create(
repos = repos,
branch_name = "feature/standardize-workflows",
title = "Standardize CI workflows",
body = "Implements organization-wide CI workflow standards",
file_mapping = mapping
)
Preview changes before making them:
# Preview changes without making them
file_deploy("local/file.R", "remote/file.R", repos, dry_run = TRUE)
# Preview PR creation
pr_create(repos, "branch-name", "PR Title", "PR Body", mapping, dry_run = TRUE)
AGPL (>= 3)
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.