github深入学习了解

      github是目前使用最广的开/闭源代码托管网站,掌握对其使用对我们日常工作学习是很有必要的,下面对其深入使用进行如下总结,

GitHub 仓库的主页是一个集中展示仓库信息和活动的地方,以下是您提到的各个部分的简要说明:

Code
   - 这个部分显示了仓库的代码,包括分支、提交历史、文件结构等。
   - 可以浏览和搜索代码,查看特定文件或提交。

Pull requests
   - 显示了所有打开的和合并的拉取请求(Pull Request,PR)。
   - 拉取请求是 GitHub 上代码审查和合并的主要方式。

Actions
   - 显示了 GitHub Actions 的概览,包括工作流程的运行状态和历史。
   - 可以查看哪些工作流程正在运行,哪些已经完成,以及它们的输出和日志。

Projects
   - 显示了与该仓库关联的项目板,项目板是一种组织和跟踪工作的工具。
   - 可以创建看板、列和卡片来管理任务和里程碑。

Wiki
   - Wiki 是一个协作空间,用于编写和分享有关项目的文档。一般只有比较大型的项目才有维基,比如vscode。vscode的维基是给专业人士看的,告诉人们应该怎么贡献代码,如何写vscode插件等等,但是也有的项目的维基是给用户看的,因项目而异。
   - 可以包含指南、API 文档、FAQ 等。

Security
   - 这个部分提供了仓库的安全概览,包括依赖项的安全警报和安全策略。
   - 可以查看安全漏洞、配置安全设置和访问建议。

Insights
   - 提供了仓库的分析和可视化,如贡献者图表、代码频率、提交活动等。
   - 可以帮助理解仓库的活动和贡献者模式。

Settings :

选项卡用于配置仓库的设置。在这里,你可以:

  • 管理仓库的基本信息(名称、描述、URL)。
  • 设置分支保护规则。
  • 配置 Webhooks 和集成服务。
  • 管理团队和权限。
  • 配置 GitHub Pages 部署。

每个部分都是 GitHub 仓库管理的重要组成部分,它们共同提供了一个全面的视图,帮助开发者、维护者和贡献者更好地协作和管理项目。下面对github的一些不常见使用具体总结如下:

(1) CI/CD

下面对Actions的使用进行如下总结。

      GitHub Actions 是 GitHub 提供的一种 CI/CD 工具,用于自动化软件开发工作流。它允许你在代码仓库中定义和运行自定义的自动化任务,如构建、测试和部署。结合官方以及第三方提供的actions,组合action来实现一些你能做到的其他事情,比如抓取代码、运行测试、登录远程服务器,发布到第三方服务等等。以下是 GitHub Actions 的基本使用总结:

0. 基本概念

  • workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。
  • job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。
  • step(步骤):每个 job 由多个 step 构成,一步步完成。
  • action (动作):每个 step 可以依次执行一个或多个命令(action)。

1. 创建 GitHub Actions 工作流

       workflow(工作流)必须存储在你的github项目库路径下的 .github/workflows 目录中,每一个 workflow描述了一个自动化任务,对应一个具体的.yml 文件。GitHub 会检索.github/workflows目录里面的.yml文件,并按照设定的规则定时或监听触发条件运行。workflow的使用可以参考官方文档:https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions

2. 工作流文件结构

一个典型的工作流文件包含以下几个部分:

  • name: 工作流的名称。
  • on: 触发工作流的事件,也可以是事件的数组(例如 push, pull_request)。
  • jobs: 工作流中的一个或多个作业,每个作业包含多个步骤。

比如

name: CI

on: [push]


jobs:
  first_job:
    name: My first job
    timeout-minutes: 30
    runs-on: ubuntu-latest
    steps:
    - name: first_step
      env: 
        START_STR: Hi there! My name is
        USER_NAME: Ber
        END_STR: Thank you
      run: |
        echo $START_STR $USER_NAME $END_STR.
        
  second_job:
    name: My second job
    needs: first_job
    timeout-minutes: 45
    runs-on: macOS-latest
    
  third_job:
    name: My third job
    needs: [first_job, second_job]
    timeout-minutes: 60
    runs-on: windows-latest

其中jobs字段包含first_job和second_job两项任务,job_id分别是first_job、second_job和third_job。

needs:设定当前任务的执行依赖关系,即执行运行顺序,此jobs的执行顺序:first_job、second_job、third_job。

timeout-minutes:每个任务默认超时时间最长为 360分钟,通过timeout-minutes自定义设置任务最长执行时间。

