GitHub工作流的使用笔记

这篇具有很好参考价值的文章主要介绍了GitHub工作流的使用笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

有些东西真的就是要不断的试错不断地试错才能摸索到一点点,就是摸索到凌晨两三点第二天要8点起床感觉要死。
为什么我会用这个东东,因为我搞的阿里云服务器2个g的运行内存,打包这玩意贼消耗内存,本来想搞Jenkins但是服务器上搞更要内存,本机搞又没必要,刚好之前的公司里面了解过这东东,直接就是试试就试试了

github workflows,GitHub,github,服务器
github workflows,GitHub,github,服务器
摸索出来能打包了野心也不会止步于此
github workflows,GitHub,github,服务器

1. 怎么用

怎么使用GitHub的工作流?
在项目根目录下创建.github/workflows/main.yml (main你顺便 叫ikun也行)
文件里面就是写环境和命令行命令
github workflows,GitHub,github,服务器
然后推送到GitHub 就会自动识别并执行里面的命令

2. 怎么写

github workflows,GitHub,github,服务器

前端案例1:自动打包到新分支

当有代码被推送到main分支时触发

  • 打包代码
  • 强行推送到build分支(覆盖)
  • 发送请求给后端服务器(服务器自动到GitHub的build分支拉取部署)
  • 成功的话,配置QQ邮箱 给我另外一个邮箱发邮件

这里用到了推送别的分支,GitHub默认是关闭的,要自己打开
授予 GitHub Actions 推送权限:

  • 进入你的 GitHub 仓库的「Settings」-「Actions」页面。
  • 在「Workflow permissions」下,勾选「Allow write access to repository」选项。
  • 这样 GitHub Actions 就被授予了推送代码的权限。
    github workflows,GitHub,github,服务器

命令里面用了很多${{ secrets.*** }}
这些就是不想被别人看到的一些敏感数据 比如密码 我比较保守账号密码URL全部都用这些表示了,那么怎么用呢?

  • 进入仓库设置: 在您的仓库页面上,点击顶部的Settings(设置)标签。
  • 访问Secrets部分: 在左侧菜单中,找到并点击 Secrets and variables(秘密)下面的Actions。这里存储了仓库的敏感数据。
  • 添加新的 Secret: 点击 “New repository secret”(新建仓库秘密)按钮。
  • 输入 Secret 的名称和值:
    – 在 “Name”(名称)字段中输入 Secret 的名称,例如 EMAIL_USERNAME。
    – 在 “Value”(值)字段中输入对应的数据,例如您的邮箱用户名。
  • 保存 Secret: 完成输入后,点击 “Add secret”(添加秘密)按钮保存。
    github workflows,GitHub,github,服务器
    github workflows,GitHub,github,服务器
name: Build and Deploy

