中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

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

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

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

“為什么package.json 里的版本還是原來的,有沒有更新?”,這個時候我意識到,我們完全沒有必要在每次發(fā)布的時候還特意去關(guān)注這個倉庫的版本號,只要在發(fā)布打tag的時候同步一下即可

?

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

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

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

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

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

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

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

我們需要在倉庫根目錄增加如下路徑的文件?.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?}}

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

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

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

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

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

ps:正確來說應(yīng)該在發(fā)布執(zhí)行動作前prereleased執(zhí)行我們的 job 但是沒用這個的原因如下:

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)這個腳本推送后,執(zhí)行發(fā)布后自動更新版本,不用在關(guān)注這個版本修改問題。你會得到下面的效果。

在你的倉庫發(fā)布界面填寫正確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 語法取值導(dǎo)致的問題

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

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

?

?

所以這個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?這個步驟,在最后獲取這個版本更新產(chǎn)生的?$git_hash強(qiáng)制更新到發(fā)布的 tag 上。

我們看看效果

?

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

?

?

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

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

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

這樣我們就需要在Commit Changes之前再加一個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 腳本長這樣

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://www.risenshineclean.com/news/29234.html

相關(guān)文章:

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