runs-on:指定运行所需要的虚拟机环境。必填字段 有三种系统选择,具体版本如下

  • ubuntu-latest,ubuntu-18.04或ubuntu-16.04
  • windows-latest,windows-2019或windows-2016
  • macOS-latest或macOS-10.14

steps:steps字段指定每个 Job 的运行步骤,可以包含一个或多个步骤。每个步骤都可以指定name、run、env、id、uses、with、continue-on-error、continue-on-error字段。

  • name: 步骤名称
  • env: 该步骤所需的环境变量
  • run: 该步骤运行的命令,如上面的例子:bash输出环境变量
  • id : 每个步骤的唯一标识符
  • uses : 使用哪个 action
  • with : 指定某个 action 可能需要输入的参数
  • continue-on-error : 设置为 true 允许此步骤失败 job 仍然通过
  • timeout-minutes : step 的超时分钟数

3. 触发事件

工作流可以在多种事件下触发,例如:

  • push:代码推送到仓库时触发。
  • pull_request:创建拉取请求时触发。
  • schedule:按照计划任务(CRON 表达式)触发。
  • workflow_dispatch:手动触发。

4. 作业和步骤

  • 作业(jobs):一个工作流可以包含多个作业,每个作业可以并行或顺序执行。作业可以在不同的运行器环境中执行(如 ubuntu-latest, windows-latest, macos-latest)。
  • 步骤(steps):每个作业由多个步骤组成,每个步骤可以运行一个命令或使用一个动作(action)。

5. 使用动作(actions)

动作是可重用的独立命令,官方和社区提供了大量预定义的动作。你可以在工作流中直接使用这些动作。例如,actions/checkout 用于签出代码,actions/setup-python 用于设置 Python 环境。可以在 https://github.com/marketplace?type=actions 来查找可用的 action。

6. 环境变量和密钥

  • 环境变量:可以在工作流文件中使用 env 关键字设置环境变量。
  • 密钥(Secrets):用于存储敏感信息(如 API 密钥),可以在 GitHub 仓库的设置中配置,并在工作流中使用。

当使用workflow时,一些不能公开的密码、token等,可以使用Secrets 进行保存,在项目仓库中settings->Secrets ->new repository secrets,在worflow中通过${{ }}可以获取上下文环境变量、检查函数以及Secrets 中秘钥。

7. 示例:部署到 GitHub Pages

以下是一个示例工作流,演示如何在每次代码推送到 main 分支时自动构建和部署到 GitHub

name: Deploy to GitHub Pages

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'

    - name: Install dependencies
      run: npm install

    - name: Build project
      run: npm run build

    - name: Deploy to GitHub Pages
      uses: peaceiris/actions-gh-pages@v3
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        publish_dir: ./dist

GitHub Actions 提供了强大的 CI/CD 功能,可以在各种事件触发下自动化执行各种任务。通过定义工作流文件,你可以实现代码构建、测试、部署等自动化操作,从而提高开发效率和代码质量。

(2)管理个人资料自述文件

       可以通过创建个人资料 README,在 GitHub 上与社区分享有关你自己的信息。 GitHub 在个人资料页面的顶部显示您的个人资料自述文件。您决定在个人资料自述文件中包含哪些信息,因此您可以完全控制如何在 GitHub 上展示自己。 以下是访客可能在您的个人资料自述文件中找到感兴趣、有趣或有用信息的一些示例。

  • “About me(关于我)”部分介绍您的工作和兴趣。
  • 您引以为豪的贡献以及这些贡献的背景信息
  • 在您参与的社区获得帮助的指南

具体操作如下,

  1. 在任何页面的右上角,选择 ,然后单击“新建存储库”。

    GitHub 下拉菜单的屏幕截图,其中显示了用于创建新项的选项。 菜单项“新建存储库”用深橙色框标出。

  2. 在“Repository name(仓库名称)”下,输入与您的 GitHub 用户名匹配的仓库名称。 例如,如果您的用户名是 "octocat",则仓库名称必须为 "octocat"

  3. (可选)在“描述”字段中键入存储库的描述。 例如,“My personal repository(我的个人仓库)”。

  4. 选择“公共”。

  5. 选择“使用 README 初始化此存储库”。

  6. 单击“创建存储库”。

  7. 在右边栏上方,单击“编辑自述文件”。

生成的自述文件用模板预先填充,为您创建个人资料自述文件提供一些启发。对于初始化的README.md文件可以参考该项目实现https://github.com/kautukkundan/Awesome-Profile-README-templates

(3) 部署个人网站

      要使用GitHub 搭建个人网站,需要创建一个名为 username.github.io 的仓库,其中 username 是你的GitHub 用户名。然后,将你的网站内容(HTML、CSS、JavaScript)放置在该仓库中,并将其设置为公开。接下来,在仓库的“Settings” (设置) 页面中找到并配置GitHub Pages,选择一个发布源(例如,main 分支或 docs 文件夹)。最后,访问 username .github.io 即可查看你的网站。

