在 nuget 私服 BaGet 中应用https 以及 gitea action runner 自动打包

news/2025/1/18 21:25:36/文章来源:https://www.cnblogs.com/fallTakeMan/p/18675965

  最近赋闲,想起之前工作中代码管理的一点经历,就是在打包项目的时候,类库的版本号几乎没变过,一个项目运行多少年了,版本号还是1.0.0。😂 即使用到了 nuget 私服,基本上也是手动打包的,CI 工具基本都是用到 api 项目。于是想结合 gitea 的 CI 工具 act runner 试用一下 minver,minver 是一个使用 git tag 来给类库打版本号的工具。

 

环境:Windows + WSL2

  Windows 作为代码开发环境,gitea 和 act runner 运行在 WSL(Ubuntu-22.04) 中。

 

0. SSL 证书

  在 Windows 自签证书之后,需要将根证书导入到 gitea act runner 运行的主机中,这里是 Ubuntu-22.04。

  mkcert 的根证书在 Windows 的路径是 C:\Users\Z\AppData\Local\mkcert。

scp .\rootCA.pem ubuntu@127.0.0.1:/home/ubuntu

  同时将带密码的 pfk 证书也上传到 Ubuntu。然后在 Ubuntu 中将 rootCA.pem 添加信任。

sudo cp rootCA.pem /usr/local/share/ca-certificates/rootCA.crt
sudo update-ca-certificates

  如果没有这个步骤,即使 BaGet 带证书启动服务,act runner 在推送 nuget 包时也会报下面这个错误。

==error: Unable to load the service index for source ***.
error:   The SSL connection could not be established, see inner exception.
error:   The remote certificate is invalid because of errors in the certificate chain: PartialChain

 

1. BaGet 搭建 nuget 私服

docker run -d --restart=always --name baget-server -p 555:555 -p 543:543 -v "$(pwd)/baget-data:/var/baget" -v "$(pwd)/appsettings.json:/app/appsettings.json" -v "$(pwd)/localcert.pfk:/home/localcert.pfk" loicsharma/baget:latest

  appsettings.json 中注意证书路径和 docker 容器挂载的证书路径一致。

{
    "ApiKey": "your-baget-server-api-key","PackageDeletionBehavior": "Unlist","AllowPackageOverwrites": false,"Database": {"Type": "Sqlite","ConnectionString": "Data Source=baget.db"},"Storage": {"Type": "FileSystem","Path": ""},"Search": {"Type": "Database"},"Mirror": {"Enabled": false,// Uncomment this to use the NuGet v2 protocol//"Legacy": true,"PackageSource": "https://api.nuget.org/v3/index.json"},// Uncomment this to configure BaGet to listen to port 8080.// See: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#listenoptionsusehttps"Kestrel": {"Endpoints": {"Http": {"Url": "http://*:555"},
       "Https": {"Url": "https://*:543","Certificate": {"Path": "/home/localcert.pfk","Password": "changeit","AllowInvalid": true}}}},"Logging": {"IncludeScopes": false,"Debug": {"LogLevel": {"Default": "Warning"}},"Console": {"LogLevel": {"Microsoft.Hosting.Lifetime": "Information","Default": "Warning"}}}}appsettings.json

 

 

2. gitea workflows

  这里是示例项目的代码结构。

  在设置中为工作流添加变量。BaGet 服务的 api key 添加到密钥中。

 

 

  在代码仓库 .gitea/workflows 下创建一个 release.yaml 文件,文件名随意,格式需要是 yaml,支持多个文件。

name: publish library to baget
run-name: ${{ gitea.actor }} is publishing a nuget package 🚀
on: push:tags:- "v*.*"jobs:build:runs-on: linux_amd64steps:- name: check out repository codeuses: actions/checkout@v4- name: restore dependenciesrun: dotnet restore ./Utils/Utils.csproj- name: buildrun: dotnet build --no-restore -c Release ./Utils/Utils.csproj- name: packrun: dotnet pack -c Release ./Utils/Utils.csproj- name: get package versionid: get_versionrun: echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT- name: pushrun: dotnet nuget push -s ${{ vars.BAGET_SERVER }} -k ${{ secrets.BAGET_SERVER_API_KEY }} ./Utils/bin/Realese/Utils.${{ steps.get_version.outputs.version }}.nupkg

  (补充):actions/checkout 默认是从 github 下载,由于从所周知的原因,工作流脚本中本来是 https://gitea.com/actions/checkout@v4,但是今天下午 gitea 网站突然不能访问了,于是还是改成了从 github 下载 checkout 源码。

 

  通过推送以 "v" 开头的标签到代码仓库触发工作流。

 

 

