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

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-pythonname: Python chenqun-docker applicationon: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.14options: --privilegedcredentials:username: adminpassword: admin@ZJ2023volumes:- /home/songquanheng:/home/songquanhengsteps:    - name: show python versionrun: |python --version- uses: actions/checkout@v3- name: list the files after checkoutrun: | ls -R- name: install gitrun: |apt-get install -y git- name: Install dependenciesrun: |python -m pip install --upgrade pipif [ -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 Codecovuses: codecov/codecov-action@v4with:token: ${{ secrets.CODECOV_TOKEN }}file: coverage.xmlslug: yanchenmochen/ActionPracticeverbose: 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.mzph.cn/news/824465.shtml

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

相关文章

GIT上超火的阿里内部1000页Java核心笔记,啃完竟然拿到阿里P7offer!

除了ReetrantLock&#xff0c;你还接触过JUC中的哪些并发工具&#xff1f; 请谈谈ReadWriteLock 和StampedLock。 如何让Java的线程彼此同步&#xff1f;你了解过哪些同步器&#xff1f;请分别介绍下。 CyclicBarrier和CountDownLatch看起来很相似&#xff0c;请对比下呢&am…

Django中的数据库优化与ORM性能调优【第169篇—ORM性能调优】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Django中的数据库优化与ORM性能调优 在开发基于Django的Web应用程序时&#xff0c;数据库是…

让一个元素在网页上跟随网页窗口大小变化始终保持上下左右居中

废话少说&#xff0c;直接上代码&#xff0c;懂的都懂&#xff1a; <!DOCTYPE html> <html style"font-size: 100px;"> <head><meta http-equiv"Content-Type" content"text/html;charsetUTF-8"><style type"te…

CTFHUB-技能树-Web前置技能-文件上传(前端验证—文件头检查)

CTFHUB-技能树-Web前置技能-文件上传&#xff08;前端验证—文件头检查&#xff09; 文章目录 CTFHUB-技能树-Web前置技能-文件上传&#xff08;前端验证—文件头检查&#xff09;前端验证—文件头检查题目解析 各种文件头标志 前端验证—文件头检查 题目考的是&#xff1a;pn…

Spring之CGLIB和JDK动态代理底层实现

目录 CGLIB 使用示例-支持创建代理对象&#xff0c;执行代理逻辑 使用示例-多个方法&#xff0c;走不同的代理逻辑 JDK动态代理 使用示例-支持创建代理对象&#xff0c;执行代理逻辑 Spring会自动在JDK动态代理和CGLIB之间转换: 1、如果目标对象实现了接口&#xff0c;默…

【计组】计算机系统概述

文章目录 前言正文计算机的发展历程什么是计算机系统硬件的发展历程软件的发展 计算机硬件的基本组成冯诺依曼体系结构(存储程序型电脑)现代计算机的结构 各硬件的工作原理主存储器的基本组成运算器的基本组成控制器的基本组成计算机的工作过程 计算机系统的层次结构计算机的性…

AWS Key disabler:AWS IAM用户访问密钥安全保护工具

关于AWS Key disabler AWS Key disabler是一款功能强大的AWS IAM用户访问密钥安全保护工具&#xff0c;该工具可以通过设置一个时间定量来禁用AWS IAM用户访问密钥&#xff0c;以此来降低旧访问密钥所带来的安全风险。 工具运行流程 AWS Key disabler本质上是一个Lambda函数&…

Go 语言中的 GIF 图像处理完全指南:`image/gif`的技术与实践

Go 语言中的 GIF 图像处理完全指南&#xff1a;image/gif的技术与实践 概述安装与基础设置导入 image/gif 包初步配置示例&#xff1a;设置一个简单的 GIF 编码环境 读取与解码 GIF 图像读取 GIF 文件解析 GIF 数据 创建与编码 GIF 图像创建 GIF 图像编码 GIF 图像 处理 GIF 动…

书生·浦语大模型实战训练营第二期第四节--Xtuner微调LLM--notebook

XTuner微调LLM课程笔记 一、Finetune简介 1.为什么模型要做微调&#xff1f; 现在其实大部分的大模型应该叫做“基座模型”&#xff0c;也就是基于普遍性的任务去进行与训练的&#xff0c;所以如果想让它落地在特定的下游领域中&#xff0c;它的表现必然是不如在领域内训练的模…

【devops】 阿里云挂载云盘 | 扩展系统硬盘 | 不重启服务器增加硬盘容量

扩容分区和文件系统&#xff08;Linux&#xff09; 文档地址 https://help.aliyun.com/zh/ecs/user-guide/extend-the-partitions-and-file-systems-of-disks-on-a-linux-instance?spm5176.smartservice_service_robot_chat_new.help.dexternal.4ac4f625Ol66kL#50541782adxmp…

Go 之 sync.Mutex 加锁失效现象

我先声明一下&#xff0c;并不是真的加锁失效&#xff0c;而是我之前的理解有误&#xff0c;导致看起来像是加锁失效一样。于是乎记录一下&#xff0c;加深一下印象。 我之前有个理解误区&#xff08;不知道大家有没有&#xff0c;有的话赶紧纠正一下——其实也是因为我这块的…

【在线OJ系统】自定义注解实现分布式ID无感自增

实现思路 首先自定义参数注解&#xff0c;然后根据AOP思想&#xff0c;找到该注解作用的切点&#xff0c;也就是mapper层对于mapper层的接口在执行前都会执行该aop操作&#xff1a;获取到对于的方法对象&#xff0c;根据方法对象获取参数列表&#xff0c;根据参数列表判断某个…

html接入高德地图

1.申请key key申请地址&#xff1a;https://console.amap.com/dev/key/app 官方文档 https://lbs.amap.com/api/javascript-api-v2/summary 2.html接入示例 需要将YOUR_KEY替换成自己的key <!doctype html> <html> <head><meta charset"utf-…

IDEA 安装、基本使用、创建项目

文章目录 下载基本使用修改颜色主题Keymap插件 创建项目创建模块新建 Java 类运行新建 Package打包 Jar运行 jar 包 查看文档 下载 官方下载地址&#xff1a;https://www.jetbrains.com/zh-cn/idea/download/?sectionmac 这里我下载 macOS 社区版&#xff0c;IDEA 2024.1 (C…

arcgis中坡向计算工作原理说明

用于识别出从每个像元到其相邻像元方向上值的变化率最大的下坡方向。坡向可以被视为坡度方向。输出栅格中各像元的值可指示出各像元位置处表面的朝向的罗盘方向。将按照顺时针方向进行测量&#xff0c;角度范围介于 0&#xff08;正北&#xff09;到 360&#xff08;仍是正北&a…

Windows 安装 A UDP/TCP Assistant 网络调试助手

Windows 安装 A UDP/TCP Assistant 网络调试助手 0. 引言1. 下载地址2. 安装和使用 0. 引言 需要调试一个实时在线聊天程序&#xff0c;安装一个UDP/TCP Assistant 网络调试助手&#xff0c;方便调试。 1. 下载地址 https://github.com/busyluo/NetAssistant/releases 2. 安…

Jsp 中的getServletContext全局数据共享

servletContext作用于不同用户之上 1. 一个用户将数据保存到了servletContext中, // getcontext的servlet程序 Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context this.get…

考察自动化立体库应注意的几点

导语 大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;老K。专注分享智能仓储物流技术、智能制造等内容。 整版PPT和更多学习资料&#xff0c;请球友到知识星球 【智能仓储物流技术研习社】自行下载 考察自动化立体仓库的关键因素&#xff1a; 仓库容量&#x…

windows11 wsl2 ubuntu20.04安装vision mamba并进行测试

windows11 wsl2 ubuntu20.04安装vision mamba 安装流程使用cifar-100测试安装成功 安装流程 vision mamba安装了半天才跑通&#xff0c;记录一下流程在wsl上安装cuda wget https://developer.download.nvidia.cn/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05…

[论文笔记]Root Mean Square Layer Normalization

引言 今天带来论文Root Mean Square Layer Normalization的笔记&#xff0c;论文题目是均方根层归一化。 本篇工作提出了RMSNorm&#xff0c;认为可以省略重新居中步骤。 简介 层归一化对Transformer等模型非常重要&#xff0c;它可以帮助稳定训练并提升模型收敛性&#xf…