惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
P
Privacy & Cybersecurity Law Blog
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Project Zero
Project Zero
S
Security @ Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
A
Arctic Wolf
Webroot Blog
Webroot Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Security Latest
Security Latest
H
Heimdal Security Blog
N
News and Events Feed by Topic
N
News | PayPal Newsroom
T
Tor Project blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
Scott Helme
Scott Helme
A
About on SuperTechFans
M
MIT News - Artificial intelligence
V
V2EX
V
Visual Studio Blog
Recorded Future
Recorded Future
博客园 - 叶小钗
F
Fortinet All Blogs
L
Lohrmann on Cybersecurity
The GitHub Blog
The GitHub Blog
博客园 - Franky
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Secure Thoughts
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)
I
InfoQ
SecWiki News
SecWiki News
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta
J
Java Code Geeks
B
Blog RSS Feed
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
V
Vulnerabilities – Threatpost
H
Help Net Security

Oragekk's Blog

OpenSpec 技术分享:用规格驱动 AI 编程 ChatGPT&Codex订阅教程 一个 waline 评论系统bug引发的思考 Jenkins 远程触发构建踩坑记 Git SSH 密钥配置 初识Rust vuepress-plugin-meting2 谷歌发布多平台应用开发神器Project IDX!PaLM 2加持 Vue常见优化手段 Vue2响应式原理解析 Dart 中的并发 Flutter 工作原理 如何利用GitHub Action提交URL到搜索引擎 提交URL到搜索引擎(百度、Bing、Google) GitHub Actions 使用介绍 素材设计 前端-Q&A 浏览器的事件循环 你不知道的 CSS 之包含块 CSS 属性计算过程 评论插件 Waline 之邮件通知配置 公开API 终端究极美化iTerm2+Pure 使用Bing API提交网站URL Flutter 基础大集合 关于本站 关于本站 关于我 Markdown 展示 使用n命令管理node版本 幻灯片页 ReactNative State(状态) ReactNative开发环境配置,ES6语法介绍 ReactNative介绍 更优雅强大的终端ZSH 神经网络模型训练 YYCache优秀的缓存设计 WebViewJavascriptBridge NSError WCDB漫谈 优雅的实现TableViewCell单选 初探机器学习框架CoreML 深入理解swift中闭包的捕捉语义 ijkPlayer 集成 iOS 配置https iOS timelineLogistics iOS Cookie的配置及使用 WKWebView拦截URL WKWebView使用及自适应高度 textfield限制输入字符 评论系统从多说迁移到disqus指南 利用Runtime进行快速归档 iOS 10.3 keychain 重大更新 Cell的accessoryType属性标记单元格之后,出现的重用问题 通过UserAgent判断设备 AFNetworking A memory leak 一人一句宋词 OC 中的枚举类型 iOS - Image compression algorithm iOS程序启动原理(下) iOS程序启动原理(上) NSOperatioin TableView性能优化 Runloop Test Three ways to call Update Cocoapods 1.1.1 减小iOS-App或者静态库体积 Jekyll旧站回忆 JavaScript ES6 CommonJS,RequireJS,SeaJS 归纳笔记 Unix/Linux 扫盲笔记
Vercel deploy忽略指定分支
Oragekk · 2023-03-31 · via Oragekk's Blog

一招教你解决Vercel deploy时总是任意分支都可以触发,如果你的项目有多个分支,可以指定某一个或几个有提交时触发deploy

1. 前言

提示

这不是刚把博客部署从GitHub Pages转移到了Vercel上,稍微加快了一点国内的访问速度,然后发现了一个新问题~

原先是推送到main分之,通过Github Action 工作流进行部署到gh-page 分支上

转移到Vercel之后,工作流我并没有删掉,所以流程还是一样,就导致main提交了--->Action---->gh-page提交

会触发两次Vercel的部署,当然gh-page是存放静态页面的分支,buid肯定是失败的。下边来解决这个问题吧

2. 步骤

如图所示,打开setting-Git-Ignored Build Step

启用“忽略构建步骤”字段。如果命令返回“0”,则将跳过构建。但是,如果返回代码“1”或更大,则将生成新的部署。

我是使用系统环境变量来做的,方式有很多,看自己方便吧,在Command处输入以下脚本表示只构建main分支

if [ "$VERCEL_GIT_COMMIT_REF" == "main" ]; then exit 1; else exit 0; fi

系统环境变量默认是曝光的,如果不生效,在Environment Variables 中勾选

  • Automatically expose System Environment Variables
setting-Git-Ignored Build Step
setting-Git-Ignored Build Step

3. 使用脚本

要在“忽略构建步骤”中运行 bash 脚本,您需要在该字段中设置以下内容:请注意该文件应该存在于您的存储库中。 bash 脚本示例: bash script.shbash 脚本的示例:bash script.sh

注意 您也可以使用 Node 脚本(例如 )。node ignore-step.js

#!/bin/bash

echo "VERCEL_ENV: $VERCEL_ENV"

if [[ "$VERCEL_ENV" == "production" ]] ; then
  # Proceed with the build
  echo "✅ - Build can proceed"
  exit 1;


