aboutsummaryrefslogtreecommitdiff
path: root/content/blog/2021-07-15-delete-gitlab-repos.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/blog/2021-07-15-delete-gitlab-repos.md')
-rw-r--r--content/blog/2021-07-15-delete-gitlab-repos.md116
1 files changed, 116 insertions, 0 deletions
diff --git a/content/blog/2021-07-15-delete-gitlab-repos.md b/content/blog/2021-07-15-delete-gitlab-repos.md
new file mode 100644
index 0000000..748630e
--- /dev/null
+++ b/content/blog/2021-07-15-delete-gitlab-repos.md
@@ -0,0 +1,116 @@
++++
+date = 2021-07-15
+title = "How t oDelete All GitLab Repositories"
+description = ""
+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
+```