Logo GH

GitHubアクション:リリースの自動化

(セクション: 技術とインフラ)

概要

GitHub Actionsは、リポジトリ内のネイティブの「pipeline as code」です。iGamingの場合、これらはバックエンド、フロントエンド、ETL/DBTおよびML/LLMサービスの高速かつ安全なリリースです。テストマトリックス、依存性キャッシュ、孤立したランナプール、統一された標準のための再利用可能なワークフロー、長寿命の秘密の代わりにOIDC BOM、タグによるリリースとマニフェストのGitOpsバンプ。鍵はp99とコストを管理するためのテンプレートと品質/セキュリティゲートです。

1)建築の原則

コードとしてパイプライン('。github/workflows/。yml')、再利用可能/複合アクションによるDRY。
ランナープール:ホスト(ubuntu-latest)+セルフホスト(K8s/VM、 ML用GPU)。
環境:必要なレビュアー、タイムアウト、および環境の秘密を持つ'dev/stage/prod'。
ポリシー:保護されたブランチ/タグ、CODEOWNERS、必須チェック。
Observability:ジョブの概要、アーティファクト、ログ、期間のメトリクス。

2)基本テンプレートCI→CD(バックエンド)

yaml name: ci-cd-backend on:
pull_request:
branches: [ main ]
push:
tags: [ "v" ]
permissions:
contents: read id-token: write    # для OIDC packages: write

env:
IMAGE: ghcr. io/${{ github. repository }}/api:${{ github. sha }}

jobs:
lint_test:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5 with: { python-version: '3. 12' }
- name: Cache pip uses: actions/cache@v4 with:
path: ~/.cache/pip key: pip-${{ runner. os }}-${{ hashFiles('requirements. txt') }}
- run: pip install -r requirements. txt
- run: make lint && make test
- name: Build & push image (BuildKit)
uses: docker/build-push-action@v6 with:
push: ${{ github. event_name == 'push' }}
tags: ${{ env. IMAGE }}
cache-from: type=gha cache-to: type=gha,mode=max

security:
needs: [ lint_test ]
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: SCA/SAST/Secrets uses: your-org/security-composite@v3  # Composite Action вашей орг.

release_prod:
if: startsWith(github. ref, 'refs/tags/v')
needs: [ security ]
runs-on: ubuntu-latest environment: production steps:
- uses: actions/checkout@v4
- name: SBOM & Sign uses: your-org/sbom-sign-action@v2 with:
image: ${{ env. IMAGE }}
- name: GitOps bump manifests uses: your-org/gitops-bump@v2 with:
image: ${{ env. IMAGE }}
path: apps/api/values. yaml

アイデア:PR→lint/units→security→by tag 'v'-展開のためのSBOM/signatureとGitOps-bump manifestos。

3)再使用: 再使用可能な/合成物

再利用可能なワークフロー:すべてのサービス用の単一のパイプラインテンプレート(別々のリポジトリ'。github')。
複合アクション:繰り返しステップ(lint/units/scans)を接着します。

再利用可能な呼び出しの例:
yaml jobs:
ci_template:
uses: your-org/ci-templates/.github/workflows/python. yml@v3 with:
python: '3. 12'
run-tests: true

4)マトリックス、キャッシュ、パフォーマンス

'strategy。並列テストのためのmatrix '(言語/DB/OS)。
キャッシュ:依存関係の'actions/cache';BuildKit-'cache-to: gha';依存関係プロキシ。
競争力:'concurrency: group: api-${{github。ref}}、 cancel-in-progress: true'-分を保存します。
アーティファクト:'retention-days'でレポート/カバレッジ/プロファイルを保存します。

行列の例:
yaml strategy:
matrix:
py: [ '3. 10', '3. 12' ]
db: [ 'mysql', 'postgres' ]

5)環境の承認

'production'(マニュアルゲート)に必要なレビュアーを設定します。
環境の秘密:デプロイトークン、署名キー、スタンドのURL。
コストコントロールの環境寿命(自動期限切れ)をプレビューします。

6)雲へのOIDCのアクセス(長命の秘密なしで)

「id-token: write」を有効にし、クラウドでトラストポリシーを設定し、一時クレジットを使用します。
AWS/Azure/GCP/artifact-registers/secret-managersに適用可能です。
最小特権の原則:'dev/stage/prod'上の個々の役割。

例ステップ(コンセプト):
yaml
- name: Assume cloud role via OIDC uses: your-org/oidc-assume@v1 with:
role: arn:aws:iam::123:role/gha-deploy-prod

7)リリース、タグ、アーティファクト

タグ別のリリース:changelog、リリースアセット、パブリッシングイメージ/パッケージ。
Immunity: 「forward only」タグ、コンテナ/チャート署名。
SBOM (CycloneDX/SPDX)+署名(cosign/sigstore)-符号なしゲート-展開なし。

8) GitOpsプログレッシブデリバリー

CDは"from Actions'ではなく、PR/コミットを通じてレポ・マニフェスト(Argo CD/Flux)に変換されます。
カナリア/ブルーグリーン:重量/バージョンGitOpsバンプステップ;SLOメトリックの自動プロモーション。

