04-15 周一 GitHub仓库CI服务器actions-runner和workflow yaml配置文档解析

news2025/1/18 2:00:49
04-15 周一 GitHub仓库CI服务器配置过程文档
时间版本修改人描述
2024年4月15日10:35:52V0.1宋全恒新建文档
2024年4月17日10:33:20v1.0宋全恒完成github actions CI的配置和工作流配置文件解读文档的撰写

简介

一些基础概念

前提知识

仓库介绍

地址镜像介绍
https://github.com/CodexDive/LLMChatharbor.alkaidos.cn/wxzhang/ragllm:latest大模型应用

CI服务器介绍

(base) yangfei@ubuntu:~/actions-ci$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

建议定要使用和宿主机相同的自定义镜像来运行CI作业,不然可能会出现诸如GLIBC问题,即如果宿主机为Ubuntu 20.04,那么自定义镜像最好也是Ubuntu,并且版本是20.04这样稀奇古怪的问题遇到的会少许多。

配置过程

在仓库上查看配置指令

 我们以LLMChat上查看为例,登录 LLMChat,查看

 可以先去网址下载好actions-runner的客户端,也可以在安装的时候下载。在此演示基于网站上的程序下载安装器

image-20240416100532077

具体的代码如下:

  • Download
# Create a folder
$ mkdir actions-runner && cd actions-runner# Download the latest runner package
$ curl -o actions-runner-linux-x64-2.315.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.315.0/actions-runner-linux-x64-2.315.0.tar.gz# Optional: Validate the hash
$ echo "6362646b67613c6981db76f4d25e68e463a9af2cc8d16e31bfeabe39153606a0  actions-runner-linux-x64-2.315.0.tar.gz" | shasum -a 256 -c# Extract the installer
$ tar xzf ./actions-runner-linux-x64-2.315.0.tar.gz
  • Configure
# Create the runner and start the configuration experience
$ ./config.sh --url https://github.com/CodexDive/LLMs_Inference --token BCTEUWK4VPIV2M4PKIRQX2TGDXVXC# Last step, run it!
$ ./run.sh

注意, 配置的github账户,必须拥有这个仓库,才能配置和查看runner(对于个人账户而言)

注意,运行器的仓库位于GitHub actions-runner.当前最新版本为2.315.0,运行器的版本默认会自动升级,因此这个下载部分的链接可能会发生变化。

注意,关于配置时,配置的过程,如指定token和标签可以参考 标签运行器

注意, 如果想要同一个运行器运行多个仓库的作业,需要使用组织级的账户,对于个人账户,一个部署了运行器的服务器只能添加到一个仓库

image-20240416102958526

配置CI服务器为运行器客户端

 使用XShell等工具链接CI服务器,如42.将压缩包拷贝到某个目录,如/home/yangfei/actions-ci,以yangfei账户为CI服务启动的账户:

image-20240416140742772

 我们首先使用./configure 命令为启动器配置组、名称和标签

./config.sh --url https://github.com/CodexDive/LLMs_Inference --token BCTEUWK4VPIV2M4PKIRQX2TGDXVXC

 上述命令会交互式的提醒用户输入运行器组名(个人仓库,无组),运行器名称zjlab-runner,标签为A100,40G,8C

分别表位GPU为A100, 内存容量为40G,8卡。工作目录为_work

 一般配置完成之后,客户端会与GitHub进行通信,因此我们就可以在当前目录下执行

./run.sh

 然后去网页上验证是否成功。一般没有问题,暂且不表,我们继续将该客户端安装成服务,这样重启之后,运行器服务会自动运行。

 待执行的命令外:

sudo ./svc.sh install yangfei

 服务的状态查看,停止和卸载可以参见下图

image-20240416143358092

 关于actions-runner的服务配置,也可以参见 将自托管的运行应用策划给你续配置为服务

网页验证配置是否成功

image-20240416140107598 image-20240416140149837

在仓库上添加workflow配置文件

 在我们配置好了运行器之后,可以在网页上查看运行的状态是否处于正常状态。

image-20240416143916651

配置工作流

Github Actions 是GitHub的持续集成服务。持续集成由很多操作组成,比如登录远程服务器,发布内容到第三方服务等等,GitHub把这些操作称为actions。

工作流含义

 在配置好了GitHub仓库之后,一般我们需要再仓库代码中添加一个工作流配置文件,yaml格式,来确定工作流的步骤,其实就是一些列的步骤组成了一个作业。在yaml配置文件中,也可以包含作业运行的基础环境,可以是github提供的原始镜像,也可以用自定义的镜像。在作业执行过程中,就是不断的在镜像相应的容器中执行命令,查看结果。

image-20240416144359646

action marketplace

而且各个步骤一般会用到Action Marketplace,动作市场,可以看为在CI过程中可以使用的一系列动作步骤。

image-20240416145028662

 常见的可以包含如下的动作使用:

  • Checkout
  • ssh Remote Commands
  • Build and push Docker images
  • Setup Python
  • Publish Test Results
  • Docker Login
  • SSH SCP SSH Pipelines
  • pip-secure-install
  • 文件
    • ​ upload-artifact
    • ​ download-artifact

