国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

萊蕪金點(diǎn)子信息港最新招聘信息港南寧seo優(yōu)化公司

萊蕪金點(diǎn)子信息港最新招聘信息港,南寧seo優(yōu)化公司,自己網(wǎng)站做問(wèn)卷調(diào)查問(wèn)卷,制作網(wǎng)站的設(shè)計(jì)難點(diǎn)“為什么package.json 里的版本還是原來(lái)的,有沒(méi)有更新?”,這個(gè)時(shí)候我意識(shí)到,我們完全沒(méi)有必要在每次發(fā)布的時(shí)候還特意去關(guān)注這個(gè)倉(cāng)庫(kù)的版本號(hào),只要在發(fā)布打tag的時(shí)候同步一下即可 node.js 部分,我們得有一個(gè)…

“為什么package.json 里的版本還是原來(lái)的,有沒(méi)有更新?”,這個(gè)時(shí)候我意識(shí)到,我們完全沒(méi)有必要在每次發(fā)布的時(shí)候還特意去關(guān)注這個(gè)倉(cāng)庫(kù)的版本號(hào),只要在發(fā)布打tag的時(shí)候同步一下即可

?

node.js 部分,我們得有一個(gè)更改倉(cāng)庫(kù)代碼的腳本留給ci執(zhí)行

我們首先需要在工程目錄中的?./script/..目錄下增加一個(gè)?update-version.js腳本

//update-version.jsconst?path?=?require('path');
const?fs?=?require('fs');
const?newVersion?=?process.argv[2].replace(/^v/,?'');;?//?獲取命令行參數(shù)中的新版本號(hào),并過(guò)濾v字頭if?(!newVersion)?{console.log('請(qǐng)傳入新版本號(hào),版本號(hào)遵循semver規(guī)范?.eg:?1.0.0,?1.0.1,?1.1.0');process.exit(1);}//?獲取當(dāng)前命令行上下文路徑const?currentDirectory?=?process.cwd();//?獲取?package.json?文件中的版本號(hào)
const?packageJsonPath?=?path.join(currentDirectory,?'package.json');
const?packageJsonContent?=?fs.readFileSync(packageJsonPath,?'utf8');
const?packageJson?=?JSON.parse(packageJsonContent);
const?currentVersion?=?packageJson.version;//?更新?package.json?文件中的版本號(hào)packageJson.version?=?newVersion;
fs.writeFileSync(packageJsonPath,?JSON.stringify(packageJson,?null,?2));
console.log(`版本號(hào)已從?${currentVersion}?更新為?${newVersion}`);

接下來(lái)在 package.json script 配置后可以直接使用?npm run version <version>?中觸發(fā)變更版本號(hào)腳本。當(dāng)然這個(gè)前提是想要讓這個(gè)腳本保留給開(kāi)發(fā)者命令行使用。