else
  # Don't build
  echo "🛑 - Build cancelled"
  exit 0;
fi

一个示例 Ignored Build Step 脚本,其中只允许部署对生产环境所做的提交。应将环境变量“VERCEL_ENV”添加到您的项目中。

通过使用此命令,Vercel 将仅在“VERCEL_ENV”的值为“production”时构建部署。该变量已添加到环境变量 UI,使其可用于项目。

4. 使用环境变量

您可以直接在 Ignored Build Step 字段中创建引用系统环境变量的命令:

if [ "$VERCEL_ENV" == "production" ]; then exit 1; else exit 0; fi

一个示例 Ignored Build Step 命令,其中只允许部署对生产环境所做的提交。

下面是一个示例脚本,它将有条件地构建某些分支:

#!/bin/bash

echo "VERCEL_GIT_COMMIT_REF: $VERCEL_GIT_COMMIT_REF"


if [[ "$VERCEL_GIT_COMMIT_REF" == "staging" || "$VERCEL_GIT_COMMIT_REF" == "main"  ]] ; then
  # Proceed with the build
    echo "✅ - Build can proceed"
  exit 1;
else
  # Don't build
  echo "🛑 - Build cancelled"
  exit 0;
fi

一个示例 Ignored Build Step 命令,其中只允许部署从分支“main”和“staging”进行的提交。

5. 使用文件夹和工作区

在继续之前,请记住 Ignored Build Step 在您选择的“根目录”的同一文件夹中运行。因此,您可能需要稍微调整一下以适应您的需要。要构建仅考虑特定文件夹的新部署,您可以使用以下命令

git diff HEAD^ HEAD --quiet ./packages/frontend/

“忽略构建步骤”命令的示例。如果将更改提交给“./packages/frontend/”,该命令将产生一个非空响应,从而允许构建继续进行。
通过使用此命令,Vercel 将仅在目录内进行更改时构建部署。如果该文件夹是您选择的“根目录”,则可以使用:packages/frontend/``./packages/frontend/

git diff HEAD^ HEAD --quiet .

“忽略的生成步骤”命令的示例。如果将更改提交到 “.”,则该命令将生成非空响应,从而允许继续生成。

您还可以访问部署中的其他文件夹以检查更改。如果您在构建前端时选择了“根目录”,并且您的应用程序必须仅在进行更改时部署,您可以使用: packages/web ../../packages/docs

git diff HEAD^ HEAD --quiet ../../packages/docs

“忽略的生成步骤”命令的示例。如果将更改提交到“../../packages/docs“,该命令将产生一个非空响应,允许构建继续。

6. 在本地调试命令

要在本地调试忽略的构建步骤命令,首先使用可以复制 Vercel 上可用设置的文件夹非常重要。为此,您可以应用以下步骤:

  1. 使用 将存储库克隆到另一个文件夹。git clone --depth=10 (...)
  2. 在终端中运行命令或脚本。
  3. 您可以使用 检查最后一个命令返回的退出代码。echo $?

7. 系统环境变量一览表

名字描述
VERCEL指示应用已在 Vercel 上部署和运行的指示器。 例:。1
CI指示代码在持续集成环境中运行的指示器。 例:。 注意: 此变量仅在构建步骤期间公开。1
VERCEL_ENV部署和运行应用的环境。该值可以是 、 或 。production``preview``development
VERCEL_URL生成的部署 URL 的域名。例:。该值不包括协议方案。*.vercel.app``https://
VERCEL_REGION运行应用的区域的 ID。 例:。 注意: 此变量仅在无服务器函数的运行时公开。cdg1
VERCEL_GIT_PROVIDER从中触发部署的 Git 提供程序。 例:。github
VERCEL_GIT_REPO_SLUG从中触发部署的源存储库。 例:。my-site
VERCEL_GIT_REPO_OWNER拥有从中触发部署的存储库的帐户。 例:。acme
VERCEL_GIT_REPO_ID从中触发部署的存储库的 ID。 例:。117716146
VERCEL_GIT_COMMIT_REF触发部署的提交的 git 分支。 例:。improve-about-page
VERCEL_GIT_COMMIT_SHA触发部署的提交的 git SHA。 例:。fa1eade47b73733d6312d5abfad33ce9e4068081
VERCEL_GIT_COMMIT_MESSAGE附加到触发部署的提交的消息。 例:。Update about page
VERCEL_GIT_COMMIT_AUTHOR_LOGIN附加到部署项目的提交作者的用户名。 例:。johndoe
VERCEL_GIT_COMMIT_AUTHOR_NAME附加到部署项目的提交的作者的名称。 例:。John Doe
VERCEL_GIT_PREVIOUS_SHA项目和分支的上次成功部署的 git SHA。 例:。 注意: 仅当提供了忽略的生成步骤时,才会公开此变量。fa1eade47b73733d6312d5abfad33ce9e4068080
VERCEL_GIT_PULL_REQUEST_ID触发部署的拉取请求 ID。如果在发出拉取请求之前在分支上创建了部署,则此值将为空字符串。 例:。23