Ubuntu 20.04 安装 GitHub CLI(gh),并使用

0. 背景

在 Ubuntu 上,使用仅有的 Git 命令直接发布 GitHub Release 是不行的,因为 Git 自身不支持与 GitHub Release API 的交互。然而可以在 Ubuntu 上安装并使用 GitHub CLI (gh) 工具,通过命令行来发布 Release。

1. 安装

gh官网

bash 复制代码
(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y

解释命令

1.1 (type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y))

  1. 检查系统中是否已安装wget命令。type -p wget会返回wget的路径,如果已安装的话
bash 复制代码
$ type -p wget
/usr/bin/wget
  1. 如果wget没有安装(即type -p wget的输出被重定向到/dev/null且不产生任何输出),则执行(sudo apt update && sudo apt-get install wget -y)。这会更新系统的包列表,然后安装wget。

1.2 sudo mkdir -p -m 755 /etc/apt/keyrings

创建一个目录**/etc/apt/keyrings**,用于存储APT软件包管理器的密钥。-m 755设置目录权限,使其对所有用户可读写

1.3 wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null

  1. 使用wget下载GitHub CLI的GPG密钥。-q使wget在安静模式下运行,不显示下载进度,O- 使输出直接传输到管道而不是文件。
  2. 通过管道 | 将下载的密钥传输给sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg,这会将密钥内容写入指定的文件。> /dev/null将tee命令的输出重定向到/dev/null,这样就不会在终端显示密钥内容。

1.4 sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg

改变密钥文件的权限,使其对组和其他用户可读

1.5 echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null

  1. 构建一个APT源字符串,其中包含用于安装GitHub CLI的软件包存储库的URL。[arch=$(dpkg --print-architecture)]动态地插入当前系统的架构。
bash 复制代码
$ dpkg --print-architecture
amd64
  1. 将这个字符串写入/etc/apt/sources.list.d/github-cli.list文件,这样APT就可以从这个源安装软件包。> /dev/null将输出重定向到/dev/null,不显示在终端

1.6 sudo apt install gh -y

安装GitHub CLI,-y标志自动确认安装,无需手动输入。

2. gh 使用

官方使用手册

2.1 git 与 gh 区别

Git 命令行接口 (git) 允许使用本地或远程 Git 存储库。 远程存储库可以托管在 GitHub 上,也可以由另一个服务托管。

GitHub CLI (gh) 专为搭配使用 GitHub 而设计。 其允许使用命令行以各种方式与 GitHub 进行交互,如上一个列表所示。 如果倾向于使用命令行,用户可能更喜欢使用 GitHub CLI,而不是在浏览器中使用 GitHub。 GitHub CLI 还能让用户更轻松地创建脚本来自动执行 GitHub 操作。

2.2 使用

2.2.1 从终端运行这个命令向 GitHub 进行身份验证

bash 复制代码
$ gh auth login
? What account do you want to log into? GitHub.com
? What is your preferred protocol for Git operations on this host? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Login with a web browser

! First copy your one-time code: 1FBF-CCA9
Press Enter to open github.com in your browser... 
Opening in existing browser session.
✓ Authentication complete.
- gh config set -h github.com git_protocol https
✓ Configured git protocol
✓ Logged in as 6master6
  1. 选择 GitHub.com 作为登录选项,并使用one-time code: 1FBF-CCA9 在浏览器进行验证
  2. 选择 HTTPS 作为 Git 操作的首选协议时,GitHub CLI 将自动存储 Git 凭据,并对询问是否要使用 GitHub 凭据向 Git 进行身份验证的提示回答"是"。 此操作非常有用,因为这允许直接使用 git push、git pull 等 Git 命令,无需设置单独的凭据管理器或使用 SSH。

2.2.2 创建 Release 使用以下命令创建一个新的 GitHub Release

  1. 使用 gh auth status 命令检查你的 GitHub CLI 登录状态
bash 复制代码
$ gh auth status
github.com
  ✓ Logged in to github.com account 6master6 (keyring)
  - Active account: true
  - Git operations protocol: https
  - Token: gho_************************************
  - Token scopes: 'gist', 'read:org', 'repo', 'workflow'
  1. gh repo view --web 来查看仓库的详细信息,并确保你有足够的权限
bash 复制代码
$ gh repo view --web
Opening github.com/DjangoPeng/GitHubSentinel in your browser.

查看自己的仓库

bash 复制代码
$ gh repo view 6master6/GitHubSentinel
6master6/GitHubSentinel
GitHub Sentinel is an open-source AI Agent designed to enhance collaboration and project management for developers and project managers. It automates the retrieval and aggregation of updates from subscribed GitHub repositories on a regular basis (daily/weekly), ensuring you stay informed of the latest changes.


   GitHubSentinel                                                                                                     
                                                                                                                      
  GitHub Sentinel is an open-source AI Agent designed to enhance collaboration and project management for developers  
  and project managers. It automates the retrieval and aggregation of updates from subscribed GitHub repositories on a
  regular basis (daily/weekly), ensuring you stay informed of the latest changes.                                     



View this repository on GitHub: https://github.com/6master6/GitHubSentinel
  1. 创建 Release
    使用 gh release create 命令来创建一个新的 Release。如果你已经在仓库的本地克隆目录中,可以直接运行以下命令
bash 复制代码
gh release create v0.0.1 --title "v0.0.1" --notes "Initial release of GitHub Sentinel"

如果你不在仓库的本地目录中,你需要指定仓库的完整路径,格式为 /,例如:

bash 复制代码
gh release create 6master6/GitHubSentinel v0.0.1 --title "v0.0.1" --notes "### Release Notes for v0.0.1

- Initial release with basic functionality
  - Subscription management
  - Update retrieval from GitHub repositories
  - Notification system
  - Report generation
"

然后

bash 复制代码
git push origin main --tags
相关推荐
记得开心一点嘛44 分钟前
在Linux系统上使用Docker部署javaweb项目
linux·运维·docker
Tak1Na1 小时前
2024.9.18
linux·运维·服务器
Jouzzy1 小时前
【Android安全】Ubuntu 16.04安装GDB和GEF
android·ubuntu·gdb
安得权1 小时前
Ubuntu 20.04 部署 NET8 Web - Systemd 的方式 达到外网访问的目的
linux·前端·ubuntu
让学习成为一种生活方式1 小时前
解析药用植物重楼甾体皂苷生物合成中的连续糖基化及其抗真菌作用-文献精读49
linux·数据库·算法·天然产物化学
凯哥是个大帅比2 小时前
ubuntu20.04 GLIBC从2.35降级到2.31
linux
iHero2 小时前
【Ubuntu】在 Ubuntu 22.04.3 LTS 安装 davfs2 通过 Nextcloud WebDAV 挂载到 Ubuntu 的目录上
linux·ubuntu·nextcloud
清园暖歌2 小时前
Ubuntu 不重装系统增加交换空间大小
linux·运维·ubuntu·交换空间
黎相思2 小时前
操作系统迁移(CentOs -> Ubuntu)
linux·ubuntu·gitee·centos
写bug如流水2 小时前
在Ubuntu 20.04上安装pgAdmin 4
linux·运维·ubuntu