{"name":?"version?workflow","version":?"1.0.0","description":?"version?update?demo","main":?"index.js","scripts":?{//..."version":?"node?./scripts/update-version.js"},//...}

CI :如何讓發(fā)布包的行為直接和代碼倉(cāng)庫(kù)中的版本號(hào)同步?

接下來(lái)算重頭戲,如何讓發(fā)布包的行為直接和代碼倉(cāng)庫(kù)中的版本號(hào)同步?這里我們使用的是github 提供的github action[1],具體操作和語(yǔ)法可以查看一下官方文檔,本文就不過(guò)多展開(kāi)。

我們需要在倉(cāng)庫(kù)根目錄增加如下路徑的文件?.github/workflows/update-action.yml

name:?Update?Package?Versionon:release:types:?[released]jobs:update:runs-on:?ubuntu-lateststeps:-?name:?Checkout?codeuses:?actions/checkout@v3-?name:?Update?package.jsonrun:?|node?./scripts/update-version.js?${{?github.event.release.tag_name?}}env:GITHUB_TOKEN:?${{?secrets.GITHUB_TOKEN?}}-?name:?Commit?changesrun:?|git?config?user.name?"Your?github?name"git?config?user.email?"your?github?email"git?add?.git?commit?-m?"Update?version?to?${{?github.event.release.tag_name?}}?for?release?${{?github.ref?}}"-?name:?Push?changesuses:?ad-m/github-push-action@masterwith:github_token:?${{?secrets.GITHUB_TOKEN?}}

我們?cè)?release?hook 中的?released?狀態(tài)下增加了一個(gè) update job。它會(huì)做下面幾件事情(在腳本步驟中有)

  1. 【Checkout code】 切出新的代碼分支;

  2. 【 Update package.json】在新分支執(zhí)行 update-version.js 傳入tag_name更新我們的工程版本號(hào);

  3. 【Commit changes】以你定制的 git config user 信息創(chuàng)建一個(gè)新提交;

  4. 【Push changes】推送變更回到主干;

ps:正確來(lái)說(shuō)應(yīng)該在發(fā)布執(zhí)行動(dòng)作前prereleased執(zhí)行我們的 job 但是沒(méi)用這個(gè)的原因如下:

Note:[2]?The?prereleased?type will not trigger for pre-releases published from draft releases, but the?published?type will trigger. If you want a workflow to run when stable?and?pre-releases publish, subscribe to?published?instead of?released?and?prereleased.

當(dāng)這個(gè)腳本推送后,執(zhí)行發(fā)布后自動(dòng)更新版本,不用在關(guān)注這個(gè)版本修改問(wèn)題。你會(huì)得到下面的效果。

在你的倉(cāng)庫(kù)發(fā)布界面填寫(xiě)正確tag后發(fā)布

?

?觸發(fā)update job 更改完成

?

?

你可能遇到最多的坑

  1. action 執(zhí)行失敗

Process completed with exit code 129." Node.js 12 actions are deprecated. Please update the following actions to use Node.js 16: actions/checkout@v2. For more information, see https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/.

這是由于默認(rèn)action job 執(zhí)行環(huán)境的nodejs 版本與actions 包中執(zhí)行腳本不匹配導(dǎo)致,所以一定要使用 checkout@v3 版本?actions/checkout@v3

  1. 各種不熟悉 action 語(yǔ)法取值導(dǎo)致的問(wèn)題

可以優(yōu)化的地方

我們前面提交的這個(gè)流程發(fā)布還是有個(gè)問(wèn)題,你永遠(yuǎn)有個(gè)更超前的 commit hash 在你發(fā)布的 tag 之后

?

?

所以這個(gè)action 還有需要繼續(xù)優(yōu)化的地方,那就是同步更新tag hash

name:?Update?Package?Versionon:release:types:?[released]jobs:update:runs-on:?ubuntu-lateststeps:-?name:?Checkout?codeuses:?actions/checkout@v3-?name:?Update?package.jsonrun:?|node?./scripts/update-version.js?${{?github.event.release.tag_name?}}env:GITHUB_TOKEN:?${{?secrets.GITHUB_TOKEN?}}-?name:?Commit?changesrun:?|git?config?user.name?"Your?github?name"git?config?user.email?"your?github?email"git?add?.git?commit?-m?"Update?version?to?${{?github.event.release.tag_name?}}?for?release?${{?github.ref?}}"git_hash=$(git?rev-parse?--short?HEAD)-?name:?Push?changesuses:?ad-m/github-push-action@masterwith:github_token:?${{?secrets.GITHUB_TOKEN?}}-?name:?Tag?Push?changesrun:?|git?tag?-f?${{?github.event.release.tag_name?}}?$git_hashgit?push?--force?origin?${{?github.event.release.tag_name?}}env:GITHUB_TOKEN:?${{?secrets.GITHUB_TOKEN?}}

這里相比之前的版本增加了?Tag Push changes?這個(gè)步驟,在最后獲取這個(gè)版本更新產(chǎn)生的?$git_hash強(qiáng)制更新到發(fā)布的 tag 上。

我們看看效果

?

?最后我們看版本發(fā)布管理中的 tag hash

?

?

可以再優(yōu)化的地方

現(xiàn)在我們還有個(gè)問(wèn)題,就是在執(zhí)行?Commit changes?這個(gè)步驟時(shí)每次?git config user.name "Your github name" git config user.email "your github email"?這里是寫(xiě)死的,我們可以根據(jù) GitHub Actions 中有一些預(yù)設(shè)的環(huán)境變量可以讀取到當(dāng)前用戶的賬號(hào)和郵箱信息。通過(guò)?${{ env.GITHUB_ACTOR }}?獲取到當(dāng)前執(zhí)行的 Actions 的用戶賬號(hào),通過(guò)?${{ env.GITHUB_ACTOR }}@users.noreply.github.com?獲取到當(dāng)前執(zhí)行的 Actions 的用戶郵箱(該郵箱為 noreply 郵箱,用于 GitHub 的通知,無(wú)法發(fā)送郵件)。注意,該郵箱不一定是用戶本身的真實(shí)郵箱,可能是 GitHub 默認(rèn)的郵箱。

如果需要獲取當(dāng)前 GitHub 賬號(hào)的真實(shí)郵箱地址,可以通過(guò) GitHub REST API 進(jìn)行查詢,具體可以參考官方文檔:https://docs.github.com/en/rest/reference/users#get-the-authenticated-user

這樣我們就需要在Commit Changes之前再加一個(gè)Set Git user步驟

-?name:?Set?Git?userenv:GITHUB_ACTOR:?${{?github.actor?}}GITHUB_EMAIL:?${{?github.actor?}}@users.noreply.github.comrun:?|git?config?--global?user.name?"${{?env.GITHUB_ACTOR?}}"git?config?--global?user.email?"${{?env.GITHUB_EMAIL?}}"

這樣我們最終的 Github action 腳本長(zhǎng)這樣

name:?Update?Package?Versionon:release:types:?[released]jobs:update:runs-on:?ubuntu-lateststeps:-?name:?Checkout?codeuses:?actions/checkout@v3-?name:?Update?package.jsonrun:?|node?./scripts/update-version.js?${{?github.event.release.tag_name?}}env:GITHUB_TOKEN:?${{?secrets.GITHUB_TOKEN?}}-?name:?Set?Git?userenv:GITHUB_ACTOR:?${{?github.actor?}}GITHUB_EMAIL:?${{?github.actor?}}@users.noreply.github.comrun:?|git?config?--global?user.name?"${{?env.GITHUB_ACTOR?}}"git?config?--global?user.email?"${{?env.GITHUB_EMAIL?}}"-?name:?Commit?changesrun:?|git?add?.git?commit?-m?"Update?version?to?${{?github.event.release.tag_name?}}?for?release?${{?github.ref?}}"git_hash=$(git?rev-parse?--short?HEAD)-?name:?Push?changesuses:?ad-m/github-push-action@masterwith:github_token:?${{?secrets.GITHUB_TOKEN?}}-?name:?Tag?Push?changesrun:?|git?tag?-f?${{?github.event.release.tag_name?}}?$git_hashgit?push?--force?origin?${{?github.event.release.tag_name?}}env:GITHUB_TOKEN:?${{?secrets.GITHUB_TOKEN?}}
http://m.aloenet.com.cn/news/29234.html

相關(guān)文章:

  • 山東濟(jì)南網(wǎng)站建設(shè)公司深圳公司網(wǎng)絡(luò)推廣該怎么做
  • 酒類網(wǎng)站建設(shè)方案百度推廣客戶端手機(jī)版
  • 網(wǎng)站推廣計(jì)劃怎么寫(xiě)青島 google seo
  • 唐山網(wǎng)站建設(shè)哪家優(yōu)惠2000元代理微信朋友圈廣告
  • 單頁(yè)面網(wǎng)站制作視頻線上推廣方案怎么寫(xiě)
  • 投訴做網(wǎng)站的電話長(zhǎng)沙seo 優(yōu)化選智投未來(lái)no1
  • 網(wǎng)站建設(shè)與管理課程代碼寧波seo關(guān)鍵詞優(yōu)化方法
  • 安化建設(shè)局網(wǎng)站微信營(yíng)銷(xiāo)策略有哪些
  • 知名電子商務(wù)網(wǎng)站英雄聯(lián)盟世界排名
  • 帶視頻的網(wǎng)站模板免費(fèi)數(shù)據(jù)分析網(wǎng)站
  • 安全達(dá)標(biāo)建設(shè)網(wǎng)站鄭州計(jì)算機(jī)培訓(xùn)機(jī)構(gòu)哪個(gè)最好
  • 燕郊建設(shè)局網(wǎng)站建網(wǎng)站專業(yè)
  • 展示型網(wǎng)站舉例seo專員崗位職責(zé)
  • 專業(yè)建站是什么百度2019舊版本下載
  • 前端seo主要優(yōu)化哪些seo優(yōu)化是什么
  • 如何做網(wǎng)站微信支付鄭州百度快照優(yōu)化
  • 電子商務(wù)系統(tǒng) 網(wǎng)站建設(shè)百度教育會(huì)員
  • 開(kāi)源網(wǎng)站github最近一周?chē)?guó)內(nèi)熱點(diǎn)新聞
  • 濰坊網(wǎng)站建設(shè)公司有哪些內(nèi)容網(wǎng)店培訓(xùn)教程
  • 個(gè)人興趣圖片集網(wǎng)站建設(shè)b站推廣鏈接
  • 網(wǎng)站頁(yè)面描述深圳網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣招聘網(wǎng)
  • 主流網(wǎng)站開(kāi)發(fā)語(yǔ)言企業(yè)網(wǎng)站有哪些功能
  • 價(jià)錢(qián)網(wǎng)站建設(shè)百度官方網(wǎng)首頁(yè)
  • 做商城網(wǎng)站公司seo刷關(guān)鍵詞排名軟件
  • 網(wǎng)站建設(shè)歷史友情鏈接推廣平臺(tái)
  • 個(gè)人網(wǎng)站做電影網(wǎng)站南京seo排名優(yōu)化公司
  • 可以做本地生活服務(wù)的有哪些網(wǎng)站營(yíng)銷(xiāo)型網(wǎng)站建設(shè)服務(wù)
  • 怎么登陸建設(shè)工程網(wǎng)站成都網(wǎng)站快速排名優(yōu)化
  • 零遁nas做網(wǎng)站百度開(kāi)放平臺(tái)登錄
  • 網(wǎng)絡(luò)咨詢網(wǎng)站如何做網(wǎng)絡(luò)營(yíng)銷(xiāo)?