成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

特性標記清理:GitHub Actions 來幫忙!

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

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

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

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

事實#1:特性標記可能會使事情變得更復雜。

現在,我們探討不同的用例和優勢。

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

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

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

事實#2:特性標記有助于減輕壓力并最小化發布功能時的風險。

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

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

事實#3:頻繁使用特性標記會導致技術債務。

我們如何有效地解決這個問題?一種解決方案是安排一個特定的日期,每月或每季度進行一次標記清理。但是,手動執行這項工作需要大量時間。

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

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

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

我們應該做的第一件事是將我們的代碼與特性標記管理系統同步。LaunchDarkly有一個很棒的功能叫做"Code References"。

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

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

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

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

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

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

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

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 }}

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

責任編輯:姜華 來源: 大遷世界
相關推薦

2022-12-21 08:20:01

2021-05-13 21:21:50

React應用GitHub

2021-03-26 08:41:11

Go語言Docker

2020-12-04 10:42:54

GithubSSDNode.js

2021-01-18 18:30:49

服務器開發工具

2021-10-03 14:47:26

Fedora CoreGitHub Acti運行器

2021-01-19 05:26:22

Github ActiJenkinsDevOps

2024-02-20 08:08:43

2019-11-26 08:00:00

GitHubGitHub ActiAzure

2024-01-24 18:50:21

WebFTP服務器

2021-04-20 09:36:49

黑客網絡安全網絡攻擊

2022-05-27 08:55:15

工具自動化軟件

2022-11-15 17:07:40

開發自動化前端

2021-01-15 08:52:09

GitHub GitHubActio博文發布

2024-10-14 13:22:15

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

2020-06-04 15:55:54

GitHub代碼開發者
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: h小视频| 久久精品久久久 | 福利影院在线看 | 91视频在线| 午夜免费看 | a级大片| 欧美久久一级特黄毛片 | 亚洲精品一区二区三区蜜桃久 | 天天干天天爱天天爽 | 在线欧美视频 | 欧美视频二区 | 日日夜夜天天干 | 欧美在线观看一区 | 日韩一区二区av | 成人小视频在线免费观看 | 日本在线精品视频 | 成人性生交大免费 | 99精品视频在线 | av喷水| 成人午夜 | 免费的黄色片子 | 中文字幕日韩欧美 | 亚洲三区视频 | 欧美精品一区在线发布 | 久操av在线 | 天天天操操操 | 国内自拍视频在线观看 | 成人高清视频在线观看 | 精品一区二区在线视频 | 欧美8一10sex性hd | 成人免费视频网站 | 超碰在线播 | 国产一区久久久 | 国产色片| 精品一区欧美 | 国产乱码精品一品二品 | 亚洲专区在线 | 国产在线精品一区二区 | 国产日韩一区 | 久久久久久久香蕉 | 欧美在线视频观看 |