Github实现push触发自动构建(包括提交代码到另一个仓库中和发布npm)

将指定内容自动更新到另一个代码仓库中

  1. 登录https://github.com,创建Personal access token:
    (1)github右上角,点击头像,进入Settings => Developer settings => Personal access tokens 下面的Tokens (classic)中,点击Generate new token,选择Generate new token (classic)
    (2)跳出的页面中输入github密码进行验证,
    (3)Note中填写此token的描述,过期时间自己选择,select scopes中选择repo(全选),点击Generate token按钮,即可生成一个token,此时会显示具体token内容,记得一定要复制!!!(只此显示一次,后面都不会再次显示)
    在这里插入图片描述

  2. 进入该代码仓库中新增secret,按照下图新增一个secret,对于需要用到的用户名、邮箱也可以在这里自定义添加,到这里配置基本结束
    在这里插入图片描述
    在这里插入图片描述

  3. 接下来点击Actions创建wokeflows脚本,目录在.guthub/workflows目录下选择合适的工作流脚本文件

  4. 脚本文件内容如下(根据需要调整内容,复制后请把//后面的注释删掉):

name: update fe-toolkit-doc

on:
  push:
    branches:
      - master  // 这里替换为自己要触发的分支

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '18.x'
      - name: Install Dependencies
        run: npm i
      - name: Build
        run: npm run build:doc   // 替换为自己的打包命令

      - name: Clone destination repository
        run: |
          git clone https://这里是github的username:${{ secrets.API_TOKEN_GITHUB }}@github.com/这里是github的username/要提交代码的另一个仓库名称.git destination_repo

      - name: Backup all files in the repository
        run: |
         mkdir -p dist/backup  // 创建备份文件
         cp -r destination_repo/* dist/backup/

      - name: Remove all files from the repository
        run: |
          cd destination_repo
          git rm -r *

      - name: Commit and push changes
        run: |
          cd destination_repo
          git config --local user.email ${{ secrets.USER_EMAIL }}
          git config --local user.name ${{ secrets.USER_NAME }}
          git commit -m "Remove all files"
          git push origin master

      - name: Push to another repository
        uses: cpina/github-action-push-to-another-repository@main
        env:
          API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
        with:
          source-directory: 'dist'   // 要提交的目标文件
          destination-github-username:  ${{ secrets.STORE_USER_NAME }}
          destination-repository-name: ${{ secrets.STORE_ANOTHER_NAME }}
          user-email: ${{ secrets.USER_EMAIL }}
          target-branch: master  // 目标分支

  1. 提交代码后到 Actions下工作流查看进度和日志
    在这里插入图片描述

代码提交后自动发布更新npm包

  1. 按照上面第一步操作创建一个Personal access token
  2. 按照上面第二步添加该Personal access token
  3. 登录https://www.npmjs.com/,按照下图去创建npm的access token(会跳出npm的验证页面,输入密码即可),最后会生成一个token,记得一定要复制!!!,此token只会出现一次
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. 然后我们登录到gihub上,打开自己的代码仓库,将此token放到仓库中的secrets中,此时就基本完成的所有的创建工作
    在这里插入图片描述
  5. 按照上面第三部操作创建一个工作流脚本文件
  6. 脚本内容如下(根据需要调整内容,复制后请把//后面的注释删掉):
name: npm publish

on:
  push:
    branches:
      - master  // 触发分支

permissions:
  contents: write

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '18.x'
          registry-url: 'https://registry.npmjs.org'

      - name: Install dependencies
        run: |
          cd packages/utils  // 要发布的npm文件目录
          npm i

      - name: Set user info
        run: |
          git config user.name 自己的username
          git config user.email 自己的邮箱

      - name: Version bump and Publish to npm  // 每次发布都需要更新版本号
        run: |
          cd packages/utils   // 要发布的npm文件目录
          npm version patch -m "Version bumped to %s" && npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

      - name: Commit and push changes  // 发布后需要将增加的版本号更新到仓库中
        run: |
          git config --local user.email ${{ secrets.USER_EMAIL }}
          git config --local user.name ${{ secrets.USER_NAME }}
          git add .
          git commit -m "Update version"
          git push https://这里是github的username:${{ secrets.API_TOKEN_GITHUB }}@github.com/这里是github的username/这里是github的仓库名称.git

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一名00后程序员初次使用低代码开发平台的感受

前言 大家好,我是小代,一名00后的Java后端开发工程师。我热爱编程,希望通过写博客来分享我的学习经验和心得。最近,我加入了一家专注于低代码开发平台的公司,这里的技术挑战和新颖性让我决定开始我的博客之旅。 工作…

3.1 SQL概述

SQL(Structured Query Language) 结构化查询语言,是关系数据库的标准语言 SQL是一个通用的、功能极强的关系数据库语言 功能:查询,数据库模式创建,数据库数据的插入与修改,数据库完整性、安全…

影响欧美货币对因素?fpmarkets提醒如何避免陷阱

欧元兑美元汇率不仅取决于美国经济数据,还取决于欧洲央行的报告。 美国经济数据不仅包括美联储利率和美国就业报告,还有美国石油储备、汽油储备和页岩油钻井平台数量的报告。fpmarkets发现更谨慎的投资者还会分析失业数据、平均时薪变化这些更细致的数据…

1.使用eNSP绘制拓扑图实训

1.实训目的 掌握使用eNSP绘制拓扑图的方法。 2.应用环境 某企业需要提升自己的网络环境,为了保证项目顺利的实施,需要使用eNSP事先绘制拓扑图。 3.实训设备 安装有eNSP的计算机。 4.实训内容 按照设…

矿场设备远程监控解决方案

矿场设备远程监控解决方案 在现代工业智能化进程中,针对矿场设备远程监控的解决方案显得尤为重要。这一方案旨在通过集成先进的信息技术与物联网技术,实现对矿场各类设备的实时、精准、高效的远程监控和管理,从而优化生产效率,降…

WHM中启用FTP功能

WHM面板上FTP功能默认是禁用的,我们在创建完cPanel账户之后,用到FTP去登录的时候会发现登录受限,这个时候可以去WHM面板上启用,这边以Hostease的独立服务器并且购买了cPanel面板为例,步骤如下: 1.先登陆WH…

what is apache?

Apache 通常指 Apache Software Foundation (ASF) 或 Apache HTTP Server,两者都是计算机软件领域的重要实体。 Apache 软件基金会 (ASF):Apache 软件基金会是一个开发开源软件项目的非营利组织。它为涵盖软件开发各个方面的广泛项目提供支持&#xff0c…

01背包-动态规划

01背包 易知状态转移方程为: dp[i][j] max(dp[i-1][j],dp[i-1][j-v[i]]w[i]) 代码 N,V map(int,input().split()) v, w [0],[0] # 体积v,价值w for i in range(N):a list(map(int,input().split()))v.append(a[0]) # 体积viw.append(a[1]) # 价值w…

【牛客】【刷题节】美团2024届秋招笔试第一场编程真题

1.小美的外卖订单【简单题】 题意理解: 这道题是简单题,主要是一个逻辑实现和判断的问题。但是简单题一般喜欢加一点小障碍,所以读题的时候就要比较注意一些约束条件。就比如这道题:过了15/20个测试用例,出现error, 当…

基于ssm的社区文化宣传网站论文

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,社区文化宣传网站当然也不能排除在外。社区文化宣传网站是以实际运用为开发背景,运用软件工程开发方法&…

奇舞周刊第523期:来自 rust 生态的强烈冲击?谈谈 Leptos 在语法设计上的精妙之处...

奇舞推荐 ■ ■ ■ 来自 rust 生态的强烈冲击?谈谈 Leptos 在语法设计上的精妙之处 过去很长一段时间,前端框架们都在往响应式的方向发展。同时又由于 React hooks 的深远影响,函数式 响应式成为了不少前端心中最理想的前端框架模样。Solid …

语音情感分类(1)简单可运行项目(附代码)

1.目标 题主最开始是想做一个音乐情感分类的模型,但是查阅相关文献发现这个范围太大了,音乐情感特征包括文本,音频,甚至有的还有画面,是一个多模态的范畴。所以退而求其次,找了一个接近的语音情感分类来学…

Vmware虚拟机无法用root直连说明

Vmware虚拟机无法用root直连说明 背景目的SSH服务介绍无法连接检查配置 背景 今天在VM上新装了一套Centos-stream-9系统,网络适配器的连接方式采用的是桥接,安装好虚拟机后,在本地用ssh工具进行远程连接,ip、用户、密码均是成功的…

图片格式转换:快速将PNG转换为JPG的步骤

在我们的日常生活中,经常会遇到需要改变图片格式的情况,有时候,我们可能需要将PNG格式的图片转换为jpg格式,以适应不同的需求和应用场景;本文将介绍哥实用的方法和工具,帮助您顺利将png图片转换为jpg格式。 压缩图网站…

睿考网:注册会计师考试有什么题型?

注册会计师专业阶段考试共6门科目,各科目考试题型略有不同。 《会计》考试题型为单项选择题、多项选择题、计算分析题、综合题。 《审计》考试题型为单项选择题、多项选择题、综合题、简答题。 《税法》考试题型为单项选择题、多项选择题、综合题、计算问答题。 …

GPT提示词分享 —— 口播脚本

可用于撰写视频、直播、播客、分镜头和其他口语内容的脚本。 提示词👇 请以人的口吻,采用缩略语、成语、过渡短语、感叹词、悬垂修饰语和口语化语言,避免重复短语和不自然的句子结构,撰写一篇关于 [主题] 的文章。 GPT3.5&#…

代码随想录算法训练营Day36|LC435 无重叠区间LC763 划分字母区间LC56 合并区间

一句话总结:都是和昨天的用最少箭引爆气球类似的题。 原题链接:435 无重叠区间 计数不重叠的区间的个数,然后用总长度减去这个值即可。 class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals, (a,…

Linux进程调度CFS

1. 进程 1.1 什么是进程? 操作系统作为硬件的使用层,提供使用硬件资源的能力,而进程作为操作系统使用层,提供使用操作系统抽象出的资源层的能力。进程是指计算机中已运行的程序。进程本身不是基本的运行单位,而是线程…

EasyCVR在银河麒麟V10系统中启动异常及解决方法

安防监控视频平台EasyCVR具备较强的兼容性,它可以支持国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议与SDK,如:海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等。平台兼容性强,支持Windows系…

css-基本问题

margin 塌陷问题 什么是margin 塌陷? 第一个子元素的上 margin 会作用在父元素上,最后一个子元素的下 margin 会作用在父元素上。 出现的原因: 在早期的时候,制定者认为,第一个子元素的上margin 给父元素&#xff…