接上一篇模板的介绍文章, 我们接下来看看如何配置和使用这款模板.

项目配置

  • 1. fork 咱这款模板.

  • 2. 并将其设置为模板.

  • 3. 在创建新仓库时使用这个模板.

  • 4. 看使用说明,了解项目结构

  • 5. 配置打包信息

管道配置

管道授权

管道得以正常运行需要您的授权才可,所以请您花一点时间学习如何拿到授权.

配置项 配置需求及链接 仓库配置项及路径 安全变量 KEY 安全变量 VALUE
管道授权 Token 私人Classic Token Setting -> Secrets and variables -> Action 创建安全变量 REPO_GITHUB_TOKEN {{your_classic_token}}
覆盖率网站 Token 网站完成注册, 在 codecov 中找到你的仓库 Setting -> Secrets and variables -> Action 创建安全变量 COVERAGE_KEY {{your_codecov_token}}
NUGET网站 Token 网站完成注册, 创建SecretKey Setting -> Secrets and variables -> Action 创建安全变量 NUGET_KEY {{your_nuget_token}}

配置文件夹及文件介绍

  • scanner.bat/sh ,针对 win/linux 编写的两个脚本, 主要是调用 Workflow.Initialization 工程项目来完成项目的扫描和配置更改, 因为它需要在扫描和生效时进行调用,鉴于这种手动行为, 姑且称其为半自动化脚本.

  • .github/project.yml,该文件为自动化脚本扫描或生成的文件, 用户更改此文件中的实体节点,重新运行脚本即可看到已更改的配置文件, 提交到主分支即可.

  • .github/NMS_TEMPLATE/*.template 模板,这些模板中内置了如 ${{name}} 这样的变量, 这些变量的来源是 project.yml 中的实体节点, 半自动脚本运行时将会替换变量完成最终配置文件.

  • .github/workflows/*.yml, 这些文件是管道真正起作用的最终配置文件.

    • 一部分是自动化脚本转换而来的.
    • 一部分是本身就存在的,半自动化脚本并未完全收录这些配置, 因为有些配置都是写死不用改或者改动甚小, 因此不在半自动化脚本覆盖范围内.

scanner.bat/sh

  • 1. 该脚本是管道操作的常用脚本, 它负责调用 Workflow.Initialization 项目来完成 project.yml 的文件生成及节点控制, 实际上半自动化是基于 .NET 程序来完成的.

  • 2. 您在项目增减节点之后需要运行它, 以完成这个新项目的配置或更新管道配置.

  • 3. 在您更改 project.yml 文件后需要运行它, 它将把 project.yml 文件节点转换真正的管道配置.

Project.yml

我们对配置做了集中管理并存放在 project.yml 文件中,集中配置包括项目节点的增减/折叠/忽略/全局配置等功能.详解如下:

  • 1. 增减, 当您新创建/删除一个项目的时候, 运行项目根目录下的脚本 scanner.bat/sh, 脚本会向配置文件 project.yml 追加或删除节点(不破坏已有的配置).



重新生成工程配置文件 project.yml:

  • 2. 全局配置, 目前的全局功能配置仅有一个:global_labels. 该配置节点的值为一组 label 实体, 意思是在当前节点下的所有项目在发现 PR 时, 为其打上全局标签. 假设 src 节点下有全局配置 : label: pr_src , 且您的 src 下有10个项目, 当这10个项目任意一个有人提交 PR 时, PR 会打上 pr_src 标记.

  • 3. 折叠, 配置节点属性较多, 如果仅仅想使用全局功能而不配置其他, 可以将 project.yml 项目节点 is_folded 的值设置为 true.

再一次运行 scanner.bat/sh 使其生效

  • 4. 忽略, 理同折叠, 只不过忽略是完全忽视这个工程节点, is_ignored 为 ture 的项目不会享有任何管道的功能. 重新运行脚本使其生效,这些被忽视的节点将被记录在配置文件中, 删除可使其重新享有管道功能.

Using 隐式输出

感谢 Newbe 俞佬的需求, 项目源码管道增加了 隐式 using 输出的功能.

半自动脚本将根据 project.yml 的配置节点来控制隐式 using 自动生成功能.

  - using_output:
enable: true
ignores:
- System
- System.Runtime.CompilerServices
- System.Reflection

选项配置:

  • enable:true, 启用 using 输出, 所有公有的 类/结构体/接口/记录/枚举 所在的命名空间都将输出到 Targets/Project.Usings.targets 文件中.
  • ignores, 需要被排除的 using 引用代码.

由于涉及到 NUGET 打包发布,因此 csproj 工程文件的内容可能也会随之变动.

依赖检测

属性解释

如图所示, project配置的每个项目下都会有依赖节点:

  • type: 您依赖包的服务名称, 比如 .net 依赖来自于 nuget, 其他语言依赖比如 npm/pip/github-actions/gomod/composer/bundler 等等.
  • interval: 检测周期, daily 工作日 , weekly 每周一, monthly 每月第一天.
  • commit_prefix: 机器人提交 PR 的前缀.
  • special_time: 指定时间 "09:00".
  • special_time_zone: 指定时区 比如 "Asia/Harbin" 哈勒斌时区.
  • labels: 机器人提交 PR 时打上的标签.
  • ignore: 忽略依赖项(数组)
    • name: 希望被忽略的依赖包的名称
    • version: 希望被忽略的依赖包版本 ["1.0.0","2.*"]
    • version-type:希望被忽略版本的类型,["version-update:semver-major","version-update:semver-minor","version-update:semver-patch"]

SemVer 约定(语义化版本)

"version-update:semver-patch" 这玩意看不懂是吧?那看这个"Major.Minor.Patch"/"1.3.12"

比如, 有一个包更新超级快,但是它得更新很鸡肋, 比如改个注释发个版本, 改个变量名发个版本, 一周时间内从 1.3.0 发到 1.3.105, 你想忽视这种非功能更新怎么办,

配置 version-type:["version-update:semver-patch"] 忽视掉补丁更新这一级别, 也就是让机器人只关注 1.3 而忽视 1.3.x.

NUGET 是遵守 SemVer 约定的.

BOT互动

当 BOT 提交 PR 时, 您可以与其互动指令,已完成后续功能:



案例:

结尾

以上便是半自动脚本和项目配置的简单讲解, 下一篇将进入具体管道功能的实战配置.

学习与使用

1. 将项目 fork 到你的仓库中, 然后 Setting 作为模板.

2. 文章导航

基于 Github 平台的 .NET 开源项目模板 - 项目及半自动脚本的更多相关文章

  1. 基于 Github 平台的 .NET 开源项目模板. 嘎嘎实用!

    简介 大家好,为了使开源项目的维护和管理更方便一些,出于个人需求写了一款开源项目的模板,该模板基于 Github 平台,并使用 .NET 来实现管道功能. 在接受过实战检验后, 于今天开源, 项目地址 ...

  2. 基于ubuntu16.04部署IBM开源区块链项目-弹珠资产管理(Marbles)

    前言 本教程基本上是对Marbles项目的翻译过程. 如果英文比较好的话,建议根据官方操作说明,一步步进行环境部署.当然你也可以参考本教程在自己的主机上部署该项目. Marbles 介绍 关于 Mar ...

  3. 【gin-vue-admin】 使用go和vue 快速搭建一个项目模板

    gin-vue-admin gin+vue开源快速项目模板 项目地址:https://github.com/piexlmax/gin-vue-admin 增加了 micro-service-test分 ...

  4. Node项目模板管理脚手架ptm-cli开发

    目录 一.ptm-cli 使用说明 1.特点 2.安装 3.使用 1)基础帮助命令 2)添加模板/项目 3)编辑模板/项目 4)查看模板/项目 5)删除模板/项目 6)基于模板新建/初始化项目 二 p ...

  5. VS2019 自定义项目模板

    前言: 使用"宇宙最强IDE"开发项目时,都需要根据不同情况选择一个项目模板,来满足开发需求:如下 VS为我们提供了基础的项目模板,但现有项目模板未包含基础功能如:日志输出.审计日 ...

  6. LibOpenCM3(二) 项目模板 Makefile分析

    目录 LibOpenCM3(一) Linux下命令行开发环境配置 LibOpenCM3(二) 项目模板 Makefile分析 LibOpenCM3 项目模板 项目模板地址: https://githu ...

  7. Vue.js项目模板搭建

    前言 从今年(2017年)年初起,我们团队开始引入「Vue.js」开发移动端的产品.作为团队的领头人,我的首要任务就是设计 整体的架构 .一个良好的架构必定是具备丰富的开发经验后才能搭建出来的.虽然我 ...

  8. 【转】GitHub平台最火Android开源项目整理——2013-08-25 17

    http://game.dapps.net/news/developer/9199.html GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮 ...

  9. GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

    1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...

  10. GitHub 优秀的 Android 开源项目(转)

    今天查找资源时看到的一篇文章,总结了很多实用资源,十分感谢原作者分享. 转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介 ...

随机推荐

  1. [VS Code扩展]写一个代码片段管理插件(二):功能实现

    @ 目录 创建和插入代码片段 代码片段列表 代码片段预览 代码片段编辑 自定义映射 默认映射 自动完成 项目地址 创建和插入代码片段 VS Code扩展提供了数据存储,其中globalState是使用 ...

  2. AD(Active Directory )域的搭建与操作

    AD 域的搭建与操作 一.准备工作 准备好 VM 虚拟机和 Server 的安装包. 二.安装 Server 2022 选择标准且有图形界面的进行安装. 选择自定义安装方式. 为虚拟机 server2 ...

  3. 树上倍增求 LCA 模板

    void dfs(int x,int fa,int d){ deep[x]=d;dp[x][0]=fa; for(int i=1;i<=lg2[deep[x]];++i){ dp[x][i]=d ...

  4. web静态和动态的区别

    一.静态web页面: 1.在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在 ...

  5. 小tips:HTML的实体

    为了能在HTML文档中正确显示某些特殊字符,就需要使用HTML实体(entity).HTML实体就是对当前文档的编码方式不能包含的字符,提供一种转义表示. HTML实体定义 1.名称方式 名称方式会以 ...

  6. 合合信息扫描全能王亮相静安区3·15活动,AI扫描带来绿色消费新体验

    保护消费者的合法权益,是全社会的共同责任.为优化消费环境.促进品质消费高地建设,打造安全优质和谐的消费环境,上海静安区消保委于3月15日举办静安区2024年"3·15"国际消费者权 ...

  7. Angular 18+ 高级教程 – 初识 Angular

    Before Starting 深入学习 Angular 是一件非常耗时耗力的事情. 实施 Angular 到项目中同样也是一件非常耗时耗力的事情. 在我们做出这么大的投入之前,我们有必要先思考以下几 ...

  8. Brainstorm 了道题但是不会做

    题 因为没想出来暂时没定数据范围,不过应该会在 \(n^{2}\) 到 \(n^{3}\) 级别 我的一个思路是先对合法的方案连并查集,然后并查集内判重,但是不会算方案数,因为假如找到重的了不能直接看 ...

  9. Shell分析服务器日志命令

    1.查看有多少个IP访问: awk '{print $1}' log_file|sort|uniq|wc -l 2.查看某一个页面被访问的次数: grep "/index.php" ...

  10. WeiXin.Export.20220726

    用 QuestPDF操作生成PDF更快更高效! Blazor Server 应用程序中进行 HTTP 请求 开源WPF控件库-AdonisUI FastTunnel-开源内网穿透框架 AI 之 Ope ...