示例

功能演示

 CI的示例,以项目ActionsPractice为例image-20240416150216109

 在该项目中演示了如下的内容:

  • Pytest的实践,即在开发过程中开发功能和开发测试
  • 在单元测试的撰写时,演示了为类写测试以及普通的功能函数写测试,以及mock的用法
  • 在CI时使用github提供的环境,使用自定义的镜像

workflow 配置文件

注意,workflow配置文件以yaml为后缀,并且位于.github/workflows

# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Python chenqun-docker application

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

permissions:
  contents: read
jobs:
  container-run-test:

    runs-on: [self-hosted, linux, x64, chenqun]
    container:
      image: 10.101.12.128/framework/ubuntu:22.04-official-ali-python3.7.14
      options: --privileged
      
      credentials:
        username: admin
        password: admin@ZJ2023
      volumes:
        - /home/songquanheng:/home/songquanheng
    
    steps:    
    - name: show python version
      run: |
        python --version
    - uses: actions/checkout@v3
    - name: list the files after checkout
      run: | 
        ls -R
    - name: install git
      run: |
        apt-get install -y git

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
    
    - name: Test with pytest and generate coverage report 
      run: |
        pytest --cov=src --cov-report=xml

    - name: Upload coverage reports to Codecov
      uses: codecov/codecov-action@v4
      with:
        token: ${{ secrets.CODECOV_TOKEN }}
        file: coverage.xml
        slug: yanchenmochen/ActionPractice
        verbose: true
        

网页展示

image-20240416152657812

解释

注意:由于要使用容器环境,因此jobs.job-name.container:下有支持的参数,具体参见

  • Running jobs in a container
  • jobs.job-id.container
  • 配置容器启动时的–options参见 Use jobs.<job_id>.container.options to configure additional Docker container resource options. For a list of options, see “docker create options.”
image-20240416155735369

效果

image-20240416155610658

总结

 本文详细的记录了为一个GitHub配置一个self-hosted runner的过程,通过上述的过程,我们可以灵活的为仓库配置自定义的运行器,并且也可以使用自定义的容器进行仓库CI作业的执行,提升作业环境的封装性。通过灵活的设计CI工作流的步骤,我们可以方便的设计CI的各个步骤,在执行某个步骤的时候,我们也可以借助于GitHub Actions Marketplace所提供的常用功能组件辅助我们进行有效的工作流配置文件的编写。因此整个生态也是闭包的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac电脑上有什么好玩的格斗游戏 《真人快打1》可以在苹果电脑上玩吗

你是不是喜欢玩格斗游戏&#xff1f;你是不是想在你的Mac电脑上体验一些刺激和激烈的对战&#xff1f;在这篇文章中&#xff0c;我们将介绍Mac电脑上有什么好玩的格斗游戏&#xff0c;以及《真人快打1》可以在苹果电脑上玩吗。 一、Mac电脑上有什么好玩的格斗游戏 格斗游戏是…

使用prompt_toolkit构建交互式命令行工具

prompt_toolkit是一个python库&#xff0c;用于构建命令行工具和终端应用。其官网介绍如下&#xff0c; prompt_toolkit is a library for building powerful interactive command line and terminal applications in Python. 安装命令如下&#xff0c; pip install prompt_to…

2024Guitar Pro 8.1 Mac 最新下载、安装、激活、换机图文教程

吉他爱好者必备神器&#xff1a;Guitar Pro v8.1.1 Build 17深度解析 随着数字音乐制作和学习的日益普及&#xff0c;越来越多的吉他爱好者开始寻找能够帮助他们提升技能、创作音乐的专业工具。在众多吉他制作软件中&#xff0c;Guitar Pro因其强大的功能和易用的界面备受推崇…

03-JAVA设计模式-中介者模式

中介者模式 什么是中介者模式 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为设计模式&#xff0c;用于减少对象之间的直接依赖关系&#xff0c;降低它们之间的耦合度&#xff0c;并使得一个对象改变时&#xff0c;所有依赖于它的对象都得到通知并自动更新。…

【QT学习】7.事件,把文本显示在页面中(文本可变),鼠标指针切换,鼠标左键右键按下,qt设置背景样式

0.创建项目&#xff0c;事件的创建 1.事件的位置 2.这就是多态&#xff0c;子类重写父类函数&#xff0c;子类调用子类函数&#xff0c;也可以调用父类函数。但同函数名 1.要求&#xff1a;文本显示在页面中&#xff08;文本可变&#xff09; 1.文本显示在页面的核心代码 主要步…

链表OJ - 5(合并两个有序链表)

题目描述&#xff08;来源&#xff09; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 思路 需创建一个头结点&#xff0c;然后从两个链表的表头开始依次比较传入的两个链表的结点的大小&#xff0c;并将两个链表中较小的…

Docker构建Golang项目常见问题

