自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

特性標(biāo)記清理:GitHub Actions 來幫忙!

開發(fā) 前端
從基本角度來看,特性標(biāo)記就是代碼中的附加條件。眾所周知,代碼中的條件經(jīng)常會引入復(fù)雜性。有許多設(shè)計模式和工具可以幫助降低代碼復(fù)雜性,使其更易于維護和更可靠。

在項目中使用特性標(biāo)記的原因、好處和用例是什么?

特性標(biāo)記是一種強大的軟件開發(fā)技術(shù),它允許在不需要重新部署應(yīng)用程序的情況下,動態(tài)控制功能和其他代碼的開啟或關(guān)閉,而且都是實時的。我們可以"暗暗地"推出新功能,只在必要時且當(dāng)我們完全準(zhǔn)備好時才使其可用。有人可能稱它們?yōu)?功能開關(guān)"(feature toggles),但我更喜歡叫"特性標(biāo)記"(feature flags)。

從基本角度來看,特性標(biāo)記就是代碼中的附加條件。眾所周知,代碼中的條件經(jīng)常會引入復(fù)雜性。有許多設(shè)計模式和工具可以幫助降低代碼復(fù)雜性,使其更易于維護和更可靠。

事實#1:特性標(biāo)記可能會使事情變得更復(fù)雜。

現(xiàn)在,我們探討不同的用例和優(yōu)勢。

首先,特性標(biāo)記對于主干開發(fā)(trunk-based development)來說是必不可少的。你不再需要維護長期存在的功能分支,開啟PR并將其合并到主分支。這幫助我們在開發(fā)中更快地部署和前進。

你還可以采用各種推出方式,比如金絲雀發(fā)布(僅為小比例用戶激活新功能)和A/B測試(為大量用戶群啟用該功能并將他們的行為與"對照"組進行比較),只需簡單點擊幾下即可。

特性標(biāo)記的另一個好處是所謂的目標(biāo)定位。你可以基于規(guī)則配置特性標(biāo)記的值,允許你設(shè)置默認值并為特定用戶或組織指定不同的值。

事實#2:特性標(biāo)記有助于減輕壓力并最小化發(fā)布功能時的風(fēng)險。

特性標(biāo)記不僅對軟件工程師有用。QA工程師、產(chǎn)品經(jīng)理和銷售經(jīng)理也能從中受益。特別是銷售經(jīng)理可以利用特性標(biāo)記向新客戶展示即將推出或早期發(fā)布的功能,從而加強他們在談判中的地位。

到目前為止,我們討論了特性標(biāo)記的比較重要的好處。然而,頻繁使用特性標(biāo)記會產(chǎn)生技術(shù)債。手動管理數(shù)十個特性標(biāo)記還算舒適,但當(dāng)涉及到數(shù)百個時就變成了噩夢。特別是當(dāng)人們開始將特性標(biāo)記管理系統(tǒng)用作配置存儲,或者當(dāng)特性標(biāo)記用于每個小的內(nèi)容更改時。

事實#3:頻繁使用特性標(biāo)記會導(dǎo)致技術(shù)債務(wù)。

我們?nèi)绾斡行У亟鉀Q這個問題?一種解決方案是安排一個特定的日期,每月或每季度進行一次標(biāo)記清理。但是,手動執(zhí)行這項工作需要大量時間。

處理特性標(biāo)記可能會令人沮喪。我工作過的每個項目都使用不同的管理系統(tǒng)。但通常是LaunchDarkly,因此我的用例將基于它。相信它可以與任何其他系統(tǒng)集成,因為方法才是關(guān)鍵。

首先,我們需要確定標(biāo)記是否過時并需要修改。在我的情況下,有兩種可能:

  • 標(biāo)記未被使用/從代碼中移除,但在系統(tǒng)中未被歸檔。
  • 如果標(biāo)記對所有客戶都啟用,并且沒有任何沖突規(guī)則。

我們應(yīng)該做的第一件事是將我們的代碼與特性標(biāo)記管理系統(tǒng)同步。LaunchDarkly有一個很棒的功能叫做"Code References"。

