From 3b162696e5c061a6c34cae4cdf391beef427a85c Mon Sep 17 00:00:00 2001 From: Eshan Roy Date: Thu, 5 Dec 2024 12:39:26 +0530 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(=5Ftypos):=20some=20typos=20?= =?UTF-8?q?in=20filename?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...docs-dev-guide-deploy-packages-md-043.json | 14 +- .../site-docs-dev-guide-gpg-key-md-89e.json | 2 +- ...docs-dev-guide-install-keyring-md-404.json | 12 +- .../site-docs-dev-guide-write-md-ec3.json | 4 +- .../version-current-metadata-prop-751.json | 24 +-- .../docusaurus-debug-all-content-673.json | 56 ++--- .docusaurus/globalData.json | 4 +- .docusaurus/registry.js | 2 +- .docusaurus/routes.js | 10 +- .docusaurus/routesChunkNames.json | 10 +- docs/dev_guide/deploy_packages.md | 197 +++++++++++++++++- docs/dev_guide/install_keyring.md | 2 +- .../{upload_gog_key.md => upload_gpg_key.md} | 0 13 files changed, 266 insertions(+), 71 deletions(-) rename docs/dev_guide/{upload_gog_key.md => upload_gpg_key.md} (100%) diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-deploy-packages-md-043.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-deploy-packages-md-043.json index de30a2d3..370757fe 100644 --- a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-deploy-packages-md-043.json +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-deploy-packages-md-043.json @@ -1,7 +1,7 @@ { "id": "dev_guide/deploy_packages", "title": "Upload & Deploy Packages", - "description": "", + "description": "🚀 Uploading and Deploying an Arch Linux Package on GitHub", "source": "@site/docs/dev_guide/deploy_packages.md", "sourceDirName": "dev_guide", "slug": "/dev_guide/deploy_packages", @@ -11,17 +11,17 @@ "editUrl": "https://github.com/Snigdha-OS/documentation/tree/master/docs/dev_guide/deploy_packages.md", "tags": [], "version": "current", - "sidebarPosition": 4, + "sidebarPosition": 5, "frontMatter": { - "sidebar_position": 4 + "sidebar_position": 5 }, "sidebar": "tutorialSidebar", "previous": { - "title": "Upload Key => Server", - "permalink": "/documentation/dev_guide/upload_gog_key" - }, - "next": { "title": "Install Keyrings", "permalink": "/documentation/dev_guide/install_keyring" + }, + "next": { + "title": "Writing Documentation", + "permalink": "/documentation/dev_guide/write" } } \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-gpg-key-md-89e.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-gpg-key-md-89e.json index ba5b5963..314bb509 100644 --- a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-gpg-key-md-89e.json +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-gpg-key-md-89e.json @@ -22,6 +22,6 @@ }, "next": { "title": "Upload Key => Server", - "permalink": "/documentation/dev_guide/upload_gog_key" + "permalink": "/documentation/dev_guide/upload_gpg_key" } } \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-install-keyring-md-404.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-install-keyring-md-404.json index 7343792e..3ec35138 100644 --- a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-install-keyring-md-404.json +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-install-keyring-md-404.json @@ -11,17 +11,17 @@ "editUrl": "https://github.com/Snigdha-OS/documentation/tree/master/docs/dev_guide/install_keyring.md", "tags": [], "version": "current", - "sidebarPosition": 5, + "sidebarPosition": 4, "frontMatter": { - "sidebar_position": 5 + "sidebar_position": 4 }, "sidebar": "tutorialSidebar", "previous": { - "title": "Upload & Deploy Packages", - "permalink": "/documentation/dev_guide/deploy_packages" + "title": "Upload Key => Server", + "permalink": "/documentation/dev_guide/upload_gpg_key" }, "next": { - "title": "Writing Documentation", - "permalink": "/documentation/dev_guide/write" + "title": "Upload & Deploy Packages", + "permalink": "/documentation/dev_guide/deploy_packages" } } \ No newline at end of file diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-write-md-ec3.json b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-write-md-ec3.json index 7c109208..cc8e4a98 100644 --- a/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-write-md-ec3.json +++ b/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-dev-guide-write-md-ec3.json @@ -17,8 +17,8 @@ }, "sidebar": "tutorialSidebar", "previous": { - "title": "Install Keyrings", - "permalink": "/documentation/dev_guide/install_keyring" + "title": "Upload & Deploy Packages", + "permalink": "/documentation/dev_guide/deploy_packages" }, "next": { "title": "PKGBUILD Template", diff --git a/.docusaurus/docusaurus-plugin-content-docs/default/version-current-metadata-prop-751.json b/.docusaurus/docusaurus-plugin-content-docs/default/version-current-metadata-prop-751.json index f0a1315e..c938e6de 100644 --- a/.docusaurus/docusaurus-plugin-content-docs/default/version-current-metadata-prop-751.json +++ b/.docusaurus/docusaurus-plugin-content-docs/default/version-current-metadata-prop-751.json @@ -312,15 +312,8 @@ { "type": "link", "label": "Upload Key => Server", - "href": "/documentation/dev_guide/upload_gog_key", - "docId": "dev_guide/upload_gog_key", - "unlisted": false - }, - { - "type": "link", - "label": "Upload & Deploy Packages", - "href": "/documentation/dev_guide/deploy_packages", - "docId": "dev_guide/deploy_packages", + "href": "/documentation/dev_guide/upload_gpg_key", + "docId": "dev_guide/upload_gpg_key", "unlisted": false }, { @@ -330,6 +323,13 @@ "docId": "dev_guide/install_keyring", "unlisted": false }, + { + "type": "link", + "label": "Upload & Deploy Packages", + "href": "/documentation/dev_guide/deploy_packages", + "docId": "dev_guide/deploy_packages", + "unlisted": false + }, { "type": "link", "label": "Writing Documentation", @@ -393,7 +393,7 @@ "dev_guide/deploy_packages": { "id": "dev_guide/deploy_packages", "title": "Upload & Deploy Packages", - "description": "", + "description": "🚀 Uploading and Deploying an Arch Linux Package on GitHub", "sidebar": "tutorialSidebar" }, "dev_guide/gpg_key": { @@ -414,8 +414,8 @@ "description": "Snigdha OS has it's own PKGBUILD template for building packages. We follow the the template so that we can maintain the packages in a better way. If you are building packages for Snigdha OS, then it will be a good option to follow the PKGBUILD template.", "sidebar": "tutorialSidebar" }, - "dev_guide/upload_gog_key": { - "id": "dev_guide/upload_gog_key", + "dev_guide/upload_gpg_key": { + "id": "dev_guide/upload_gpg_key", "title": "Upload Key => Server", "description": "🌐 Sending and Receiving GPG Keys Using a Key Server", "sidebar": "tutorialSidebar" diff --git a/.docusaurus/docusaurus-plugin-debug/default/docusaurus-debug-all-content-673.json b/.docusaurus/docusaurus-plugin-debug/default/docusaurus-debug-all-content-673.json index 94788268..a44e3388 100644 --- a/.docusaurus/docusaurus-plugin-debug/default/docusaurus-debug-all-content-673.json +++ b/.docusaurus/docusaurus-plugin-debug/default/docusaurus-debug-all-content-673.json @@ -130,7 +130,7 @@ { "id": "dev_guide/deploy_packages", "title": "Upload & Deploy Packages", - "description": "", + "description": "🚀 Uploading and Deploying an Arch Linux Package on GitHub", "source": "@site/docs/dev_guide/deploy_packages.md", "sourceDirName": "dev_guide", "slug": "/dev_guide/deploy_packages", @@ -140,18 +140,18 @@ "editUrl": "https://github.com/Snigdha-OS/documentation/tree/master/docs/dev_guide/deploy_packages.md", "tags": [], "version": "current", - "sidebarPosition": 4, + "sidebarPosition": 5, "frontMatter": { - "sidebar_position": 4 + "sidebar_position": 5 }, "sidebar": "tutorialSidebar", "previous": { - "title": "Upload Key => Server", - "permalink": "/documentation/dev_guide/upload_gog_key" - }, - "next": { "title": "Install Keyrings", "permalink": "/documentation/dev_guide/install_keyring" + }, + "next": { + "title": "Writing Documentation", + "permalink": "/documentation/dev_guide/write" } }, { @@ -178,7 +178,7 @@ }, "next": { "title": "Upload Key => Server", - "permalink": "/documentation/dev_guide/upload_gog_key" + "permalink": "/documentation/dev_guide/upload_gpg_key" } }, { @@ -194,18 +194,18 @@ "editUrl": "https://github.com/Snigdha-OS/documentation/tree/master/docs/dev_guide/install_keyring.md", "tags": [], "version": "current", - "sidebarPosition": 5, + "sidebarPosition": 4, "frontMatter": { - "sidebar_position": 5 + "sidebar_position": 4 }, "sidebar": "tutorialSidebar", "previous": { - "title": "Upload & Deploy Packages", - "permalink": "/documentation/dev_guide/deploy_packages" + "title": "Upload Key => Server", + "permalink": "/documentation/dev_guide/upload_gpg_key" }, "next": { - "title": "Writing Documentation", - "permalink": "/documentation/dev_guide/write" + "title": "Upload & Deploy Packages", + "permalink": "/documentation/dev_guide/deploy_packages" } }, { @@ -236,16 +236,16 @@ } }, { - "id": "dev_guide/upload_gog_key", + "id": "dev_guide/upload_gpg_key", "title": "Upload Key => Server", "description": "🌐 Sending and Receiving GPG Keys Using a Key Server", - "source": "@site/docs/dev_guide/upload_gog_key.md", + "source": "@site/docs/dev_guide/upload_gpg_key.md", "sourceDirName": "dev_guide", - "slug": "/dev_guide/upload_gog_key", - "permalink": "/documentation/dev_guide/upload_gog_key", + "slug": "/dev_guide/upload_gpg_key", + "permalink": "/documentation/dev_guide/upload_gpg_key", "draft": false, "unlisted": false, - "editUrl": "https://github.com/Snigdha-OS/documentation/tree/master/docs/dev_guide/upload_gog_key.md", + "editUrl": "https://github.com/Snigdha-OS/documentation/tree/master/docs/dev_guide/upload_gpg_key.md", "tags": [], "version": "current", "sidebarPosition": 3, @@ -258,8 +258,8 @@ "permalink": "/documentation/dev_guide/gpg_key" }, "next": { - "title": "Upload & Deploy Packages", - "permalink": "/documentation/dev_guide/deploy_packages" + "title": "Install Keyrings", + "permalink": "/documentation/dev_guide/install_keyring" } }, { @@ -281,8 +281,8 @@ }, "sidebar": "tutorialSidebar", "previous": { - "title": "Install Keyrings", - "permalink": "/documentation/dev_guide/install_keyring" + "title": "Upload & Deploy Packages", + "permalink": "/documentation/dev_guide/deploy_packages" }, "next": { "title": "PKGBUILD Template", @@ -1311,16 +1311,16 @@ }, { "type": "doc", - "id": "dev_guide/upload_gog_key" - }, - { - "type": "doc", - "id": "dev_guide/deploy_packages" + "id": "dev_guide/upload_gpg_key" }, { "type": "doc", "id": "dev_guide/install_keyring" }, + { + "type": "doc", + "id": "dev_guide/deploy_packages" + }, { "type": "doc", "id": "dev_guide/write" diff --git a/.docusaurus/globalData.json b/.docusaurus/globalData.json index ae9eef76..cdc27aae 100644 --- a/.docusaurus/globalData.json +++ b/.docusaurus/globalData.json @@ -51,8 +51,8 @@ "sidebar": "tutorialSidebar" }, { - "id": "dev_guide/upload_gog_key", - "path": "/documentation/dev_guide/upload_gog_key", + "id": "dev_guide/upload_gpg_key", + "path": "/documentation/dev_guide/upload_gpg_key", "sidebar": "tutorialSidebar" }, { diff --git a/.docusaurus/registry.js b/.docusaurus/registry.js index 2f71c7b1..41ec4b17 100644 --- a/.docusaurus/registry.js +++ b/.docusaurus/registry.js @@ -39,7 +39,7 @@ export default { "content---documentation-dev-guide-gpg-key-89-e-a96": [() => import(/* webpackChunkName: "content---documentation-dev-guide-gpg-key-89-e-a96" */ "@site/docs/dev_guide/gpg_key.md"), "@site/docs/dev_guide/gpg_key.md", require.resolveWeak("@site/docs/dev_guide/gpg_key.md")], "content---documentation-dev-guide-install-keyring-404-6d6": [() => import(/* webpackChunkName: "content---documentation-dev-guide-install-keyring-404-6d6" */ "@site/docs/dev_guide/install_keyring.md"), "@site/docs/dev_guide/install_keyring.md", require.resolveWeak("@site/docs/dev_guide/install_keyring.md")], "content---documentation-dev-guide-pkgbuild-66-e-684": [() => import(/* webpackChunkName: "content---documentation-dev-guide-pkgbuild-66-e-684" */ "@site/docs/dev_guide/pkgbuild.md"), "@site/docs/dev_guide/pkgbuild.md", require.resolveWeak("@site/docs/dev_guide/pkgbuild.md")], - "content---documentation-dev-guide-upload-gog-keya-6-f-008": [() => import(/* webpackChunkName: "content---documentation-dev-guide-upload-gog-keya-6-f-008" */ "@site/docs/dev_guide/upload_gog_key.md"), "@site/docs/dev_guide/upload_gog_key.md", require.resolveWeak("@site/docs/dev_guide/upload_gog_key.md")], + "content---documentation-dev-guide-upload-gpg-key-92-e-790": [() => import(/* webpackChunkName: "content---documentation-dev-guide-upload-gpg-key-92-e-790" */ "@site/docs/dev_guide/upload_gpg_key.md"), "@site/docs/dev_guide/upload_gpg_key.md", require.resolveWeak("@site/docs/dev_guide/upload_gpg_key.md")], "content---documentation-dev-guide-writeec-3-564": [() => import(/* webpackChunkName: "content---documentation-dev-guide-writeec-3-564" */ "@site/docs/dev_guide/write.md"), "@site/docs/dev_guide/write.md", require.resolveWeak("@site/docs/dev_guide/write.md")], "content---documentation-installation-download-snigdha-os-34-e-4c4": [() => import(/* webpackChunkName: "content---documentation-installation-download-snigdha-os-34-e-4c4" */ "@site/docs/installation/download_snigdha_os.md"), "@site/docs/installation/download_snigdha_os.md", require.resolveWeak("@site/docs/installation/download_snigdha_os.md")], "content---documentation-installation-live-env-795-073": [() => import(/* webpackChunkName: "content---documentation-installation-live-env-795-073" */ "@site/docs/installation/live_env.md"), "@site/docs/installation/live_env.md", require.resolveWeak("@site/docs/installation/live_env.md")], diff --git a/.docusaurus/routes.js b/.docusaurus/routes.js index 0ec72f0e..716a75a3 100644 --- a/.docusaurus/routes.js +++ b/.docusaurus/routes.js @@ -79,15 +79,15 @@ export default [ }, { path: '/documentation/', - component: ComponentCreator('/documentation/', '117'), + component: ComponentCreator('/documentation/', '3af'), routes: [ { path: '/documentation/', - component: ComponentCreator('/documentation/', 'f55'), + component: ComponentCreator('/documentation/', '6df'), routes: [ { path: '/documentation/', - component: ComponentCreator('/documentation/', 'e93'), + component: ComponentCreator('/documentation/', '82d'), routes: [ { path: '/documentation/before_installation/imporatnt_notes', @@ -192,8 +192,8 @@ export default [ sidebar: "tutorialSidebar" }, { - path: '/documentation/dev_guide/upload_gog_key', - component: ComponentCreator('/documentation/dev_guide/upload_gog_key', '899'), + path: '/documentation/dev_guide/upload_gpg_key', + component: ComponentCreator('/documentation/dev_guide/upload_gpg_key', '2be'), exact: true, sidebar: "tutorialSidebar" }, diff --git a/.docusaurus/routesChunkNames.json b/.docusaurus/routesChunkNames.json index 9b36e487..03a63d9a 100644 --- a/.docusaurus/routesChunkNames.json +++ b/.docusaurus/routesChunkNames.json @@ -113,17 +113,17 @@ }, "content": "content---documentation-privacy-policyfbb-0dc" }, - "/documentation/-117": { + "/documentation/-3af": { "__comp": "__comp---theme-docs-root-5-e-9-0b6", "__context": { "plugin": "plugin---documentation-ed-9-690" } }, - "/documentation/-f55": { + "/documentation/-6df": { "__comp": "__comp---theme-doc-version-roota-7-b-5de", "version": "version---documentation-935-548" }, - "/documentation/-e93": { + "/documentation/-82d": { "__comp": "__comp---theme-doc-roota-94-67a" }, "/documentation/before_installation/imporatnt_notes-89a": { @@ -194,9 +194,9 @@ "__comp": "__comp---theme-doc-item-178-a40", "content": "content---documentation-dev-guide-pkgbuild-66-e-684" }, - "/documentation/dev_guide/upload_gog_key-899": { + "/documentation/dev_guide/upload_gpg_key-2be": { "__comp": "__comp---theme-doc-item-178-a40", - "content": "content---documentation-dev-guide-upload-gog-keya-6-f-008" + "content": "content---documentation-dev-guide-upload-gpg-key-92-e-790" }, "/documentation/dev_guide/write-856": { "__comp": "__comp---theme-doc-item-178-a40", diff --git a/docs/dev_guide/deploy_packages.md b/docs/dev_guide/deploy_packages.md index 7d3eb2ef..15fef39b 100644 --- a/docs/dev_guide/deploy_packages.md +++ b/docs/dev_guide/deploy_packages.md @@ -1,5 +1,200 @@ --- -sidebar_position: 4 +sidebar_position: 5 --- # Upload & Deploy Packages +### 🚀 Uploading and Deploying an Arch Linux Package on GitHub + +Hosting an Arch Linux package on GitHub is a great way to distribute it. Users can download and install your package directly or use your repository for easier management with `pacman`. Here's how to do it step-by-step. + +--- + +### 1️⃣ **Prepare the Package** + +Ensure you’ve created your Arch package using a `PKGBUILD` file. + +1. **Build the package**: + + Navigate to your package directory containing the `PKGBUILD` and run: + + ```bash + makepkg -si + ``` + + This will create a `.pkg.tar.zst` file (e.g., `mypackage-1.0-1-x86_64.pkg.tar.zst`). + +2. **Sign the package (optional but recommended)**: + + If you’re distributing the package securely, sign it with your GPG key: + + ```bash + gpg --detach-sign --armor mypackage-1.0-1-x86_64.pkg.tar.zst + ``` + + This creates a signature file `mypackage-1.0-1-x86_64.pkg.tar.zst.sig`. + +--- + +### 2️⃣ **Create a GitHub Repository** + +1. Go to [GitHub](https://github.com) and create a new repository. +2. Name the repository (e.g., `arch-packages`) and add a description. +3. Initialize it with a README file (optional). + +--- + +### 3️⃣ **Upload the Package** + +1. Clone the repository to your local system: + + ```bash + git clone https://github.com/yourusername/arch-packages.git + cd arch-packages + ``` + +2. Copy your package files (`.pkg.tar.zst` and `.sig`) to the repository directory: + + ```bash + cp ../mypackage-1.0-1-x86_64.pkg.tar.zst . + cp ../mypackage-1.0-1-x86_64.pkg.tar.zst.sig . + ``` + +3. Commit and push the files: + + ```bash + git add mypackage-1.0-1-x86_64.pkg.tar.zst mypackage-1.0-1-x86_64.pkg.tar.zst.sig + git commit -m "Add mypackage version 1.0" + git push origin main + ``` + +--- + +### 4️⃣ **Set Up a Repository for `pacman`** + +To create a repository compatible with `pacman`, you need a database file (`.db`) and signature file (`.db.sig`). + +1. **Generate the database**: + + Run `repo-add` to create a repository database for your packages: + + ```bash + repo-add myrepo.db.tar.gz mypackage-1.0-1-x86_64.pkg.tar.zst + ``` + + This will generate files like: + - `myrepo.db.tar.gz` + - `myrepo.db.tar.gz.sig` (if signed) + + Rename `myrepo.db.tar.gz` to `myrepo.db` for convenience: + + ```bash + mv myrepo.db.tar.gz myrepo.db + mv myrepo.db.tar.gz.sig myrepo.db.sig + ``` + +2. **Add repository files to GitHub**: + + Copy the `.db` and `.sig` files to the repository and push them: + + ```bash + git add myrepo.db myrepo.db.sig + git commit -m "Add repository database" + git push origin main + ``` + +--- + +### 5️⃣ **Serve the Repository on GitHub Pages** + +1. Enable GitHub Pages for the repository: + - Go to your repository’s **Settings** > **Pages**. + - Under **Source**, select `main` (or the branch you’re using) and set the folder to `/root` or `/docs`. + +2. Note the URL for your repository, which will be in the format: + + ```plaintext + https://yourusername.github.io/arch-packages/ + ``` + +--- + +### 6️⃣ **Configure `pacman` to Use Your Repository** + +1. Add your repository to `/etc/pacman.conf`: + + ```plaintext + [myrepo] + SigLevel = Required + Server = https://yourusername.github.io/arch-packages + ``` + +2. Update `pacman`: + + ```bash + sudo pacman -Syu + ``` + +3. Install your package: + + ```bash + sudo pacman -S mypackage + ``` + +--- + +### 🛠️ Automating Updates with GitHub Actions + +To automate the deployment of new packages to GitHub, use **GitHub Actions**: + +1. Create a `.github/workflows/deploy.yml` file in your repository: + + ```yaml + name: Deploy Arch Linux Package + + on: + push: + branches: + - main + + jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Install Arch tools + run: | + sudo apt update + sudo apt install archlinux-keyring devscripts pacman + + - name: Generate repository database + run: | + repo-add myrepo.db.tar.gz *.pkg.tar.zst + mv myrepo.db.tar.gz myrepo.db + mv myrepo.db.tar.gz.sig myrepo.db.sig + + - name: Commit and push repository updates + run: | + git add myrepo.db myrepo.db.sig + git commit -m "Update repository database" + git push origin main + ``` + +2. Push this file to your repository. The workflow will automatically run on every push to update the repository database. + +--- + +### ✅ Final Testing + +1. Clone your repository to verify it’s accessible: + + ```bash + git clone https://yourusername.github.io/arch-packages + ``` + +2. Test package installation from your custom repository as described in step 6. + +--- + +By following these steps, you'll have a fully functional Arch Linux package repository hosted on GitHub, ready for others to use. 🎉 \ No newline at end of file diff --git a/docs/dev_guide/install_keyring.md b/docs/dev_guide/install_keyring.md index a73f1b8c..d771ae6f 100644 --- a/docs/dev_guide/install_keyring.md +++ b/docs/dev_guide/install_keyring.md @@ -1,5 +1,5 @@ --- -sidebar_position: 5 +sidebar_position: 4 --- # Install Keyrings \ No newline at end of file diff --git a/docs/dev_guide/upload_gog_key.md b/docs/dev_guide/upload_gpg_key.md similarity index 100% rename from docs/dev_guide/upload_gog_key.md rename to docs/dev_guide/upload_gpg_key.md