--- title: "Create and manage a new GitLab project" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Create and manage a new GitLab project} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = FALSE ) ``` ```{r setup} library(gitlabr) ``` You can use this code to create all your new projects with a specific template. For instance, you can have a first issue to welcome all collaborators, explain them how your repository works and ask them to answer with a comment. This will make sure all collaborators know how to find issues and how to interact with you. Given you have a [GitLab.com](https://about.gitlab.com/) account, this code can also be run to contribute to 'gitlabr' and set a testing environment (See [CONTRIBUTING.md](https://github.com/ThinkR-open/gitlabr/blob/main/CONTRIBUTING.md)). # Set up GitLab connection - Do not forget to define an environment variable named `GITLAB_COM_TOKEN` + You can use `usethis::edit_r_environ()` to open the correct file ```{r} # GitLab con set_gitlab_connection( gitlab_url = "https://gitlab.com", private_token = Sys.getenv("GITLAB_COM_TOKEN") ) ``` # Define the project - Name of the project - Name of the default branch ```{r} test_project_name <- "testor.main" main_branch <- "main" ``` ## Create a project called `testor.main`, owned by the user Project is initialized with a README file. ```{r} project_info <- gl_new_project( name = test_project_name, default_branch = main_branch, initialize_with_readme = TRUE ) ``` ## Check created branch (depending on GitLab, main branch may still be "master") ```{r} gl_list_branches(project = project_info$id) ``` ## Open the URL of the project ```{r} browseURL(project_info$web_url) ``` ## Add/modify and commit the `README.md` ```{r} # Content of the README content_md <- paste(" # testor.main Repository to test R package ['gitlabr'](https://github.com/statnmap/gitlabr) ") # Push file with a commit gl_push_file( project = project_info$id, file_path = "README.md", content = content_md, commit_message = "Update README", branch = main_branch, overwrite = TRUE ) ``` ## Create a new branch named "for-tests" ```{r} # Create the new branch gl_create_branch(project = project_info$id, branch = "for-tests", ref = main_branch) # List branches to see if it was created # Note that branch creation can take a while, wait a little before using `gl_list_branches()` # gl_list_branches(project = project_info$id) ``` ## Add and commit a CI file (".gitlab-ci.yml") The ".gitlab-ci.yml" below is a simple example of CI with artifact. If you want a proper CI for your R package or bookdown project, you may want to look at `gitlabr::use_gitlab_ci()` and run it once you cloned your project locally. ```{r} content_ci <- paste(" testing: script: echo 'test 1 2 1 2' > 'test.txt' artifacts: paths: - test.txt ") gl_push_file( project = project_info$id, file_path = ".gitlab-ci.yml", content = content_ci, commit_message = "Add CI to the main branch", branch = main_branch, overwrite = TRUE ) ``` ## Use the commit created above and add a follow-up comment ```{r} # Get list of commits in default branch commits_in_main <- gl_get_commits(project = project_info$id, ref_name = main_branch) # Add a comment to this commmit gl_comment_commit( project = project_info$id, id = commits_in_main$id[1], text = "Write a comment" ) ``` ## Create a first issue (#1) with a follow-up comment ```{r} # Create an issue issue_info <- gl_create_issue( project = project_info$id, title = "Dont close issue 1", description = "An example issue to not close for tests" ) # Create a comment to the issue gl_comment_issue( project = project_info$id, id = issue_info$iid, text = "A comment on issue to not close" ) ``` ## Delete project - Use with caution! ```{r, eval=FALSE} gl_delete_project(project_id) ```