以下是更详细的步骤:

  • 1. 创建仓库:

    • 登录GitHub 账号,点击右上角的“+”号,选择“New repository” (新建仓库)。
    • 仓库名称必须为 username.github.io (将 username 替换为你的GitHub 用户名)。
    • 选择仓库可见性(公开或私有,GitHub Pages 需要公开仓库)。
    • 可以选择“Initialize this repository with a README” (使用README 初始化此仓库)。
    • 点击“Create repository” (创建仓库)。
  • 2. 配置GitHub Pages:

    • 进入你刚创建的仓库。
    • 点击“Settings” (设置) 按钮。
    • 在左侧边栏找到并点击“Pages”。
    • 在“Build and deployment” (构建和部署) 部分,找到“Source” (来源) 设置。
    • 选择一个发布源:通常是 main 分支或 docs 文件夹。
    • 点击“Save” (保存)。
  • 3. 部署你的网站:

    • GitHub Pages 会自动检测并构建你的网站。
    • 访问 username.github.io (或自定义域名,如果已配置) 即可查看你的网站。
  • 4. 可选:自定义域名:

    • 如果你想使用自定义域名,需要在仓库根目录下创建一个名为 CNAME 的文件。
    • CNAME 文件中写入你的自定义域名,例如 www.example.com。
    • 在你的域名提供商(如阿里云、腾讯云等) 处配置DNS 记录,将域名指向 username.github.io。

通过以上步骤,你就成功地使用GitHub 搭建了一个免费的个人网站。具体的可以参考项目https://github.com/academicpages/academicpages.github.io

(4) 其他

1 .github 仓库(组织/用户级别配置仓库)

用途:为组织/用户下的所有仓库统一配置默认模板和流程。

特别适用于组织用户(例如企业、开源组织等)

  • 可配置:

    • ISSUE_TEMPLATE/:默认的 issue 模板

    • PULL_REQUEST_TEMPLATE.md:默认的 PR 模板

    • FUNDING.yml:GitHub Sponsor 设置

    • CODEOWNERS:默认代码拥有者

    • workflow/:组织级共享 GitHub Actions 流程

  • 文档参考:GitHub 文档 · Special repository: .github


2. gh-pages 分支(不是仓库,而是特殊分支)

用途:用于部署 GitHub Pages 静态网站

  • 在任意仓库中创建 gh-pages 分支,就可以让该仓库的内容部署成网页。

  • 示例用途:

    • 文档网站(如 Docusaurus)

    • Jupyter Notebook 转换为网页

    • 模型展示 Demo


3. template 仓库

用途:作为项目模板供他人基于此快速创建新仓库。

  • 在仓库设置中勾选 “Template repository”

  • 任何人点击 “Use this template” 即可复制结构开始开发

  • 适用于 boilerplate、starter-kit、CI模板项目


4. dotfiles 仓库(约定俗成)

用途:用于管理个人配置文件,如 .bashrc, .vimrc, .zshrc

  • GitHub 社区惯例,命名为 dotfiles

  • 结合 Git 工具,可以跨机器同步个人开发环境


5. security 仓库(或 SECURITY.md 文件)

用途:声明项目的安全策略或报告方式

  • 文件通常位于项目根目录或 .github/SECURITY.md

  • GitHub 会自动识别并在“Security”页面展示报告入口


6. awesome-* 仓库

用途:开源界常见的资源汇总仓库

  • 按惯例命名如:awesome-python, awesome-cv, awesome-ai

  • GitHub 会自动添加“Curated List”标签(但这不是 GitHub 特性,而是社区约定)


7. Fork 仓库

用途:派生自其他项目的副本仓库

  • 会带有 “forked from” 标识

  • 可用于提交 PR、修改实验,不影响原仓库

  • 注意:Fork 仓库默认不支持 GitHub Pages 部署,需手动启用

       今天针对github的学习就先到这,下面是我的个人github仓库链接https://github.com/Albert337,有问题欢迎issue和star。

参考链接:

1、如何利用github action实现自动构建、打包部署-腾讯云开发者社区-腾讯云

2、GitHub项目、代码搜索、使用等技巧_gitcode怎么搜索-CSDN博客

3、https://zhuanlan.zhihu.com/p/664195515

4、Github: Github actions自动化工作原理与多workflow创建和部署-CSDN博客

5、【Github Action】这篇文章教会你如何开发Github Action,并且让你明白它是什么,怎么用,如何做到的。-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaomu_347

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值