Docker构建Golang项目常见问题 1 dockerfile报错&#xff1a;failed to read expected number of bytes: unexpected EOF2 go mod tidy: go.mod file indicates go 1.21, but maximum supported version is 1.17 1 dockerfile报错&#xff1a;failed to read expected number o…

Linux编辑器gcc/g++的使用以及Makefile的用法

gcc如何完成 格式 gcc [选项] 要编译的文件 [选项] [目标文件] gcc对code.c编译形成可执行文件mybin&#xff0c;十分推荐直接这样写&#xff0c;下面会有拆分写法&#xff08;不推荐&#xff09; gcc与我们使用过的编辑器无二&#xff0c;都需要经过 1. 预处理&#xff08;…

QAnything部署Mac m1环境

本次安装时Qanything已经更新到了v1.3.3&#xff0c;支持纯python安装。安装过程比较简单&#xff0c;如下&#xff1a; QAnything/README_zh.md at qanything-python-v1.3.1 netease-youdao/QAnything GitHub 首先需要用Anaconda3创建隔离环境&#xff0c;简要说明下Anaco…

Word分节后,页码不连续、转PDF每节后多出空白页解决办法

1. 问题图例 废话少说&#xff0c;先上图&#xff1a; 2. 问题分析 问题分析&#xff1a;出现以上问题的原因可能有&#xff0c; 未链接到上一节页面布局中节的起始位置设置为[奇数页] 3. 解决问题 若为【1. 未链接到上一节】导致该问题出现&#xff0c;则我们需要选中页脚…

PACNet CellNet(代码开源)|bulk数据作细胞分类,评估细胞命运性能的一大利器

文章目录 1.前言2.CellNet2.1CellNet简介2.2CellNet结果 3.PACNet3.1安装R包与加载R包3.2加载数据3.3开始训练和分类3.4可视化分类过程3.5可视化分类结果 4.细胞命运分类和免疫浸润比较 1.前言 今天冲浪看到一个细胞分类性能评估的R包——PACNet&#xff0c;它与转录组分析方法…

Easy GIS .NET GMap.Net

Easy GIS .NET & GMap.Net .NET 环境下非常简单的GIS地图开发库。 Easy GIS .NET 一个简单的GIS 桌面应用程序&#xff0c;实现了地图瓦片加载、shapefile文件和csv文件加载渲染、地图坐标系统设置及转换等等基本功能&#xff0c;非常简单易用。 Easy GIS .NET is an o…

论文浅尝 | QA-GNN:结合语言模型与知识图谱进行问答推理

笔记整理&#xff1a;项卓怡&#xff0c;浙江大学硕士&#xff0c;研究方向为生化大模型。 链接&#xff1a;https://arxiv.org/abs/2104.06378 Code&#xff1a;https://github.com/michiyasunaga/qagnn Citation: Yasunaga M, Ren H, Bosselut A, et al. QA-GNN: Reasoning w…

pytest学习-pytorch单元测试

pytorch单元测试 一.公共模块[common.py]二.普通算子测试[test_clone.py]三.集合通信测试[test_ccl.py]四.测试命令五.测试报告 希望测试pytorch各种算子、block、网络等在不同硬件平台,不同软件版本下的计算误差、耗时、内存占用等指标. 本文基于torch.testing._internal 一…

Python基于Django搜索的目标站点内容监测系统设计,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Android Studio XML 预览View 底部移动到右边

以前 XML 的预览都是在右边的&#xff0c;最近不知道为什么突然到下面去了&#xff0c;很不习惯 找半天想把 预览view 移动到右边&#xff0c;一直没找到按钮。 误打误撞移回来了&#xff0c;原来只要再点击一次 split&#xff0c;就可以变动位置了&#xff0c;记录一下。

ChatGPT及GIS、生物、地球、农业、气象、生态、环境科学领域案例

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

C++教你如何模拟实现string,如何实现string写时拷贝

文章目录 前言成员变量默认成员函数默认构造函数拷贝构造函数析构函数赋值运算符重载 容量相关函数&#xff08;Capacity&#xff09;reserve函数resize函数size函数capacity 函数clear函数 修改函数&#xff08;Modifiers&#xff09;swap函数insert函数字符插入字符串插入 ap…

未来城市可视化,A3D引擎支持,免费搭建全新一代数字孪生!

AMRT3D数字孪生引擎https://www.amrt3d.com/#/ 什么是未来城市&#xff1f;它是新型数字化理念的载体&#xff0c;以数字孪生与物理世界城市的融合为核心&#xff0c;通过数字孪生技术在数字空间实时构建城市&#xff0c;采用数据整合和分析预测来实时模拟、预测、控制整体城市…

uniapp之消除图片的空白占用空间

我们在使用uniapp开发的过程中一定会遇到一个情况就是我们加载的图片总有一点空白出现在不该出现的地方代码如下 <view style"background:#ff0000;"><image style"width:100%;"src"https://t7.baidu.com/it/u1819248061,230866778&fm19…