# 当代码被推送到 main 分支时触发此工作流程
on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    # 设置 Node.js 环境,版本为 16
    - name: Setup Node.js
      uses: actions/setup-node@v3
      with:
        node-version: 16

    # 安装项目依赖
    - name: Install Dependencies
      run: yarn install

    # 执行构建脚本
    - name: Build
      run: yarn run build


    # 先设置时区并获取东八区当前时间
    - name: Get Beijing Time
      id: beijing_time
      run: echo "BEIJING_TIME=$(TZ=Asia/Shanghai date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_ENV


    # 推送构建结果到 build 分支
    - name: Push to Build Branch
      run: |
        git config --local user.email "action@github.com"
        git config --local user.name "Yc Action"
        git checkout --orphan temp-build
        git rm -rf .
        rm -rf node_modules                       # 移除 node_modules
        find . -name "*s.map" -exec rm -f {} \;   # 移除所有js.map和css.map文件
        mv build/* .
        git add -f *
        git commit -m "yc自动打包 - ${{ env.BEIJING_TIME }}"
        git push origin HEAD:build -f

    # 请求脚本并获取返回值
    - name: Run Script and Get Output
      run: |
        echo "SCRIPT_OUTPUT=$(curl -s ${{ secrets.URL }})" >> $GITHUB_ENV

      # 构建成功后发送邮件
    - name: Send Email on Success
      if: success() # 这会确保只在成功时发送邮件
      uses: dawidd6/action-send-mail@v2
      with: # 以下是发送邮件需要提供的一些配置信息
        server_address: smtp.qq.com
        server_port: 587
        username: ${{ secrets.EMAIL_USERNAME }}
        password: ${{ secrets.EMAIL_PASSWORD }}
        subject: 打包成功 - ${{ env.SCRIPT_OUTPUT }}
        to: ${{ secrets.TO_EMAIL }}
        from: GitHub Actions
        body: 构建成功。构建时间:${{ env.BEIJING_TIME }}。脚本输出:${{ env.SCRIPT_OUTPUT }}

上面请求的URL是springboot 一个接口
有兴趣就看看(一定要自己加些校验)

@GetMapping("/run-script")
 public String runScript(String scriptName) {
     try {
         // 判断操作系统是否为Linux
         String osName = System.getProperty("os.name").toLowerCase();
         if (!osName.contains("linux"))
             return "该脚本只能在Linux上运行。";

         // 指定要运行的脚本路径
         String scriptPath = "/var/script/"+scriptName;

         // 检查脚本是否存在
         if (!Files.exists(Paths.get(scriptPath)))
             return "脚本文件不存在。";

         // 在新的线程中执行脚本
         new Thread(() -> {
             try {
                Process process = Runtime.getRuntime().exec(scriptPath);
                process.waitFor();
             } catch (Exception e) {log.error(e.getMessage());}
         }).start();
         return "脚本在后台运行。";

     } catch (Exception e) {
         log.error(e.getMessage());
         return "执行脚本时出错。";
     }
 }



前端案例2:自动打包推送到gitee的build分支

代码被推送到 gitee-build 分支时触发

  • 打包代码
  • 设置gitee的仓库地址(要先提前在gitee拿到token 和在 GitHub动作秘密里面配置好)这个地址网上找了老久都找不到,基本只有GitHub的,就是设置不太一样
  • 推送到gitee(强制(覆盖))的build分支
  • 发送邮件

这里的name都用中文了,name就是个名字,比如工作流出错了 GitHub就会告诉你那个名字下面的工作出错,还有就像下图一样 清晰明了
github workflows,GitHub,github,服务器

name: 构建和推送

# 当代码被推送到 gitee-build 分支时触发此工作流程
on:
  push:
    branches: [gitee-build]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - name: 设置 Node.js 环境,版本为 16
      uses: actions/setup-node@v3
      with:
        node-version: 16

    - name: 安装项目依赖
      run: yarn install

    - name: 执行构建脚本
      run: yarn run build


    - name: 先设置时区并获取东八区当前时间
      id: beijing_time
      run: echo "BEIJING_TIME=$(TZ=Asia/Shanghai date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_ENV


    - name: 推送构建结果到gitee的 build 分支
      run: |
        git config --local user.email "action@github.com"
        git config --local user.name "Yc Action"
        git checkout --orphan temp-build
        git rm -rf .
        rm -rf node_modules                       # 移除 node_modules
        find . -name "*s.map" -exec rm -f {} \;   # 移除所有js.map和css.map文件
        mv build/* .
        git add -f *
        git commit -m "GitHub Actions自动打包 - ${{ env.BEIJING_TIME }}"
        git remote add gitee https://yc556:${{ secrets.GITEE_TOKEN }}@gitee.com/yc556/yc556.git
        git push gitee HEAD:build -f

    - name: 构建成功后发送邮件
      uses: dawidd6/action-send-mail@v2
      with: # 以下是发送邮件需要提供的一些配置信息
        server_address: smtp.qq.com
        server_port: 587
        username: ${{ secrets.EMAIL_USERNAME }}
        password: ${{ secrets.EMAIL_PASSWORD }}
        subject: 推送到gitee成功 - ${{ env.SCRIPT_OUTPUT }}
        to: ${{ secrets.TO_EMAIL }}
        from: GitHub Actions
        body: 推送成功。请自己去更新构建内容,时间:${{ env.BEIJING_TIME }}。脚本输出:${{ env.SCRIPT_OUTPUT }}

案例3:暂时略

不只是能搞Git 毕竟动作流就像是一台免费的服务器,打包后端 定时任务,爬虫 都是可以的文章来源地址https://www.toymoban.com/news/detail-858758.html

到了这里,关于GitHub工作流的使用笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Github Flow工作流简单介绍(以部署为中心的开发模式)

    前言 这篇文章主要介绍Github Flow的理念,以下内容来源于《Github入门与实践》。 Github Flow是以部署为中心的开发模式,通过简单的规则,持续高速且安全地进行部署。而Gitflow则是以发布为中心的分支管理模型,它提供了一种更灵活的方式来管理代码库中的更改。可以参考《

    2024年02月15日
    浏览(30)
  • Git之GitFlow工作流 | Gitflow Workflow(万字整理,已是最详)

    目录 🩸 写在前面 一、 GitFlow 介绍 1.1 什么是 GitFlow 1.2 GitFlow 常用分支说明 1.3 Git flow中的分支介绍 1.3.1 主要分支(Master) 1.3.2 开发分支(Develop) 1.3.3 功能分支(Feature) 1.3.4 预发分支(Release) 1.3.5 热修复分支(Hotfix) 1.4 GitFlow 工作流程 二、GitFlow 实践 2.1 创建 develop 分支

    2024年02月17日
    浏览(32)
  • Unity & PS Linear Workflow - Unity 和 PS 的线性工作流实践 - 简单配置示例

    因为 新的 Unity 项目人物走写实PBR风格 所以铁定基于 Linear Workflow 比基于 Gamma Workflow 的渲染效果更好 但是 Linear Workflow 下对 美术工作流不太友好,下面就实验并总结一些方案的优缺点 供大家选取 先看看不同 Color Space 下的 PBR 选择差异有多大 在 Unity Linear Color Space 渲染质量接

    2023年04月08日
    浏览(34)
  • 【学习笔记】Flowable - 01 - 工作流 快速上手

    JDK8 Flowable6 (6.3 or 6.7.2) Postgresql (MySQL同样支持) 波哥:2023年Flowable详细讲解 波哥:2022年Flowable教程-基础篇 Flowable BPMN 用户手册 中文 官方网站 官方github源码 IDEA低版本提供一个BPMN解析插件: 但是并没有很好的支持流程的绘制。 存在几个工具: 古老的Eclipse(太老的不推荐 官

    2024年01月19日
    浏览(32)
  • 若依框架SpringBoot+Activiti工作流的使用

    使用简介:本技术点主要是针对类审批的业务流程的建模,可以有:任务发布(即流程开始)到一级一级的审批到最终结束(即流程结束)一整套完备的模型 1、idea下载activiti插件 ider以前版本下载actiBPM,但是新版ider这个插件已经被淘汰,已经被下面这个替代     2、单独起

    2024年02月11日
    浏览(30)
  • 若依低代码平台(带工作流引擎版本)使用记录

    目录 0 平台介绍 1 创建数据库 2 Redis缓存数据库 3 修改配置文件 4 修改maven依赖 5 运行后台 6 运行前端 7 运行效果 带工作流引擎的开源低代码平台并不常有,这是基于若依开发的工作流版本低代码平台,MIT开源协议,前后端分离,前端使用Vue框架,后端SpringBoot。 本文引用的

    2024年02月12日
    浏览(29)
  • 【GitOps系列】使用 ArgoCD 快速打造GitOps工作流

    ArgoCD简介 官网:https://argo-cd.readthedocs.io/en/stable/ ArgoCD安装 访问ArgoCD GitOps 工作流总览 我们可以把这个完整的 GitOps 工作流分成三个部分来看。 第一部分:开发者推送代码到 GitHub 仓库,然后触发 GitHub Action 自动构建。 第二部分:GitHub Action 自动构建,它包括下面三个步骤:

    2024年02月14日
    浏览(34)
  • 中文GPTS使用秘籍,字节扣子Coze工作流使用全教程

    大家好,我是斜杠君。今天和大家分享字节扣子Coze工作流创建和使用全教程,手把手教会你。   首先我们先来看一下如何创建一个工作流。   我们以创建这样一个工作流为例。 这个工作流程的作用是:把用户输入的内容通过头条接口查询信息,把查到的信息标题翻译成英文

    2024年04月08日
    浏览(30)
  • 长视频自动化摘要笔记完整工作流;腾讯云发布AIGC全链路内容安全解决方案

    🦉 AI新闻 🚀 腾讯云发布AIGC全链路内容安全解决方案,助力企业护航生成式人工智能健康发展 摘要 :腾讯云公布MaaS能力全景图,提供AIGC全链路内容安全解决方案,覆盖从模型训练到内容生成再到事后运营全过程的内容安全建设。解决方案包含审校、安全专家、机器审核和

    2024年02月13日
    浏览(39)
  • 使用CodeArts发布OBS,函数工作流刷新CDN缓存

    摘要: 上次通过OBS和CDN部署来Hexo网站,但是每次我们不可能都自己编译然后在上传到OBS,不然太麻烦了,所以我们需要构建流水线,通过PUSH Markdown来发布文章。 本文分享自华为云社区《使用软件开发生产线CodeArts发布OBS,函数工作流刷新CDN缓存》,作者:熊大不大 。 上次

    2023年04月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包