要激活它,你必須在主分支中執(zhí)行以下操作:

launchDarkly-code-references:
  name: Code References
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
      with:
        fetch-depth: 11 # 如果find-code-references的lookback配置選項未禁用,則必須設(shè)置此值。
    - name: LaunchDarkly Code References
      uses: launchdarkly/find-code-references@v2.11.8
      with:
        accessToken: ${{ secrets.ACCESS_TOKEN }}
        projKey: ${{ secrets.PROJECT_KEY }}

目的是在你的代碼中搜索特性標(biāo)記條目,并在LaunchDarkly中的代碼引用中顯示它們。

此外,我嘗試尋找一些可以用作過時特性標(biāo)記報告器的GitHub Action。雖然LaunchDarkly有自己的Slack集成,但它的"準(zhǔn)備刪除"標(biāo)記算法有點奇怪。它有時會返回甚至是永久性的特性標(biāo)記。

這就是為什么決定自己采取行動。很感激LaunchDarkly提供了詳細的REST API文檔,我發(fā)現(xiàn)它非常有用。

這個Action幫助識別符合規(guī)則文件中指定的刪除標(biāo)準(zhǔn)的特性標(biāo)記。它為特性標(biāo)記生成報告,允許用戶輕松地將其分享到指定的渠道(如Slack)或直接在控制臺中查看。此外,該Action提供特性標(biāo)記作為輸出,允許你根據(jù)需要自定義使用方式。

你可能想要指定在LaunchDarkly中定義的維護團隊。使用excluded tags來定義不應(yīng)報告的例外(特殊特性標(biāo)記)。

name: Feature Flags Ready For Removal
on:
  schedule:
    - cron: "00 11 * * 5"
  workflow_dispatch:

jobs:
  send-feature-flags-report:
    name: Feature Flags
    runs-on: ubuntu-latest
    steps:
      - name: 'Send Report'
        uses: rkhaslarov/launchdarkly-outdated-feature-flags-reporter-action@v1.0.0
        with:
          access-token: ${{ secrets.ACCESS_TOKEN }}
          project-key: ${{ secrets.PROJECT_KEY }}
          environment-key: ${{ secrets.LD_ENV }}
          maintainer-teams: 'team'
          threshold: 30
          report-type: 'slack'
          excluded-tags: 'MANUAL_REVIEW'
          slack-webhook: ${{ secrets.SLACK_WEBHOOK }}

我們已經(jīng)探索了特性標(biāo)記,理解了它們的使用方式及其復(fù)雜性。然后查看了簡化LaunchDarkly中特性標(biāo)記識別和清理的action。請幫我一個忙,在審查期間謹(jǐn)慎處理特性標(biāo)記,如果其他消費者沒有主動使用它們,請考慮刪除。

責(zé)任編輯:姜華 來源: 大遷世界
相關(guān)推薦

2022-12-21 08:20:01

2020-12-04 10:42:54

GithubSSDNode.js

2021-03-26 08:41:11

Go語言Docker

2021-05-13 21:21:50

React應(yīng)用GitHub

2021-01-18 18:30:49

服務(wù)器開發(fā)工具

2021-10-03 14:47:26

Fedora CoreGitHub Acti運行器

2024-02-20 08:08:43

2021-01-19 05:26:22

Github ActiJenkinsDevOps

2019-11-26 08:00:00

GitHubGitHub ActiAzure

2021-04-20 09:36:49

黑客網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2024-01-24 18:50:21

WebFTP服務(wù)器

2022-05-27 08:55:15

工具自動化軟件

2022-11-15 17:07:40

開發(fā)自動化前端

2024-10-14 13:22:15

2021-01-15 08:52:09

GitHub GitHubActio博文發(fā)布

2012-01-11 10:50:52

2010-05-10 15:12:21

路由器負載均衡

2023-08-04 08:52:52

Optional消滅空指針

2021-01-31 21:36:24

GitHub

2018-11-20 08:09:01

政務(wù)海量負載均衡
點贊
收藏

51CTO技術(shù)棧公眾號