GitOpsバンプ(アイデア)の例:
yaml
- uses: mikefarah/yq@v4 with:
cmd: yq -i '.image = strenv(IMAGE)' apps/api/values. yaml
- run:
git config user. name "gha-bot"
git commit -am "bump api -> $IMAGE" && git push

9)パイプラインおよびサプライチェーンの保証

誰が実行することができます:必要なチェックで、保護されたブランチ/タグからのみ。
スキャン:SAST/SCA/Secret-scan、プレビュー環境でのDAST。
署名:画像、ヘルムチャート、バイナリ;枯渇中の検証。
政治家:信頼できるワークフローからのみ派遣します。サードパーティのアクションのSHAピン。

10)観察可能性、SLOおよびChatOps

概要レポート(JUnit/coverage/scans)、 PRのステータス。
メトリクス:ステージ期間、成功/失敗、ランナキュー。
ChatOps: PRのボットコメント(ダッシュボードへのリンク、プレビューURL)、コマンド'/promote'、'/rollback'、 'workflow_dispatch'。

11) FinOps(分および資源の費用)

PRの同時キャンセル、変更された部品のみの行列(paths-filter)。
アーティファクトの衛生:'retention-days'、自動クローズプレビューenv。
重いアセンブリ/ML、夜の「静かな時間」のための自己ホストされたプール。
依存関係キャッシュとBuildKit GHAキャッシュは大幅な節約です。

12)モノレポと親子オーケストレーション

フォルダー/パスのトリガー:コンポーネントごとに独立したワークフロー。
チーム間の標準化レイヤーとして再利用可能(Payments/Risk/CRM/ETL/ML)。
コンポーネントによる秘密/環境の分離。

13) iGamingのためのテンプレート

A) バックエンド/API (Go/Node/Python)

yaml name: backend on: [ pull_request, push ]
jobs:
ci:
uses: your-org/ci-templates/.github/workflows/backend. yml@v3 release:
if: startsWith(github. ref, 'refs/tags/v')
uses: your-org/ci-templates/.github/workflows/release. yml@v3 secrets: inherit

ETL/DBT

yaml name: etl-dbt on: [ pull_request ]
jobs:
dbt:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5 with: { python-version: '3. 11' }
- run: pip install dbt-core dbt-bigquery
- run: dbt deps && dbt run && dbt test
- name: Publish docs run: dbt docs generate && tar czf docs. tgz target/
load artifact, retention period 3 days uses: actions/upload-artifact @ v4 with: {name: dbt-docs, path: docs. tgz, retention-days: 3 }

B) ML/LLM(推論アーティファクト)

yaml name: ml-pack on:
push:
tags: [ "model-" ]
jobs:
build-engine:
runs-on: self-hosted-gpu steps:
- uses: actions/checkout@v4
- run: python export_onnx. py
- run: trtexec --onnx=model. onnx --saveEngine=model. plan
- uses: actions/upload-artifact@v4 with: { name: engine, path: model. plan, retention-days: 7 }
- name: Sign & SBOM uses: your-org/sbom-sign-action@v2 with: { file: model. plan }

14)実装チェックリスト

1.CI/CD(再利用可能/複合)テンプレートを定義し、すべてのリポジトリに適用します。
2.承認と分割秘密を持つ環境を含める。
3.クラウド/シークレットマネージャにOIDCに移動し、耐久性のあるキーを削除します。
4.SAST/SCA/Secrets/DAST、 SBOM、アーティファクト署名を入力します。重大な脆弱性ゲート。
5.GitOpsを構成する:manifest-repo、 auto-bumps images/version、 canary/blue-green。
6.キャッシュ/行列、'並行性を最適化します。cancel-in-progress'、アーティファクトをクリアします。
7.自己ホスト型ランナー(GPUを含む)を限界と分離して展開します。
8.paths-filterとrule-settingsを有効にして、余分なジャブを駆動しないようにします。
9.Add ChatOps:ステータス/コマンド;PRのレポート。
10.Actions secure use policy (pin SHA、 restrict external)を修正しました。

15) Antipatterns

Reusable/Composite→out of sync標準の代わりに、すべてのリポジトリで同じ手順を実行します。
OIDCの代わりに変数で長寿命のクラウド秘密。

環境の欠如/承認

圧縮されていないバージョンのサードパーティのアクション→サプライチェーンリスク。
SBOM/署名なし→CDの検証なし。
常に実行する大規模な行列→コストが増加します。
変更を追跡するGitOpsなしで直接アクションから本番へのCD。

概要

GitHub Actionsを使用すると、単一の、安全で再現性のあるリリースのパイプラインを構築できます。再利用可能/複合でパイプラインを標準化し、OIDCと環境を承認で使用し、SBOM/署名を実装し、プログレッシブな配信でCDをGitOpsに転送します競争力。このアプローチは、iGaming製品のペースに合わせ、品質を維持し、運用上のリスクを低減します。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

Telegram
@Gamble_GC
統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。