3. BaGet 浏览 

  可以看到 nuget 包已经上传到 BaGet 服务器,并且服务也是走的 SSL 协议。

  如果你的 nuget 私服也是 v3 版本,推送包的时候遇到这样的警告:

warn : You are running the 'push' operation with an 'HTTP' source, 'http://localhost:555/v3/index.json'. Non-HTTPS access will be removed in a future version. Consider migrating to an 'HTTPS' source.

  想在 nuget 私服启用 https 链接,以上可以作为参考。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/871443.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录一下双多控开关接法

实际上双控就是单刀双掷开关,多控就是双刀双掷开关。多控里L1A+L1B是输入的俩个接上级出来的俩根线,LA和LB是反着的接上总有一路能通。输入俩通道输出俩通道所以可以无限串联。实际上双控就是单刀双掷开关,多控就是双刀双掷开关。 多控里L1A+L1B是输入的俩个接上级出来的俩根…

Day 7

1月17日,继续看了一些SpringBoot视频, SpringBoot的实现步骤SpringBoot项目的起步依赖 <!-- springboot工程需要继承的父工程 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifac…

如果通过 vxe-table 实现 Excel,可以和 Excel、WPS 复制粘贴

如果通过 vxe-table 实现 Excel,可以和 Excel、WPS 复制粘贴 官网:https://vxetable.cn<template><div><vxe-gridref="gridRef"v-bind="gridOptions"@cell-area-selection-end="cellAreaSelectionEndEvent"@cell-area-extensio…

树(基础)

树 1 定义 1.1 树是什么 树是一种数据结构,因为形似倒着的树而得名. 1.2 树的定义 递归定义 1.2.1 有根树的定义 形象化的,如图1,有根树存在根节点这一定义,从根节点可以分出任意个分支,这任意个分支又可以继续细分,分出的节点称为“子节点”。抽象化的,树也是\(N\)…

Java五子棋源码联网版+Socket+Swing+大学生练手项目

前言 学Java的朋友们,福利来了,今天小编给大家带来了一款 Java五子棋源码联网版 源码,看图: 实现了服务端和客户端。是联网版游戏基础模型。环境 JDK1.8代码采用原生java类库编写,界面采用swing,完整源码获取地址: gitee.com/hadluo/java_game01.git整体代码结构服务器采…

Java源码:实现斗地主游戏+大学生练手项目

前言 学Java的朋友们,福利来了,今天小编给大家带来了一款 斗地主 源码,看图:视频演示效果 https://githubs.xyz/show/5.mp4 环境 JDK1.8代码采用原生java类库编写,界面采用swing,完整源码获取地址: gitee.com/hadluo/java_game01.git项目结构 代码十分简洁,只有简单的7个…

文件蜈蚣 后台偷跑流量

我已经好久没有打开这个软件了,期间重启了很多次,他有一个服务应该开机时就启动,后台偷跑流量 filec.exe文件。 因为我没什么什么上传流量也很大,最终定位到这个文件在偷跑了。

windows安装ffmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。 ffmpeg安装 打开 FFmpeg 官网,选择下载。 选择 Windows 平台,下面有两个链接,都是可以的,选择其一。 本文以点…

Java源码:坦克大战+swing界面+大学生练手项目

前言 学Java的朋友们,福利来了,今天小编给大家带来了一款 坦克大战 源码,看图: 演示视频 https://githubs.xyz/show/22.mp4 环境 JDK1.8 实现步骤代码采用原生java类库编写,界面采用swing,完整源码获取地址: gitee.com/hadluo/java_game01.git启动类 启动类是 TankCline…

免费下载CapCut海外版,解锁剪映VIP功能无广告

大家好,今天给大家带来一个超级实用的教程——剪映海外版 CapCut 下载:免费解锁剪映 VIP 功能的完整步骤!剪映是目前非常流行的视频编辑软件,它让我们的短视频创作变得更加简单和高效。不管是记录生活点滴、制作旅行回忆,还是做一些创意短视频,剪映都提供了非常强大的功能…

Java源码:植物大战僵尸 + 大学生练手项目

前言 学Java的朋友们,福利来了,今天小编给大家带来了一款 植物大战僵尸源码,看图:视频演示 https://githubs.xyz/show/175.mp4 环境 JDK1.8代码采用原生java类库编写,完整源码获取地址: gitee.com/hadluo/java_game01.git类继承UML图源码实现 我们先从main函数看起,继承了…

Linux搭建Slurm和pbs单机版

SlurmSlurm 是高性能计算集群的出色工作调度工具。此外,当你需要同时运行多个程序并将它们排成队列,同时确保计算机或服务器不超载时,它也是本地台式机或单台服务器上的重要工具。此外,在与其他用户共享服务器或需要通宵或连续数周运行多个工作时,它也非常有用!在这里,我…