aboutsummaryrefslogtreecommitdiff
path: root/blog/2021-07-15-delete-gitlab-repos.org
diff options
context:
space:
mode:
Diffstat (limited to 'blog/2021-07-15-delete-gitlab-repos.org')
-rw-r--r--blog/2021-07-15-delete-gitlab-repos.org115
1 files changed, 115 insertions, 0 deletions
diff --git a/blog/2021-07-15-delete-gitlab-repos.org b/blog/2021-07-15-delete-gitlab-repos.org
new file mode 100644
index 0000000..5d126f4
--- /dev/null
+++ b/blog/2021-07-15-delete-gitlab-repos.org
@@ -0,0 +1,115 @@
++++
+date = 2021-07-15
+title = "How to Delete All GitLab Repositories"
+description = "Learn how to delete all GitLab repositories in your user account."
+draft = false
++++
+
+## Background
+
+Have you ever used GitLab to host your source code, moved to a different host,
+and wanted to delete everything from your GitLab account?
+Well, this post covers any scenario where you would want to delete all
+repositories from your GitLab account.
+
+For me, I currently maintain around 30 repositories and don't like to manually
+delete them whenever I switch host.
+GitHub has a few different tools online to delete all repositories for you,
+but I have not found anything similar for GitLab, so I needed an alternative
+solution.
+
+## Use a Python Script
+
+### Requirements
+
+Before we look at the script, make sure you know your GitLab username. Next,
+[create an authorization token](https://gitlab.com/-/profile/personal_access_tokens)
+so that the Python script can delete your repositories. Don't lose this token or
+else you'll need to create a new one.
+
+### Create the Script
+
+To run a Python script, you must first create it. Open a terminal and enter the
+following commands in whichever directory you prefer to store the script. You
+can do the same things in a file manager if you prefer.
+
+```sh
+mkdir delete-gitlab
+```
+
+```sh
+cd delete-gitlab
+```
+
+```sh
+nano main.py
+```
+
+Enter the following code into your `main.py` script.
+
+```python
+import request
+import json
+
+
+def get_project_ids():
+ url = "https://gitlab.com/api/v4/users/{user-id}/projects"
+
+ querystring = {"owned": "true", "simple": "true", "per_page": "50"}
+
+ payload = ""
+ headers = {'authorization': 'Bearer {auth-token}'}
+
+ response = requests.request("GET", url, data=payload, headers=headers, params=querystring)
+
+ projects = json.loads(response.text)
+ projects_ids = list(map(lambda project: project.get('id'), projects))
+
+ return projects_ids
+
+
+def remove_project(project_id):
+ url_temp = "https://gitlab.com/api/v4/projects/{project}"
+ headers = {'authorization': 'Bearer {auth-token}'}
+ querystring = ""
+ payload = ""
+
+ url = url_temp.format(project=project_id)
+
+ response = requests.request("DELETE", url, data=payload, headers=headers, params=querystring)
+ project = json.loads(response.text)
+ print(project)
+
+
+def main():
+ projects_ids = get_project_ids()
+
+ url_temp = "https://gitlab.com/api/v4/projects/{project}"
+ headers = {'authorization': 'Bearer {auth-token}'}
+ querystring = ""
+ payload = ""
+
+ for project_id in projects_ids:
+ url = url_temp.format(project=project_id)
+
+ response = requests.request("GET", url, data=payload, headers=headers, params=querystring)
+ project = json.loads(response.text)
+ print(str(project.get('id')) + " " + project.get('name'))
+ print("Removing...")
+ remove_project(project_id)
+
+
+if __name__ == "__main__":
+ main()
+```
+
+Now that you have the proper information, replace `{user-id}` with your GitLab
+username and `{auth-token}` with the authorization token you created earlier.
+
+Finally, simply run the script and watch the output. You can also use PyCharm
+Community Edition to edit and run the Python script if you don't want to work
+in a terminal.
+
+```sh
+python3 main.py
+```