The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
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[@]metanet.ch.
Never dreamt of creating and managing your GitLab projects from R? {gitlabr} is here to help you with that!
With {gitlabr}, you can interact with GitLab’s API to manage your projects, issues, merge requests, pipelines, wikis, and more.
Now, the automation of your regular tasks with GitLab is just a few lines of R code away.
You can install the most recent stable version from CRAN using:
To install the development version using devtools, type:
See the CONTRIBUTING.md for instructions on how to run tests locally and contributor information.
GitLab 11.6 or higher is generally recommended when using {gitlabr} version 2.0.0 or higher. This {gitlabr} version uses the GitLab API v4.
R code using {gitlabr} to perform some common GitLab actions can look like this
api
https://gitlab.com/-/profile/personal_access_tokens
GITLAB_COM_TOKEN
with usethis::edit_r_environ()
and restart your sessionlibrary(gitlabr)
# You can verify your token works
# Sys.getenv("GITLAB_COM_TOKEN")
# connect as a fixed user to a GitLab instance for the session
set_gitlab_connection(
gitlab_url = "https://gitlab.com",
private_token = Sys.getenv("GITLAB_COM_TOKEN")
)
max_page
, otherwise the entire GitLab.com will be downloaded here…owned = FALSE
to retrieve all projects except ours.# a tibble is returned, as is always by {gitlabr} functions
gl_list_projects(max_page = 2, owned = FALSE)
#> # A tibble: 40 × 129
#> id name name_with_namespace path path_with_namespace created_at
#> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 57865685 nodejsappl… Arsalan Ahmed Zia … node… arsalanahmedzia_th… 2024-05-1…
#> 2 57865684 Self-Hoste… Anand R / Self-Hos… self… anandr72/self-host… 2024-05-1…
#> 3 57865661 cuda handcat / cuda cuda handcat/cuda 2024-05-1…
#> 4 57865656 TicTacToe Debeleac Vincenzzi… tict… Andreidoo/tictactoe 2024-05-1…
#> 5 57865597 Sparks Git… Nicolas Tatard / S… spar… tatardnicolas47/sp… 2024-05-1…
#> 6 57865595 Sparks Git… Patrick Poncy / Sp… spar… PatSopra/sparks-gi… 2024-05-1…
#> 7 57865594 Sparks Git… Emie Bourdeau / Sp… spar… Emie_Bourdeau/spar… 2024-05-1…
#> 8 57865590 ComMan UI ossama hassari / C… comm… ossamahassari98/co… 2024-05-1…
#> 9 57865581 Sparks Git… Raphaël Mechali / … spar… RaphaelMechali/spa… 2024-05-1…
#> 10 57865574 copy local… mvaskuri / copy lo… copy… mvaskuri1/copy-loc… 2024-05-1…
#> # ℹ 30 more rows
#> # ℹ 123 more variables: default_branch <chr>, ssh_url_to_repo <chr>,
#> # http_url_to_repo <chr>, web_url <chr>, readme_url <chr>, forks_count <chr>,
#> # star_count <chr>, last_activity_at <chr>, namespace.id <chr>,
#> # namespace.name <chr>, namespace.path <chr>, namespace.kind <chr>,
#> # namespace.full_path <chr>, namespace.avatar_url <chr>,
#> # namespace.web_url <chr>, container_registry_image_prefix <chr>, …
ID = 20384533
on GitLab.commain
, you need to specify it with gitlabr_options_set()
gl_list_files()
gl_list_files(project = my_project)
#> # A tibble: 2 × 5
#> id name type path mode
#> <chr> <chr> <chr> <chr> <chr>
#> 1 9c66eff9a1f6f34b6d9108ef07d76f8ce4c4e47f NEWS.md blob NEWS.md 100644
#> 2 c36b681bb31b80cbd090f07c95f09788c88629a6 example.txt blob example.txt 100644
gl_list_issues()
gl_list_issues(project = my_project)
#> # A tibble: 2 × 40
#> id iid project_id title description state created_at updated_at author.id
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 6952… 2 20384533 A se… The blog p… open… 2020-08-0… 2020-08-0… 4809823
#> 2 6952… 1 20384533 An e… No desc in… open… 2020-08-0… 2020-08-0… 4809823
#> # ℹ 31 more variables: author.username <chr>, author.name <chr>,
#> # author.state <chr>, author.locked <chr>, author.avatar_url <chr>,
#> # author.web_url <chr>, type <chr>, user_notes_count <chr>,
#> # merge_requests_count <chr>, upvotes <chr>, downvotes <chr>,
#> # confidential <chr>, issue_type <chr>, web_url <chr>,
#> # time_stats.time_estimate <chr>, time_stats.total_time_spent <chr>,
#> # task_completion_status.count <chr>, …
# create a new issue
new_feature_issue <- gl_create_issue(project = my_project, title = "Implement new feature")
# Your user ID
my_id <- 0000000
# assign issue to me
gl_assign_issue(
project = my_project,
issue_id = new_feature_issue$iid,
assignee_id = my_id
)
# Verify new issue is here
gl_list_issues(project = my_project, state = "opened")
# close issue
gl_close_issue(project = my_project, issue_id = new_feature_issue$iid)$state
Note that recent version of GitLab may have anti-spam on opening issues, leading to ERROR with gl_create_issue()
if you abuse the API. You will need to open the issue manually in this case.
If an API request is not already available in {gitlabr}, function gitlab()
allows to use any request of the GitLab API https://docs.gitlab.com/ce/api/.
For instance, the API documentation shows how to create a new project in https://docs.gitlab.com/ce/api/projects.html#create-project:
POST
projects
name
or path
(if name
not set)default_branch
is an attribute that can be set if wanted, but not requiredThe corresponding use of gitlab()
is:
Implement whatever suits your needs !
{gitlabr} can also be used to create a .gitlab-ci.yml
file to test, build and check an R package, a bookdown, … using GitLab’s CI software. Use gitlabr::use_gitlab_ci()
with a specific type
in your project and your CI should be ready to start in the next commit.
There are pre-defined templates:
bookdown-production.yml
bookdown.yml
check-coverage-pkgdown-renv.yml
check-coverage-pkgdown.yml
vignette("a-gitlabr", package = "gitlabr")
You’re welcome to contribute to {gitlabr} by editing the source code, adding more convenience functions, filing issues, etc. CONTRIBUTING.md compiles some information helpful in that process.
Please note that the gitlabr project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
Note that the {gitlabr} package was originally created by Jirka Lewandowski. The present repository is a fork to be able to continue development of this package.
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.