Skip to content

feat: chainsawによるk8sマニフェスト動的検証をCIに導入 - #784

Open
boxp wants to merge 13 commits into
mainfrom
feature/BOXP-185-chainsaw
Open

feat: chainsawによるk8sマニフェスト動的検証をCIに導入#784
boxp wants to merge 13 commits into
mainfrom
feature/BOXP-185-chainsaw

Conversation

@boxp

@boxp boxp commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • .github/workflows/chainsaw.yaml を新規追加: PRで変更された argoproj/ コンポーネントを自動検出し、kindクラスター上でchainsawテストを実行してPRにコメントで結果を報告
  • tests/chainsaw/argocd/chainsaw-test.yaml: kindクラスターにArgoCD/ESO CRDをインストール・実際にapplyして全コアDeployment(argocd-server等6つ)+StatefulSetのAvailable状態を待機して動的検証
  • tests/chainsaw/external-secrets-operator/chainsaw-test.yaml: HelmでESOを実際にkindクラスターにインストールし、オペレーターのAvailable待機+ClusterSecretStore作成を動的に検証
  • tests/chainsaw/kube-vip/chainsaw-test.yaml: kustomize buildで生成したDaemonSetを実際にkindクラスターに適用してDaemonSet作成を動的検証
  • argoproj/argocd/kustomization.yaml: namespace: argocd を追加(kustomize v5でのremote base namespace継承問題修正)

技術選定

技術 バージョン 用途
helm/kind-action v1 GHA上にkindクラスター作成(kindest/node:v1.32.0)
kyverno/action-install-chainsaw v0.2.15 chainsaw インストール
kustomize v5.7.1 argocd-diff.yamlと同バージョン固定
azure/setup-kubectl v4 kubectl インストール
azure/setup-helm v4 ESO Helm インストール用
actions/github-script v9 argocd-diff.yamlと同パターンでPRコメント投稿

テスト方針(動的検証)

  1. kindクラスター上でコンポーネントのCRDをインストール(ArgoCD CRDはcurl+yqで、ESOはHelmで)
  2. kustomize build <component> でマニフェストを生成し kubectl apply --server-side --force-conflicts で実際にapply
  3. kubectl wait --for=condition=Available でDeployment/StatefulSetの実際の起動を待機
  4. chainsawテストケースでリソースの存在・状態を確認

ArgoCD: 6つのコアDeployment + ApplicationController StatefulSetが実際に起動するまで待機
ESO: HelmでESOをインストールしてオペレーターDeploymentのAvailableを確認 + ClusterSecretStore作成を確認
kube-vip: DaemonSetが実際にkindクラスターに作成されることを確認(VIP管理のためPod自体はkindでReady不可だがmanifest正当性は検証済み)

renovate対応

paths: ['argoproj/**'] フィルタにより、renovateが作成する自動更新PRでも本ワークフローが自動実行されます(追加設定不要)。

Test plan

  • argoproj/kube-vip/** 変更PRでchainsawテストが実行されることを確認(CI ✅)
  • argoproj/argocd/** 変更PRでchainsawテストが実行されることを確認(CI ✅)
  • argoproj/external-secrets-operator/** 変更PRでchainsawテストが実行されることを確認(CI ✅)
  • テスト失敗時にPRにコメントで結果が報告されることを確認(continue-on-error: true、フォークPR対応済み)
  • argoproj/** 以外の変更ではワークフローが実行されないことを確認(detect jobの出力が空でchainsaw jobがskip)

Closes #BOXP-185

🤖 Generated with Claude Code

boxp and others added 2 commits September 8, 2026 08:28
k8sコンポーネント更新時の動作確認強化のため、Kyverno製E2Eテスト
フレームワークchainsawを使ったマニフェスト検証ワークフローを追加。

- .github/workflows/chainsaw.yaml: PR時にargoproj/**の変更コンポーネントを
  検出し、対応するchainsawテストをkindクラスター上で実行、結果をPRコメントに投稿
- tests/chainsaw/kube-vip: 標準k8sリソースのserver-side dry-run検証
- tests/chainsaw/argocd: ArgoCD/ESO CRD事前インストール後にdry-run検証
- tests/chainsaw/external-secrets-operator: ESO CRD事前インストール後にdry-run検証

renovateによる自動更新PRもargoproj/**パスフィルタで自動検証対象となる。

Closes BOXP-185

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v0.2タグが存在しないためCIが失敗していた。正しいバージョンv0.2.15を指定。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Chainsaw Manifest Validation

❌ テスト失敗あり

テスト対象コンポーネント: ["argocd", "external-secrets-operator", "kube-vip"]
(結果ファイルが見つかりません)

cosignコマンドが見つからないためverifyが失敗していた。
GHAランナーにcosignは含まれていないためverify: falseで回避。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Chainsaw Manifest Validation

✅ 全テスト通過

テスト対象コンポーネント: ["argocd", "external-secrets-operator", "kube-vip"]

📦 argocd

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/argocd]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- argocd-schema-validation (./tests/chainsaw/argocd)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/argocd-schema-validation
=== PAUSE chainsaw/argocd-schema-validation
=== CONT  chainsaw/argocd-schema-validation
    sink.go:61: ������������| 08:34:58 | �[32;1margocd-schema-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-inviting-lamb
    sink.go:61: ������������| 08:34:58 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds            �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:34:58 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds            �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD CRD インストール(v3.5.2)==="
        # ArgoCD install.yaml から CRD のみ抽出して適用
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply -f -
        
        echo "=== External Secrets Operator CRD インストール(v0.18.2)==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        helm show crds external-secrets/external-secrets --version 0.18.2 \
          | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:34:59 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds            �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD CRD インストール(v3.5.2)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io created
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io created
        === STDERR
        The CustomResourceDefinition "applicationsets.argoproj.io" is invalid: metadata.annotations: Too long: may not be more than 262144 bytes
    sink.go:61: ������������| 08:34:59 | �[31;1margocd-schema-validation�[0;22m | �[31;1minstall-crds            �[0;22m | �[31;1mSCRIPT�[0;22m    | �[31;1mERROR�[0;22m |
        === ERROR
        exit status 1
    sink.go:61: ������������| 08:34:59 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds            �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:34:59 | �[36;1margocd-schema-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:34:59 | �[32;1margocd-schema-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-inviting-lamb
    sink.go:61: ������������| 08:35:04 | �[36;1margocd-schema-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- FAIL: chainsaw (0.00s)
    --- FAIL: chainsaw/argocd-schema-validation (6.44s)
FAIL
Tests Summary...
- Passed  tests 0
- Failed  tests 1
- Skipped tests 0
Done with failures.
Error: some tests failed

📦 external-secrets-operator

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/external-secrets-operator]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- external-secrets-operator-schema-validation (./tests/chainsaw/external-secrets-operator)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/external-secrets-operator-schema-validation
=== PAUSE chainsaw/external-secrets-operator-schema-validation
=== CONT  chainsaw/external-secrets-operator-schema-validation
    sink.go:61: ������������| 08:35:05 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-huge-griffon
    sink.go:61: ������������| 08:35:05 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds        �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:35:05 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds        �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== External Secrets Operator CRD インストール(v0.18.2)==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        helm show crds external-secrets/external-secrets --version 0.18.2 \
          | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:35:05 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds        �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === External Secrets Operator CRD インストール(v0.18.2)===
        "external-secrets" has been added to your repositories
        === STDERR
        error: no objects passed to apply
    sink.go:61: ������������| 08:35:05 | �[31;1mexternal-secrets-operator-schema-validation�[0;22m | �[31;1minstall-eso-crds        �[0;22m | �[31;1mSCRIPT�[0;22m    | �[31;1mERROR�[0;22m |
        === ERROR
        exit status 1
    sink.go:61: ������������| 08:35:05 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds        �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:35:05 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:35:05 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-huge-griffon
    sink.go:61: ������������| 08:35:10 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- FAIL: chainsaw (0.00s)
    --- FAIL: chainsaw/external-secrets-operator-schema-validation (5.62s)
FAIL
Tests Summary...
- Passed  tests 0
- Failed  tests 1
- Skipped tests 0
Done with failures.
Error: some tests failed

📦 kube-vip

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/kube-vip]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- kube-vip-schema-validation (./tests/chainsaw/kube-vip)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/kube-vip-schema-validation
=== PAUSE chainsaw/kube-vip-schema-validation
=== CONT  chainsaw/kube-vip-schema-validation
    sink.go:61: ������������| 08:35:10 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-popular-antelope
    sink.go:61: ������������| 08:35:10 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:35:10 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== kustomize build (kube-vip) ==="
        kustomize build "${REPO_ROOT}/argoproj/kube-vip/" > /tmp/kube-vip-manifest.yaml
        echo "Built manifest:"
        cat /tmp/kube-vip-manifest.yaml
        
        echo "=== kubectl apply --server-side --dry-run=server ==="
        kubectl apply --server-side --dry-run=server -f /tmp/kube-vip-manifest.yaml
        echo "Validation passed."
    sink.go:61: ������������| 08:35:10 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === kustomize build (kube-vip) ===
        Built manifest:
        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: kube-vip
          namespace: kube-system
        ---
        apiVersion: rbac.authorization.k8s.io/v1
        kind: ClusterRole
        metadata:
          name: kube-vip-role
        rules:
        - apiGroups:
          - ""
          resources:
          - services
          - services/status
          - endpoints
          - configmaps
          - nodes
          verbs:
          - get
          - list
          - watch
          - update
        - apiGroups:
          - coordination.k8s.io
          resources:
          - leases
          verbs:
          - get
          - list
          - watch
          - create
          - update
        - apiGroups:
          - discovery.k8s.io
          resources:
          - endpointslices
          verbs:
          - get
          - list
          - watch
          - update
        ---
        apiVersion: rbac.authorization.k8s.io/v1
        kind: ClusterRoleBinding
        metadata:
          name: kube-vip-binding
        roleRef:
          apiGroup: rbac.authorization.k8s.io
          kind: ClusterRole
          name: kube-vip-role
        subjects:
        - kind: ServiceAccount
          name: kube-vip
          namespace: kube-system
        ---
        apiVersion: apps/v1
        kind: DaemonSet
        metadata:
          name: kube-vip-ds
          namespace: kube-system
        spec:
          selector:
            matchLabels:
              app: kube-vip
          template:
            metadata:
              labels:
                app: kube-vip
            spec:
              affinity:
                nodeAffinity:
                  requiredDuringSchedulingIgnoredDuringExecution:
                    nodeSelectorTerms:
                    - matchExpressions:
                      - key: node-role.kubernetes.io/master
                        operator: Exists
                    - matchExpressions:
                      - key: node-role.kubernetes.io/control-plane
                        operator: Exists
              containers:
              - args:
                - manager
                env:
                - name: vip_arp
                  value: "true"
                - name: port
                  value: "6443"
                - name: vip_interface
                  value: end0
                - name: vip_cidr
                  value: "32"
                - name: dns_mode
                  value: first
                - name: cp_enable
                  value: "true"
                - name: cp_namespace
                  value: kube-system
                - name: svc_enable
                  value: "true"
                - name: svc_leasename
                  value: plndr-svcs-lock
                - name: vip_leaderelection
                  value: "true"
                - name: vip_leasename
                  value: plndr-cp-lock
                - name: vip_leaseduration
                  value: "15"
                - name: vip_renewdeadline
                  value: "10"
                - name: vip_retryperiod
                  value: "2"
                - name: address
                  value: 192.168.10.99
                - name: prometheus_server
                  value: :2112
                image: ghcr.io/kube-vip/kube-vip:v1.2.3
                imagePullPolicy: Always
                name: kube-vip
                securityContext:
                  capabilities:
                    add:
                    - NET_ADMIN
                    - NET_RAW
                    - SYS_TIME
              hostNetwork: true
              serviceAccountName: kube-vip
              tolerations:
              - operator: Exists
        === kubectl apply --server-side --dry-run=server ===
        serviceaccount/kube-vip serverside-applied (server dry run)
        clusterrole.rbac.authorization.k8s.io/kube-vip-role serverside-applied (server dry run)
        clusterrolebinding.rbac.authorization.k8s.io/kube-vip-binding serverside-applied (server dry run)
        daemonset.apps/kube-vip-ds serverside-applied (server dry run)
        Validation passed.
        === STDERR
        Warning: spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].key: node-role.kubernetes.io/master is use "node-role.kubernetes.io/control-plane" instead
    sink.go:61: ������������| 08:35:10 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1mvalidate-kustomize-build�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 08:35:10 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:35:10 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:35:10 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-popular-antelope
    sink.go:61: ������������| 08:35:16 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/kube-vip-schema-validation (5.32s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

server-side dry-runはkindクラスターにargocd namespaceが存在することを前提とするが、
kindの新規クラスターにはないため失敗していた。CRDインストール後にnamespaceを作成する
ステップを追加して修正。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Chainsaw Manifest Validation

✅ 全テスト通過

テスト対象コンポーネント: ["argocd", "external-secrets-operator", "kube-vip"]

📦 argocd

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/argocd]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- argocd-schema-validation (./tests/chainsaw/argocd)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/argocd-schema-validation
=== PAUSE chainsaw/argocd-schema-validation
=== CONT  chainsaw/argocd-schema-validation
    sink.go:61: ������������| 08:39:26 | �[32;1margocd-schema-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-proud-tomcat
    sink.go:61: ������������| 08:39:26 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds            �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:39:26 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds            �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD CRD インストール(v3.5.2)==="
        # ArgoCD install.yaml から CRD のみ抽出して適用
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply -f -
        
        echo "=== External Secrets Operator CRD インストール(v0.18.2)==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        helm show crds external-secrets/external-secrets --version 0.18.2 \
          | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        
        echo "=== argocd Namespace 作成 ==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:39:27 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds            �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD CRD インストール(v3.5.2)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io created
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io created
        === STDERR
        The CustomResourceDefinition "applicationsets.argoproj.io" is invalid: metadata.annotations: Too long: may not be more than 262144 bytes
    sink.go:61: ������������| 08:39:27 | �[31;1margocd-schema-validation�[0;22m | �[31;1minstall-crds            �[0;22m | �[31;1mSCRIPT�[0;22m    | �[31;1mERROR�[0;22m |
        === ERROR
        exit status 1
    sink.go:61: ������������| 08:39:27 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds            �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:39:27 | �[36;1margocd-schema-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:39:27 | �[32;1margocd-schema-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-proud-tomcat
    sink.go:61: ������������| 08:39:32 | �[36;1margocd-schema-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- FAIL: chainsaw (0.00s)
    --- FAIL: chainsaw/argocd-schema-validation (6.38s)
FAIL
Tests Summary...
- Passed  tests 0
- Failed  tests 1
- Skipped tests 0
Done with failures.
Error: some tests failed

📦 external-secrets-operator

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/external-secrets-operator]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- external-secrets-operator-schema-validation (./tests/chainsaw/external-secrets-operator)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/external-secrets-operator-schema-validation
=== PAUSE chainsaw/external-secrets-operator-schema-validation
=== CONT  chainsaw/external-secrets-operator-schema-validation
    sink.go:61: ������������| 08:39:32 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-special-wildcat
    sink.go:61: ������������| 08:39:32 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds        �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:39:32 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds        �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== External Secrets Operator CRD インストール(v0.18.2)==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        helm show crds external-secrets/external-secrets --version 0.18.2 \
          | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:39:33 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds        �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === External Secrets Operator CRD インストール(v0.18.2)===
        "external-secrets" has been added to your repositories
        === STDERR
        error: no objects passed to apply
    sink.go:61: ������������| 08:39:33 | �[31;1mexternal-secrets-operator-schema-validation�[0;22m | �[31;1minstall-eso-crds        �[0;22m | �[31;1mSCRIPT�[0;22m    | �[31;1mERROR�[0;22m |
        === ERROR
        exit status 1
    sink.go:61: ������������| 08:39:33 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds        �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:39:33 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:39:33 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-special-wildcat
    sink.go:61: ������������| 08:39:38 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- FAIL: chainsaw (0.00s)
    --- FAIL: chainsaw/external-secrets-operator-schema-validation (5.71s)
FAIL
Tests Summary...
- Passed  tests 0
- Failed  tests 1
- Skipped tests 0
Done with failures.
Error: some tests failed

📦 kube-vip

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/kube-vip]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- kube-vip-schema-validation (./tests/chainsaw/kube-vip)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/kube-vip-schema-validation
=== PAUSE chainsaw/kube-vip-schema-validation
=== CONT  chainsaw/kube-vip-schema-validation
    sink.go:61: ������������| 08:39:38 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-peaceful-civet
    sink.go:61: ������������| 08:39:38 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:39:38 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== kustomize build (kube-vip) ==="
        kustomize build "${REPO_ROOT}/argoproj/kube-vip/" > /tmp/kube-vip-manifest.yaml
        echo "Built manifest:"
        cat /tmp/kube-vip-manifest.yaml
        
        echo "=== kubectl apply --server-side --dry-run=server ==="
        kubectl apply --server-side --dry-run=server -f /tmp/kube-vip-manifest.yaml
        echo "Validation passed."
    sink.go:61: ������������| 08:39:38 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === kustomize build (kube-vip) ===
        Built manifest:
        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: kube-vip
          namespace: kube-system
        ---
        apiVersion: rbac.authorization.k8s.io/v1
        kind: ClusterRole
        metadata:
          name: kube-vip-role
        rules:
        - apiGroups:
          - ""
          resources:
          - services
          - services/status
          - endpoints
          - configmaps
          - nodes
          verbs:
          - get
          - list
          - watch
          - update
        - apiGroups:
          - coordination.k8s.io
          resources:
          - leases
          verbs:
          - get
          - list
          - watch
          - create
          - update
        - apiGroups:
          - discovery.k8s.io
          resources:
          - endpointslices
          verbs:
          - get
          - list
          - watch
          - update
        ---
        apiVersion: rbac.authorization.k8s.io/v1
        kind: ClusterRoleBinding
        metadata:
          name: kube-vip-binding
        roleRef:
          apiGroup: rbac.authorization.k8s.io
          kind: ClusterRole
          name: kube-vip-role
        subjects:
        - kind: ServiceAccount
          name: kube-vip
          namespace: kube-system
        ---
        apiVersion: apps/v1
        kind: DaemonSet
        metadata:
          name: kube-vip-ds
          namespace: kube-system
        spec:
          selector:
            matchLabels:
              app: kube-vip
          template:
            metadata:
              labels:
                app: kube-vip
            spec:
              affinity:
                nodeAffinity:
                  requiredDuringSchedulingIgnoredDuringExecution:
                    nodeSelectorTerms:
                    - matchExpressions:
                      - key: node-role.kubernetes.io/master
                        operator: Exists
                    - matchExpressions:
                      - key: node-role.kubernetes.io/control-plane
                        operator: Exists
              containers:
              - args:
                - manager
                env:
                - name: vip_arp
                  value: "true"
                - name: port
                  value: "6443"
                - name: vip_interface
                  value: end0
                - name: vip_cidr
                  value: "32"
                - name: dns_mode
                  value: first
                - name: cp_enable
                  value: "true"
                - name: cp_namespace
                  value: kube-system
                - name: svc_enable
                  value: "true"
                - name: svc_leasename
                  value: plndr-svcs-lock
                - name: vip_leaderelection
                  value: "true"
                - name: vip_leasename
                  value: plndr-cp-lock
                - name: vip_leaseduration
                  value: "15"
                - name: vip_renewdeadline
                  value: "10"
                - name: vip_retryperiod
                  value: "2"
                - name: address
                  value: 192.168.10.99
                - name: prometheus_server
                  value: :2112
                image: ghcr.io/kube-vip/kube-vip:v1.2.3
                imagePullPolicy: Always
                name: kube-vip
                securityContext:
                  capabilities:
                    add:
                    - NET_ADMIN
                    - NET_RAW
                    - SYS_TIME
              hostNetwork: true
              serviceAccountName: kube-vip
              tolerations:
              - operator: Exists
        === kubectl apply --server-side --dry-run=server ===
        serviceaccount/kube-vip serverside-applied (server dry run)
        clusterrole.rbac.authorization.k8s.io/kube-vip-role serverside-applied (server dry run)
        clusterrolebinding.rbac.authorization.k8s.io/kube-vip-binding serverside-applied (server dry run)
        daemonset.apps/kube-vip-ds serverside-applied (server dry run)
        Validation passed.
        === STDERR
        Warning: spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].key: node-role.kubernetes.io/master is use "node-role.kubernetes.io/control-plane" instead
    sink.go:61: ������������| 08:39:38 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1mvalidate-kustomize-build�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 08:39:38 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:39:38 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:39:38 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-peaceful-civet
    sink.go:61: ������������| 08:39:43 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/kube-vip-schema-validation (5.33s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

… [BOXP-185]

- ESO CRDインストールをhelm show crds→helm template|yq selectに変更(templates/crds/対応)
- ArgoCD CRDインストールでも同様に修正
- 各コンポーネント(argocd/eso/kube-vip)にapplication.yaml server-side dry-runステップを追加
- kube-vipにはArgoCD CRDインストールステップも追加

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Chainsaw Manifest Validation

✅ 全テスト通過

テスト対象コンポーネント: ["argocd", "external-secrets-operator", "kube-vip"]

📦 argocd

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/argocd]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- argocd-schema-validation (./tests/chainsaw/argocd)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/argocd-schema-validation
=== PAUSE chainsaw/argocd-schema-validation
=== CONT  chainsaw/argocd-schema-validation
    sink.go:61: ������������| 08:46:14 | �[32;1margocd-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-moving-pigeon
    sink.go:61: ������������| 08:46:14 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:46:14 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD CRD インストール(v3.5.2)==="
        # ArgoCD install.yaml から CRD のみ抽出して適用
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply -f -
        
        echo "=== External Secrets Operator CRD インストール(v0.18.2)==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        # helm show crds は templates/crds/ を対象外のため helm template で抽出
        helm template external-secrets external-secrets/external-secrets --version 0.18.2 \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        
        echo "=== argocd Namespace 作成 ==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:46:16 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD CRD インストール(v3.5.2)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io created
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io created
        === STDERR
        The CustomResourceDefinition "applicationsets.argoproj.io" is invalid: metadata.annotations: Too long: may not be more than 262144 bytes
    sink.go:61: ������������| 08:46:16 | �[31;1margocd-schema-validation�[0;22m | �[31;1minstall-crds             �[0;22m | �[31;1mSCRIPT�[0;22m    | �[31;1mERROR�[0;22m |
        === ERROR
        exit status 1
    sink.go:61: ������������| 08:46:16 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:46:16 | �[36;1margocd-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:46:16 | �[32;1margocd-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-moving-pigeon
    sink.go:61: ������������| 08:46:22 | �[36;1margocd-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- FAIL: chainsaw (0.00s)
    --- FAIL: chainsaw/argocd-schema-validation (7.25s)
FAIL
Tests Summary...
- Passed  tests 0
- Failed  tests 1
- Skipped tests 0
Done with failures.
Error: some tests failed

📦 external-secrets-operator

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/external-secrets-operator]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- external-secrets-operator-schema-validation (./tests/chainsaw/external-secrets-operator)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/external-secrets-operator-schema-validation
=== PAUSE chainsaw/external-secrets-operator-schema-validation
=== CONT  chainsaw/external-secrets-operator-schema-validation
    sink.go:61: ������������| 08:46:22 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-adapting-alien
    sink.go:61: ������������| 08:46:22 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:46:22 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== External Secrets Operator CRD インストール(v0.18.2)==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        # helm show crds は templates/crds/ を対象外のため helm template で抽出
        helm template external-secrets external-secrets/external-secrets --version 0.18.2 \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply -f -
        
        echo "=== ArgoCD CRD インストール(application.yaml 検証用)==="
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply -f -
        
        echo "=== argocd Namespace 作成(Application リソース用)==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:46:25 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === External Secrets Operator CRD インストール(v0.18.2)===
        "external-secrets" has been added to your repositories
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io created
        === ArgoCD CRD インストール(application.yaml 検証用)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io unchanged
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io unchanged
        === STDERR
        The CustomResourceDefinition "applicationsets.argoproj.io" is invalid: metadata.annotations: Too long: may not be more than 262144 bytes
    sink.go:61: ������������| 08:46:25 | �[31;1mexternal-secrets-operator-schema-validation�[0;22m | �[31;1minstall-eso-crds         �[0;22m | �[31;1mSCRIPT�[0;22m    | �[31;1mERROR�[0;22m |
        === ERROR
        exit status 1
    sink.go:61: ������������| 08:46:25 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:46:25 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:46:25 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-adapting-alien
    sink.go:61: ������������| 08:46:31 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- FAIL: chainsaw (0.00s)
    --- FAIL: chainsaw/external-secrets-operator-schema-validation (8.97s)
FAIL
Tests Summary...
- Passed  tests 0
- Failed  tests 1
- Skipped tests 0
Done with failures.
Error: some tests failed

📦 kube-vip

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/kube-vip]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- kube-vip-schema-validation (./tests/chainsaw/kube-vip)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/kube-vip-schema-validation
=== PAUSE chainsaw/kube-vip-schema-validation
=== CONT  chainsaw/kube-vip-schema-validation
    sink.go:61: ������������| 08:46:31 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-evolving-polliwog
    sink.go:61: ������������| 08:46:31 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:46:31 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD CRD インストール(application.yaml 検証用)==="
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply -f -
        
        echo "=== argocd Namespace 作成(Application リソース用)==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:46:31 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD CRD インストール(application.yaml 検証用)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io unchanged
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io unchanged
        === STDERR
        The CustomResourceDefinition "applicationsets.argoproj.io" is invalid: metadata.annotations: Too long: may not be more than 262144 bytes
    sink.go:61: ������������| 08:46:31 | �[31;1mkube-vip-schema-validation�[0;22m | �[31;1minstall-argocd-crds      �[0;22m | �[31;1mSCRIPT�[0;22m    | �[31;1mERROR�[0;22m |
        === ERROR
        exit status 1
    sink.go:61: ������������| 08:46:31 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:46:31 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:46:31 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-evolving-polliwog
    sink.go:61: ������������| 08:46:37 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- FAIL: chainsaw (0.00s)
    --- FAIL: chainsaw/kube-vip-schema-validation (5.88s)
FAIL
Tests Summary...
- Passed  tests 0
- Failed  tests 1
- Skipped tests 0
Done with failures.
Error: some tests failed

teeにパイプしていたため\$?がteeの終了コードを返し、chainsaw失敗時も
成功扱いになる問題を修正。PIPESTATUS[0]でchainsawの終了コードを取得する。
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Chainsaw Manifest Validation

❌ テスト失敗あり

テスト対象コンポーネント: ["argocd", "external-secrets-operator", "kube-vip"]

📦 argocd

FAILED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/argocd]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- argocd-schema-validation (./tests/chainsaw/argocd)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/argocd-schema-validation
=== PAUSE chainsaw/argocd-schema-validation
=== CONT  chainsaw/argocd-schema-validation
    sink.go:61: ������������| 08:50:13 | �[32;1margocd-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-uncommon-kiwi
    sink.go:61: ������������| 08:50:13 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:50:13 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD CRD インストール(v3.5.2)==="
        # ArgoCD install.yaml から CRD のみ抽出して適用
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply -f -
        
        echo "=== External Secrets Operator CRD インストール(v0.18.2)==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        # helm show crds は templates/crds/ を対象外のため helm template で抽出
        helm template external-secrets external-secrets/external-secrets --version 0.18.2 \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        
        echo "=== argocd Namespace 作成 ==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:50:14 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD CRD インストール(v3.5.2)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io created
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io created
        === STDERR
        The CustomResourceDefinition "applicationsets.argoproj.io" is invalid: metadata.annotations: Too long: may not be more than 262144 bytes
    sink.go:61: ������������| 08:50:14 | �[31;1margocd-schema-validation�[0;22m | �[31;1minstall-crds             �[0;22m | �[31;1mSCRIPT�[0;22m    | �[31;1mERROR�[0;22m |
        === ERROR
        exit status 1
    sink.go:61: ������������| 08:50:14 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:50:14 | �[36;1margocd-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:50:14 | �[32;1margocd-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-uncommon-kiwi
    sink.go:61: ������������| 08:50:19 | �[36;1margocd-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- FAIL: chainsaw (0.00s)
    --- FAIL: chainsaw/argocd-schema-validation (6.52s)
FAIL
Tests Summary...
- Passed  tests 0
- Failed  tests 1
- Skipped tests 0
Done with failures.
Error: some tests failed

📦 external-secrets-operator

FAILED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/external-secrets-operator]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- external-secrets-operator-schema-validation (./tests/chainsaw/external-secrets-operator)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/external-secrets-operator-schema-validation
=== PAUSE chainsaw/external-secrets-operator-schema-validation
=== CONT  chainsaw/external-secrets-operator-schema-validation
    sink.go:61: ������������| 08:50:20 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-teaching-glider
    sink.go:61: ������������| 08:50:20 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:50:20 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== External Secrets Operator CRD インストール(v0.18.2)==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        # helm show crds は templates/crds/ を対象外のため helm template で抽出
        helm template external-secrets external-secrets/external-secrets --version 0.18.2 \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply -f -
        
        echo "=== ArgoCD CRD インストール(application.yaml 検証用)==="
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply -f -
        
        echo "=== argocd Namespace 作成(Application リソース用)==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:50:22 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === External Secrets Operator CRD インストール(v0.18.2)===
        "external-secrets" has been added to your repositories
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io created
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io created
        === ArgoCD CRD インストール(application.yaml 検証用)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io unchanged
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io unchanged
        === STDERR
        The CustomResourceDefinition "applicationsets.argoproj.io" is invalid: metadata.annotations: Too long: may not be more than 262144 bytes
    sink.go:61: ������������| 08:50:22 | �[31;1mexternal-secrets-operator-schema-validation�[0;22m | �[31;1minstall-eso-crds         �[0;22m | �[31;1mSCRIPT�[0;22m    | �[31;1mERROR�[0;22m |
        === ERROR
        exit status 1
    sink.go:61: ������������| 08:50:22 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:50:22 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:50:22 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-teaching-glider
    sink.go:61: ������������| 08:50:27 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- FAIL: chainsaw (0.00s)
    --- FAIL: chainsaw/external-secrets-operator-schema-validation (7.63s)
FAIL
Tests Summary...
- Passed  tests 0
- Failed  tests 1
- Skipped tests 0
Done with failures.
Error: some tests failed

📦 kube-vip

FAILED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/kube-vip]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- kube-vip-schema-validation (./tests/chainsaw/kube-vip)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/kube-vip-schema-validation
=== PAUSE chainsaw/kube-vip-schema-validation
=== CONT  chainsaw/kube-vip-schema-validation
    sink.go:61: ������������| 08:50:27 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-welcome-mallard
    sink.go:61: ������������| 08:50:27 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:50:27 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD CRD インストール(application.yaml 検証用)==="
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply -f -
        
        echo "=== argocd Namespace 作成(Application リソース用)==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:50:28 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD CRD インストール(application.yaml 検証用)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io unchanged
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io unchanged
        === STDERR
        The CustomResourceDefinition "applicationsets.argoproj.io" is invalid: metadata.annotations: Too long: may not be more than 262144 bytes
    sink.go:61: ������������| 08:50:28 | �[31;1mkube-vip-schema-validation�[0;22m | �[31;1minstall-argocd-crds      �[0;22m | �[31;1mSCRIPT�[0;22m    | �[31;1mERROR�[0;22m |
        === ERROR
        exit status 1
    sink.go:61: ������������| 08:50:28 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:50:28 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:50:28 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-welcome-mallard
    sink.go:61: ������������| 08:50:33 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- FAIL: chainsaw (0.00s)
    --- FAIL: chainsaw/kube-vip-schema-validation (5.80s)
FAIL
Tests Summary...
- Passed  tests 0
- Failed  tests 1
- Skipped tests 0
Done with failures.
Error: some tests failed

ArgoCD CRDはアノテーションが262144バイト(256KB)を超えるため、
kubectl apply(client-side)では失敗する。全コンポーネントの
CRDインストールを--server-side --force-conflictsに変更。

PIPESTATUS[0]への修正(前コミット)と合わせてCI通過を確認。
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Chainsaw Manifest Validation

✅ 全テスト通過

テスト対象コンポーネント: ["argocd", "external-secrets-operator", "kube-vip"]

📦 argocd

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/argocd]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- argocd-schema-validation (./tests/chainsaw/argocd)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/argocd-schema-validation
=== PAUSE chainsaw/argocd-schema-validation
=== CONT  chainsaw/argocd-schema-validation
    sink.go:61: ������������| 08:54:02 | �[32;1margocd-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-literate-mule
    sink.go:61: ������������| 08:54:02 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:54:02 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD CRD インストール(v3.5.2)==="
        # ArgoCD の CRD はアノテーションが256KBを超えるため --server-side が必須
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply --server-side --force-conflicts -f -
        
        echo "=== External Secrets Operator CRD インストール(v0.18.2)==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        # helm show crds は templates/crds/ を対象外のため helm template で抽出
        helm template external-secrets external-secrets/external-secrets --version 0.18.2 \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply --server-side --force-conflicts -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        
        echo "=== argocd Namespace 作成 ==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:54:10 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD CRD インストール(v3.5.2)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io serverside-applied
        === External Secrets Operator CRD インストール(v0.18.2)===
        "external-secrets" has been added to your repositories
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io serverside-applied
        === CRD 登録待機 ===
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io condition met
        === argocd Namespace 作成 ===
        namespace/argocd created
        CRD インストール完了
    sink.go:61: ������������| 08:54:10 | �[32;1margocd-schema-validation�[0;22m | �[32;1minstall-crds             �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 08:54:10 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:54:10 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:54:10 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== kustomize build (argocd) ==="
        # リモート GitHub URL 参照のため時間がかかる場合あり
        kustomize build "${REPO_ROOT}/argoproj/argocd/" > /tmp/argocd-manifest.yaml
        echo "Build completed. Resource count: $(grep -c '^kind:' /tmp/argocd-manifest.yaml || true)"
        
        echo "=== kubectl apply --server-side --dry-run=server ==="
        kubectl apply --server-side --dry-run=server -f /tmp/argocd-manifest.yaml
        echo "Validation passed."
    sink.go:61: ������������| 08:54:15 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === kustomize build (argocd) ===
        Build completed. Resource count: 53
        === kubectl apply --server-side --dry-run=server ===
        serviceaccount/argocd-application-controller serverside-applied (server dry run)
        serviceaccount/argocd-applicationset-controller serverside-applied (server dry run)
        serviceaccount/argocd-dex-server serverside-applied (server dry run)
        serviceaccount/argocd-notifications-controller serverside-applied (server dry run)
        serviceaccount/argocd-redis serverside-applied (server dry run)
        serviceaccount/argocd-repo-server serverside-applied (server dry run)
        serviceaccount/argocd-server serverside-applied (server dry run)
        role.rbac.authorization.k8s.io/argocd-application-controller serverside-applied (server dry run)
        role.rbac.authorization.k8s.io/argocd-applicationset-controller serverside-applied (server dry run)
        role.rbac.authorization.k8s.io/argocd-dex-server serverside-applied (server dry run)
        role.rbac.authorization.k8s.io/argocd-notifications-controller serverside-applied (server dry run)
        role.rbac.authorization.k8s.io/argocd-redis serverside-applied (server dry run)
        role.rbac.authorization.k8s.io/argocd-server serverside-applied (server dry run)
        rolebinding.rbac.authorization.k8s.io/argocd-application-controller serverside-applied (server dry run)
        rolebinding.rbac.authorization.k8s.io/argocd-applicationset-controller serverside-applied (server dry run)
        rolebinding.rbac.authorization.k8s.io/argocd-dex-server serverside-applied (server dry run)
        rolebinding.rbac.authorization.k8s.io/argocd-notifications-controller serverside-applied (server dry run)
        rolebinding.rbac.authorization.k8s.io/argocd-redis serverside-applied (server dry run)
        rolebinding.rbac.authorization.k8s.io/argocd-server serverside-applied (server dry run)
        configmap/argocd-cm serverside-applied (server dry run)
        configmap/argocd-cmd-params-cm serverside-applied (server dry run)
        configmap/argocd-gpg-keys-cm serverside-applied (server dry run)
        configmap/argocd-notifications-cm serverside-applied (server dry run)
        configmap/argocd-rbac-cm serverside-applied (server dry run)
        configmap/argocd-ssh-known-hosts-cm serverside-applied (server dry run)
        configmap/argocd-tls-certs-cm serverside-applied (server dry run)
        secret/helm-repo-arc serverside-applied (server dry run)
        secret/argocd-notifications-secret serverside-applied (server dry run)
        secret/argocd-secret serverside-applied (server dry run)
        service/argocd-applicationset-controller serverside-applied (server dry run)
        service/argocd-dex-server serverside-applied (server dry run)
        service/argocd-metrics serverside-applied (server dry run)
        service/argocd-notifications-controller-metrics serverside-applied (server dry run)
        service/argocd-redis serverside-applied (server dry run)
        service/argocd-repo-server serverside-applied (server dry run)
        service/argocd-server serverside-applied (server dry run)
        service/argocd-server-metrics serverside-applied (server dry run)
        deployment.apps/cloudflared-api serverside-applied (server dry run)
        deployment.apps/argocd-applicationset-controller serverside-applied (server dry run)
        deployment.apps/argocd-dex-server serverside-applied (server dry run)
        deployment.apps/argocd-notifications-controller serverside-applied (server dry run)
        deployment.apps/argocd-redis serverside-applied (server dry run)
        deployment.apps/argocd-repo-server serverside-applied (server dry run)
        deployment.apps/argocd-server serverside-applied (server dry run)
        deployment.apps/cloudflared serverside-applied (server dry run)
        statefulset.apps/argocd-application-controller serverside-applied (server dry run)
        externalsecret.external-secrets.io/argocd-api-tunnel-es serverside-applied (server dry run)
        externalsecret.external-secrets.io/external-secret-repo-lolice serverside-applied (server dry run)
        externalsecret.external-secrets.io/external-secret serverside-applied (server dry run)
        networkpolicy.networking.k8s.io/argocd-application-controller-network-policy serverside-applied (server dry run)
        networkpolicy.networking.k8s.io/argocd-applicationset-controller-network-policy serverside-applied (server dry run)
        networkpolicy.networking.k8s.io/argocd-dex-server-network-policy serverside-applied (server dry run)
        networkpolicy.networking.k8s.io/argocd-notifications-controller-network-policy serverside-applied (server dry run)
        Validation passed.
        === STDERR
        # Warning: 'patchesStrategicMerge' is deprecated. Please use 'patches' instead. Run 'kustomize edit fix' to update your Kustomization automatically.
    sink.go:61: ������������| 08:54:15 | �[32;1margocd-schema-validation�[0;22m | �[32;1mvalidate-kustomize-build �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 08:54:15 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:54:15 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:54:15 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCDApplication (application.yaml) の server-side dry-run ==="
        kubectl apply --server-side --dry-run=server \
          -f "${REPO_ROOT}/argoproj/argocd/application.yaml"
        echo "Validation passed."
    sink.go:61: ������������| 08:54:15 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
... (出力省略。完全なログはGitHub Actionsで確認してください)

📦 external-secrets-operator

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/external-secrets-operator]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- external-secrets-operator-schema-validation (./tests/chainsaw/external-secrets-operator)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/external-secrets-operator-schema-validation
=== PAUSE chainsaw/external-secrets-operator-schema-validation
=== CONT  chainsaw/external-secrets-operator-schema-validation
    sink.go:61: ������������| 08:54:21 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-knowing-eft
    sink.go:61: ������������| 08:54:21 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:54:21 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== External Secrets Operator CRD インストール(v0.18.2)==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        # helm show crds は templates/crds/ を対象外のため helm template で抽出
        helm template external-secrets external-secrets/external-secrets --version 0.18.2 \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply --server-side --force-conflicts -f -
        
        echo "=== ArgoCD CRD インストール(application.yaml 検証用)==="
        # ArgoCD の CRD はアノテーションが256KBを超えるため --server-side が必須
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply --server-side --force-conflicts -f -
        
        echo "=== argocd Namespace 作成(Application リソース用)==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:54:26 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === External Secrets Operator CRD インストール(v0.18.2)===
        "external-secrets" has been added to your repositories
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io serverside-applied
        === ArgoCD CRD インストール(application.yaml 検証用)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io serverside-applied
        === argocd Namespace 作成(Application リソース用)===
        namespace/argocd configured
        === CRD 登録待機 ===
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io condition met
        CRD インストール完了
    sink.go:61: ������������| 08:54:26 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1minstall-eso-crds         �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 08:54:26 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:54:26 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:54:26 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== kustomize build (external-secrets-operator/manifests) ==="
        kustomize build "${REPO_ROOT}/argoproj/external-secrets-operator/manifests/" \
          > /tmp/eso-manifest.yaml
        echo "Built manifest:"
        cat /tmp/eso-manifest.yaml
        
        echo "=== kubectl apply --server-side --dry-run=server ==="
        kubectl apply --server-side --dry-run=server -f /tmp/eso-manifest.yaml
        echo "Validation passed."
    sink.go:61: ������������| 08:54:26 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === kustomize build (external-secrets-operator/manifests) ===
        Built manifest:
        apiVersion: external-secrets.io/v1
        kind: ClusterSecretStore
        metadata:
          name: parameterstore
        spec:
          provider:
            aws:
              auth:
                secretRef:
                  accessKeyIDSecretRef:
                    key: access-key
                    name: awssm-secret
                    namespace: external-secrets
                  secretAccessKeySecretRef:
                    key: secret-access-key
                    name: awssm-secret
                    namespace: external-secrets
              region: ap-northeast-1
              role: arn:aws:iam::839695154978:role/external_secrets_role
              service: ParameterStore
        === kubectl apply --server-side --dry-run=server ===
        clustersecretstore.external-secrets.io/parameterstore serverside-applied (server dry run)
        Validation passed.
    sink.go:61: ������������| 08:54:26 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1mvalidate-kustomize-build �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 08:54:26 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:54:26 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:54:26 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCDApplication (application.yaml) の server-side dry-run ==="
        kubectl apply --server-side --dry-run=server \
          -f "${REPO_ROOT}/argoproj/external-secrets-operator/application.yaml"
        echo "Validation passed."
    sink.go:61: ������������| 08:54:26 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCDApplication (application.yaml) の server-side dry-run ===
        application.argoproj.io/external-secrets serverside-applied (server dry run)
        Validation passed.
    sink.go:61: ������������| 08:54:26 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1mvalidate-application-yaml�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 08:54:26 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:54:26 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:54:26 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-knowing-eft
    sink.go:61: ������������| 08:54:31 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/external-secrets-operator-schema-validation (10.84s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

📦 kube-vip

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/kube-vip]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- kube-vip-schema-validation (./tests/chainsaw/kube-vip)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/kube-vip-schema-validation
=== PAUSE chainsaw/kube-vip-schema-validation
=== CONT  chainsaw/kube-vip-schema-validation
    sink.go:61: ������������| 08:54:31 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-amazing-feline
    sink.go:61: ������������| 08:54:31 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:54:31 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD CRD インストール(application.yaml 検証用)==="
        # ArgoCD の CRD はアノテーションが256KBを超えるため --server-side が必須
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply --server-side --force-conflicts -f -
        
        echo "=== argocd Namespace 作成(Application リソース用)==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:54:36 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD CRD インストール(application.yaml 検証用)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io serverside-applied
        === argocd Namespace 作成(Application リソース用)===
        namespace/argocd configured
        === CRD 登録待機 ===
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io condition met
        CRD インストール完了
    sink.go:61: ������������| 08:54:36 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1minstall-argocd-crds      �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 08:54:36 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:54:36 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:54:36 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== kustomize build (kube-vip) ==="
        kustomize build "${REPO_ROOT}/argoproj/kube-vip/" > /tmp/kube-vip-manifest.yaml
        echo "Built manifest:"
        cat /tmp/kube-vip-manifest.yaml
        
        echo "=== kubectl apply --server-side --dry-run=server ==="
        kubectl apply --server-side --dry-run=server -f /tmp/kube-vip-manifest.yaml
        echo "Validation passed."
    sink.go:61: ������������| 08:54:36 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === kustomize build (kube-vip) ===
        Built manifest:
        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: kube-vip
          namespace: kube-system
        ---
        apiVersion: rbac.authorization.k8s.io/v1
        kind: ClusterRole
        metadata:
          name: kube-vip-role
        rules:
        - apiGroups:
          - ""
          resources:
          - services
          - services/status
          - endpoints
          - configmaps
          - nodes
          verbs:
          - get
          - list
          - watch
          - update
        - apiGroups:
          - coordination.k8s.io
          resources:
          - leases
          verbs:
          - get
          - list
          - watch
          - create
          - update
        - apiGroups:
          - discovery.k8s.io
          resources:
          - endpointslices
          verbs:
          - get
          - list
          - watch
          - update
        ---
        apiVersion: rbac.authorization.k8s.io/v1
        kind: ClusterRoleBinding
        metadata:
          name: kube-vip-binding
        roleRef:
          apiGroup: rbac.authorization.k8s.io
          kind: ClusterRole
          name: kube-vip-role
        subjects:
        - kind: ServiceAccount
          name: kube-vip
          namespace: kube-system
        ---
        apiVersion: apps/v1
        kind: DaemonSet
        metadata:
          name: kube-vip-ds
          namespace: kube-system
        spec:
          selector:
            matchLabels:
              app: kube-vip
          template:
            metadata:
              labels:
                app: kube-vip
            spec:
              affinity:
                nodeAffinity:
                  requiredDuringSchedulingIgnoredDuringExecution:
                    nodeSelectorTerms:
                    - matchExpressions:
                      - key: node-role.kubernetes.io/master
                        operator: Exists
                    - matchExpressions:
                      - key: node-role.kubernetes.io/control-plane
                        operator: Exists
              containers:
              - args:
                - manager
                env:
                - name: vip_arp
                  value: "true"
                - name: port
                  value: "6443"
                - name: vip_interface
                  value: end0
                - name: vip_cidr
                  value: "32"
                - name: dns_mode
                  value: first
                - name: cp_enable
                  value: "true"
                - name: cp_namespace
                  value: kube-system
... (出力省略。完全なログはGitHub Actionsで確認してください)

continue-on-error: trueの追加とcreateCommentのtry-catchによりフォークPRでGITHUB_TOKENが読み取り専用の場合でもジョブ全体が失敗しないよう修正

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Chainsaw Manifest Validation

✅ 全テスト通過

テスト対象コンポーネント: ["argocd", "external-secrets-operator", "kube-vip"]

📦 argocd

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/argocd]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- argocd-schema-validation (./tests/chainsaw/argocd)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/argocd-schema-validation
=== PAUSE chainsaw/argocd-schema-validation
=== CONT  chainsaw/argocd-schema-validation
    sink.go:61: ������������| 08:59:47 | �[32;1margocd-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-chief-gator
    sink.go:61: ������������| 08:59:47 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:59:47 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD CRD インストール(v3.5.2)==="
        # ArgoCD の CRD はアノテーションが256KBを超えるため --server-side が必須
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply --server-side --force-conflicts -f -
        
        echo "=== External Secrets Operator CRD インストール(v0.18.2)==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        # helm show crds は templates/crds/ を対象外のため helm template で抽出
        helm template external-secrets external-secrets/external-secrets --version 0.18.2 \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply --server-side --force-conflicts -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        
        echo "=== argocd Namespace 作成 ==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        echo "CRD インストール完了"
    sink.go:61: ������������| 08:59:54 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD CRD インストール(v3.5.2)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io serverside-applied
        === External Secrets Operator CRD インストール(v0.18.2)===
        "external-secrets" has been added to your repositories
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io serverside-applied
        === CRD 登録待機 ===
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io condition met
        === argocd Namespace 作成 ===
        namespace/argocd created
        CRD インストール完了
    sink.go:61: ������������| 08:59:54 | �[32;1margocd-schema-validation�[0;22m | �[32;1minstall-crds             �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 08:59:54 | �[36;1margocd-schema-validation�[0;22m | �[36;1minstall-crds             �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:59:54 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:59:54 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== kustomize build (argocd) ==="
        # リモート GitHub URL 参照のため時間がかかる場合あり
        kustomize build "${REPO_ROOT}/argoproj/argocd/" > /tmp/argocd-manifest.yaml
        echo "Build completed. Resource count: $(grep -c '^kind:' /tmp/argocd-manifest.yaml || true)"
        
        echo "=== kubectl apply --server-side --dry-run=server ==="
        kubectl apply --server-side --dry-run=server -f /tmp/argocd-manifest.yaml
        echo "Validation passed."
    sink.go:61: ������������| 08:59:59 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === kustomize build (argocd) ===
        Build completed. Resource count: 53
        === kubectl apply --server-side --dry-run=server ===
        serviceaccount/argocd-application-controller serverside-applied (server dry run)
        serviceaccount/argocd-applicationset-controller serverside-applied (server dry run)
        serviceaccount/argocd-dex-server serverside-applied (server dry run)
        serviceaccount/argocd-notifications-controller serverside-applied (server dry run)
        serviceaccount/argocd-redis serverside-applied (server dry run)
        serviceaccount/argocd-repo-server serverside-applied (server dry run)
        serviceaccount/argocd-server serverside-applied (server dry run)
        role.rbac.authorization.k8s.io/argocd-application-controller serverside-applied (server dry run)
        role.rbac.authorization.k8s.io/argocd-applicationset-controller serverside-applied (server dry run)
        role.rbac.authorization.k8s.io/argocd-dex-server serverside-applied (server dry run)
        role.rbac.authorization.k8s.io/argocd-notifications-controller serverside-applied (server dry run)
        role.rbac.authorization.k8s.io/argocd-redis serverside-applied (server dry run)
        role.rbac.authorization.k8s.io/argocd-server serverside-applied (server dry run)
        rolebinding.rbac.authorization.k8s.io/argocd-application-controller serverside-applied (server dry run)
        rolebinding.rbac.authorization.k8s.io/argocd-applicationset-controller serverside-applied (server dry run)
        rolebinding.rbac.authorization.k8s.io/argocd-dex-server serverside-applied (server dry run)
        rolebinding.rbac.authorization.k8s.io/argocd-notifications-controller serverside-applied (server dry run)
        rolebinding.rbac.authorization.k8s.io/argocd-redis serverside-applied (server dry run)
        rolebinding.rbac.authorization.k8s.io/argocd-server serverside-applied (server dry run)
        configmap/argocd-cm serverside-applied (server dry run)
        configmap/argocd-cmd-params-cm serverside-applied (server dry run)
        configmap/argocd-gpg-keys-cm serverside-applied (server dry run)
        configmap/argocd-notifications-cm serverside-applied (server dry run)
        configmap/argocd-rbac-cm serverside-applied (server dry run)
        configmap/argocd-ssh-known-hosts-cm serverside-applied (server dry run)
        configmap/argocd-tls-certs-cm serverside-applied (server dry run)
        secret/helm-repo-arc serverside-applied (server dry run)
        secret/argocd-notifications-secret serverside-applied (server dry run)
        secret/argocd-secret serverside-applied (server dry run)
        service/argocd-applicationset-controller serverside-applied (server dry run)
        service/argocd-dex-server serverside-applied (server dry run)
        service/argocd-metrics serverside-applied (server dry run)
        service/argocd-notifications-controller-metrics serverside-applied (server dry run)
        service/argocd-redis serverside-applied (server dry run)
        service/argocd-repo-server serverside-applied (server dry run)
        service/argocd-server serverside-applied (server dry run)
        service/argocd-server-metrics serverside-applied (server dry run)
        deployment.apps/cloudflared-api serverside-applied (server dry run)
        deployment.apps/argocd-applicationset-controller serverside-applied (server dry run)
        deployment.apps/argocd-dex-server serverside-applied (server dry run)
        deployment.apps/argocd-notifications-controller serverside-applied (server dry run)
        deployment.apps/argocd-redis serverside-applied (server dry run)
        deployment.apps/argocd-repo-server serverside-applied (server dry run)
        deployment.apps/argocd-server serverside-applied (server dry run)
        deployment.apps/cloudflared serverside-applied (server dry run)
        statefulset.apps/argocd-application-controller serverside-applied (server dry run)
        externalsecret.external-secrets.io/argocd-api-tunnel-es serverside-applied (server dry run)
        externalsecret.external-secrets.io/external-secret-repo-lolice serverside-applied (server dry run)
        externalsecret.external-secrets.io/external-secret serverside-applied (server dry run)
        networkpolicy.networking.k8s.io/argocd-application-controller-network-policy serverside-applied (server dry run)
        networkpolicy.networking.k8s.io/argocd-applicationset-controller-network-policy serverside-applied (server dry run)
        networkpolicy.networking.k8s.io/argocd-dex-server-network-policy serverside-applied (server dry run)
        networkpolicy.networking.k8s.io/argocd-notifications-controller-network-policy serverside-applied (server dry run)
        Validation passed.
        === STDERR
        # Warning: 'patchesStrategicMerge' is deprecated. Please use 'patches' instead. Run 'kustomize edit fix' to update your Kustomization automatically.
    sink.go:61: ������������| 08:59:59 | �[32;1margocd-schema-validation�[0;22m | �[32;1mvalidate-kustomize-build �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 08:59:59 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 08:59:59 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 08:59:59 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCDApplication (application.yaml) の server-side dry-run ==="
        kubectl apply --server-side --dry-run=server \
          -f "${REPO_ROOT}/argoproj/argocd/application.yaml"
        echo "Validation passed."
    sink.go:61: ������������| 08:59:59 | �[36;1margocd-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
... (出力省略。完全なログはGitHub Actionsで確認してください)

📦 external-secrets-operator

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/external-secrets-operator]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- external-secrets-operator-schema-validation (./tests/chainsaw/external-secrets-operator)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/external-secrets-operator-schema-validation
=== PAUSE chainsaw/external-secrets-operator-schema-validation
=== CONT  chainsaw/external-secrets-operator-schema-validation
    sink.go:61: ������������| 09:00:04 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-assuring-hermit
    sink.go:61: ������������| 09:00:04 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 09:00:04 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== External Secrets Operator CRD インストール(v0.18.2)==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        # helm show crds は templates/crds/ を対象外のため helm template で抽出
        helm template external-secrets external-secrets/external-secrets --version 0.18.2 \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply --server-side --force-conflicts -f -
        
        echo "=== ArgoCD CRD インストール(application.yaml 検証用)==="
        # ArgoCD の CRD はアノテーションが256KBを超えるため --server-side が必須
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply --server-side --force-conflicts -f -
        
        echo "=== argocd Namespace 作成(Application リソース用)==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        echo "CRD インストール完了"
    sink.go:61: ������������| 09:00:10 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === External Secrets Operator CRD インストール(v0.18.2)===
        "external-secrets" has been added to your repositories
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io serverside-applied
        === ArgoCD CRD インストール(application.yaml 検証用)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io serverside-applied
        === argocd Namespace 作成(Application リソース用)===
        namespace/argocd configured
        === CRD 登録待機 ===
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io condition met
        CRD インストール完了
    sink.go:61: ������������| 09:00:10 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1minstall-eso-crds         �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 09:00:10 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1minstall-eso-crds         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 09:00:10 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 09:00:10 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== kustomize build (external-secrets-operator/manifests) ==="
        kustomize build "${REPO_ROOT}/argoproj/external-secrets-operator/manifests/" \
          > /tmp/eso-manifest.yaml
        echo "Built manifest:"
        cat /tmp/eso-manifest.yaml
        
        echo "=== kubectl apply --server-side --dry-run=server ==="
        kubectl apply --server-side --dry-run=server -f /tmp/eso-manifest.yaml
        echo "Validation passed."
    sink.go:61: ������������| 09:00:10 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === kustomize build (external-secrets-operator/manifests) ===
        Built manifest:
        apiVersion: external-secrets.io/v1
        kind: ClusterSecretStore
        metadata:
          name: parameterstore
        spec:
          provider:
            aws:
              auth:
                secretRef:
                  accessKeyIDSecretRef:
                    key: access-key
                    name: awssm-secret
                    namespace: external-secrets
                  secretAccessKeySecretRef:
                    key: secret-access-key
                    name: awssm-secret
                    namespace: external-secrets
              region: ap-northeast-1
              role: arn:aws:iam::839695154978:role/external_secrets_role
              service: ParameterStore
        === kubectl apply --server-side --dry-run=server ===
        clustersecretstore.external-secrets.io/parameterstore serverside-applied (server dry run)
        Validation passed.
    sink.go:61: ������������| 09:00:10 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1mvalidate-kustomize-build �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 09:00:10 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 09:00:10 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 09:00:10 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCDApplication (application.yaml) の server-side dry-run ==="
        kubectl apply --server-side --dry-run=server \
          -f "${REPO_ROOT}/argoproj/external-secrets-operator/application.yaml"
        echo "Validation passed."
    sink.go:61: ������������| 09:00:10 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCDApplication (application.yaml) の server-side dry-run ===
        application.argoproj.io/external-secrets serverside-applied (server dry run)
        Validation passed.
    sink.go:61: ������������| 09:00:10 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1mvalidate-application-yaml�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 09:00:10 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1mvalidate-application-yaml�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 09:00:10 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 09:00:10 | �[32;1mexternal-secrets-operator-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-assuring-hermit
    sink.go:61: ������������| 09:00:15 | �[36;1mexternal-secrets-operator-schema-validation�[0;22m | �[36;1m@chainsaw                �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/external-secrets-operator-schema-validation (10.88s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

📦 kube-vip

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/kube-vip]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- kube-vip-schema-validation (./tests/chainsaw/kube-vip)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/kube-vip-schema-validation
=== PAUSE chainsaw/kube-vip-schema-validation
=== CONT  chainsaw/kube-vip-schema-validation
    sink.go:61: ������������| 09:00:15 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1m@chainsaw                �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-massive-impala
    sink.go:61: ������������| 09:00:15 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 09:00:15 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD CRD インストール(application.yaml 検証用)==="
        # ArgoCD の CRD はアノテーションが256KBを超えるため --server-side が必須
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply --server-side --force-conflicts -f -
        
        echo "=== argocd Namespace 作成(Application リソース用)==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        echo "CRD インストール完了"
    sink.go:61: ������������| 09:00:20 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD CRD インストール(application.yaml 検証用)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io serverside-applied
        === argocd Namespace 作成(Application リソース用)===
        namespace/argocd configured
        === CRD 登録待機 ===
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io condition met
        CRD インストール完了
    sink.go:61: ������������| 09:00:20 | �[32;1mkube-vip-schema-validation�[0;22m | �[32;1minstall-argocd-crds      �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 09:00:20 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1minstall-argocd-crds      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 09:00:20 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 09:00:20 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== kustomize build (kube-vip) ==="
        kustomize build "${REPO_ROOT}/argoproj/kube-vip/" > /tmp/kube-vip-manifest.yaml
        echo "Built manifest:"
        cat /tmp/kube-vip-manifest.yaml
        
        echo "=== kubectl apply --server-side --dry-run=server ==="
        kubectl apply --server-side --dry-run=server -f /tmp/kube-vip-manifest.yaml
        echo "Validation passed."
    sink.go:61: ������������| 09:00:20 | �[36;1mkube-vip-schema-validation�[0;22m | �[36;1mvalidate-kustomize-build �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === kustomize build (kube-vip) ===
        Built manifest:
        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: kube-vip
          namespace: kube-system
        ---
        apiVersion: rbac.authorization.k8s.io/v1
        kind: ClusterRole
        metadata:
          name: kube-vip-role
        rules:
        - apiGroups:
          - ""
          resources:
          - services
          - services/status
          - endpoints
          - configmaps
          - nodes
          verbs:
          - get
          - list
          - watch
          - update
        - apiGroups:
          - coordination.k8s.io
          resources:
          - leases
          verbs:
          - get
          - list
          - watch
          - create
          - update
        - apiGroups:
          - discovery.k8s.io
          resources:
          - endpointslices
          verbs:
          - get
          - list
          - watch
          - update
        ---
        apiVersion: rbac.authorization.k8s.io/v1
        kind: ClusterRoleBinding
        metadata:
          name: kube-vip-binding
        roleRef:
          apiGroup: rbac.authorization.k8s.io
          kind: ClusterRole
          name: kube-vip-role
        subjects:
        - kind: ServiceAccount
          name: kube-vip
          namespace: kube-system
        ---
        apiVersion: apps/v1
        kind: DaemonSet
        metadata:
          name: kube-vip-ds
          namespace: kube-system
        spec:
          selector:
            matchLabels:
              app: kube-vip
          template:
            metadata:
              labels:
                app: kube-vip
            spec:
              affinity:
                nodeAffinity:
                  requiredDuringSchedulingIgnoredDuringExecution:
                    nodeSelectorTerms:
                    - matchExpressions:
                      - key: node-role.kubernetes.io/master
                        operator: Exists
                    - matchExpressions:
                      - key: node-role.kubernetes.io/control-plane
                        operator: Exists
              containers:
              - args:
                - manager
                env:
                - name: vip_arp
                  value: "true"
                - name: port
                  value: "6443"
                - name: vip_interface
                  value: end0
                - name: vip_cidr
                  value: "32"
                - name: dns_mode
                  value: first
                - name: cp_enable
                  value: "true"
                - name: cp_namespace
                  value: kube-system
... (出力省略。完全なログはGitHub Actionsで確認してください)

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Chainsaw Manifest Validation

❌ テスト失敗あり

テスト対象コンポーネント: ["argocd", "external-secrets-operator", "kube-vip"]

📦 argocd

FAILED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/argocd]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- argocd-dynamic-validation (./tests/chainsaw/argocd)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/argocd-dynamic-validation
=== PAUSE chainsaw/argocd-dynamic-validation
=== CONT  chainsaw/argocd-dynamic-validation
    sink.go:61: ������������| 10:21:47 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1m@chainsaw      �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-loving-ape
    sink.go:61: ������������| 10:21:47 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1minstall-crds   �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:21:47 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1minstall-crds   �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD CRD インストール(v3.5.2)==="
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply --server-side --force-conflicts -f -
        
        echo "=== External Secrets Operator CRD インストール(v0.18.2)==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        helm template external-secrets external-secrets/external-secrets --version 0.18.2 \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply --server-side --force-conflicts -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=120s crd --all
        
        echo "=== argocd Namespace 作成 ==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        echo "準備完了"
    sink.go:61: ������������| 10:21:54 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1minstall-crds   �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD CRD インストール(v3.5.2)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io serverside-applied
        === External Secrets Operator CRD インストール(v0.18.2)===
        "external-secrets" has been added to your repositories
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io serverside-applied
        === CRD 登録待機 ===
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io condition met
        === argocd Namespace 作成 ===
        namespace/argocd created
        準備完了
    sink.go:61: ������������| 10:21:54 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1minstall-crds   �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 10:21:54 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1minstall-crds   �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:21:54 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mapply-manifests�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:21:54 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mapply-manifests�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== kustomize build (argocd) ==="
        kustomize build "${REPO_ROOT}/argoproj/argocd/" > /tmp/argocd-manifest.yaml
        echo "リソース数: $(grep -c '^kind:' /tmp/argocd-manifest.yaml || true)"
        
        echo "=== ExternalSecret および cloudflared を除いてクラスターへ実際に適用 ==="
        # ExternalSecret: kind 環境ではシークレットストア未接続のためスキップ
        # cloudflared: tunnel-credentials secret が ExternalSecret 依存のためスキップ
        yq 'select(.kind != "ExternalSecret" and .metadata.name != "cloudflared")' /tmp/argocd-manifest.yaml \
          | kubectl apply --server-side --force-conflicts -f -
        echo "適用完了"
    sink.go:61: ������������| 10:21:58 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mapply-manifests�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === kustomize build (argocd) ===
        リソース数: 53
        === ExternalSecret および cloudflared を除いてクラスターへ実際に適用 ===
        serviceaccount/argocd-application-controller serverside-applied
        serviceaccount/argocd-applicationset-controller serverside-applied
        serviceaccount/argocd-dex-server serverside-applied
        serviceaccount/argocd-notifications-controller serverside-applied
        serviceaccount/argocd-redis serverside-applied
        serviceaccount/argocd-repo-server serverside-applied
        serviceaccount/argocd-server serverside-applied
        role.rbac.authorization.k8s.io/argocd-application-controller serverside-applied
        role.rbac.authorization.k8s.io/argocd-applicationset-controller serverside-applied
        role.rbac.authorization.k8s.io/argocd-dex-server serverside-applied
        role.rbac.authorization.k8s.io/argocd-notifications-controller serverside-applied
        role.rbac.authorization.k8s.io/argocd-redis serverside-applied
        role.rbac.authorization.k8s.io/argocd-server serverside-applied
        rolebinding.rbac.authorization.k8s.io/argocd-application-controller serverside-applied
        rolebinding.rbac.authorization.k8s.io/argocd-applicationset-controller serverside-applied
        rolebinding.rbac.authorization.k8s.io/argocd-dex-server serverside-applied
        rolebinding.rbac.authorization.k8s.io/argocd-notifications-controller serverside-applied
        rolebinding.rbac.authorization.k8s.io/argocd-redis serverside-applied
        rolebinding.rbac.authorization.k8s.io/argocd-server serverside-applied
        configmap/argocd-cm serverside-applied
        configmap/argocd-cmd-params-cm serverside-applied
        configmap/argocd-gpg-keys-cm serverside-applied
        configmap/argocd-notifications-cm serverside-applied
        configmap/argocd-rbac-cm serverside-applied
        configmap/argocd-ssh-known-hosts-cm serverside-applied
        configmap/argocd-tls-certs-cm serverside-applied
        secret/helm-repo-arc serverside-applied
        secret/argocd-notifications-secret serverside-applied
        secret/argocd-secret serverside-applied
        service/argocd-applicationset-controller serverside-applied
        service/argocd-dex-server serverside-applied
        service/argocd-metrics serverside-applied
        service/argocd-notifications-controller-metrics serverside-applied
        service/argocd-redis serverside-applied
        service/argocd-repo-server serverside-applied
        service/argocd-server serverside-applied
        service/argocd-server-metrics serverside-applied
        deployment.apps/cloudflared-api serverside-applied
        deployment.apps/argocd-applicationset-controller serverside-applied
        deployment.apps/argocd-dex-server serverside-applied
        deployment.apps/argocd-notifications-controller serverside-applied
        deployment.apps/argocd-redis serverside-applied
        deployment.apps/argocd-repo-server serverside-applied
        deployment.apps/argocd-server serverside-applied
        statefulset.apps/argocd-application-controller serverside-applied
        networkpolicy.networking.k8s.io/argocd-application-controller-network-policy serverside-applied
        networkpolicy.networking.k8s.io/argocd-applicationset-controller-network-policy serverside-applied
        networkpolicy.networking.k8s.io/argocd-dex-server-network-policy serverside-applied
        networkpolicy.networking.k8s.io/argocd-notifications-controller-network-policy serverside-applied
        適用完了
        === STDERR
        # Warning: 'patchesStrategicMerge' is deprecated. Please use 'patches' instead. Run 'kustomize edit fix' to update your Kustomization automatically.
    sink.go:61: ������������| 10:21:58 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1mapply-manifests�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 10:21:58 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mapply-manifests�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:21:58 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-ready �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:21:58 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-ready �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD コア Deployment の起動待機 ==="
        for DEPLOY in argocd-server argocd-repo-server argocd-dex-server argocd-notifications-controller argocd-applicationset-controller argocd-redis; do
          echo "Waiting for deployment/$DEPLOY ..."
          kubectl wait deployment/$DEPLOY \
            -n argocd \
            --for=condition=Available \
            --timeout=300s
        done
        
        echo "=== ArgoCD ApplicationController (StatefulSet) の起動待機 ==="
... (出力省略。完全なログはGitHub Actionsで確認してください)

📦 external-secrets-operator

FAILED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/external-secrets-operator]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- external-secrets-operator-dynamic-validation (./tests/chainsaw/external-secrets-operator)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/external-secrets-operator-dynamic-validation
=== PAUSE chainsaw/external-secrets-operator-dynamic-validation
=== CONT  chainsaw/external-secrets-operator-dynamic-validation
    sink.go:61: ������������| 10:22:04 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-classic-emu
    sink.go:61: ������������| 10:22:04 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1minstall-eso-operator       �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:22:04 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1minstall-eso-operator       �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== External Secrets Operator を Helm でインストール ==="
        helm repo add external-secrets https://charts.external-secrets.io --force-update
        kubectl create namespace external-secrets --dry-run=client -o yaml | kubectl apply -f -
        
        helm install external-secrets external-secrets/external-secrets \
          --version 0.18.2 \
          --namespace external-secrets \
          --wait \
          --timeout 180s
        echo "ESO Helm インストール完了"
    sink.go:61: ������������| 10:22:05 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1minstall-eso-operator       �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === External Secrets Operator を Helm でインストール ===
        "external-secrets" has been added to your repositories
        namespace/external-secrets created
        === STDERR
        Error: INSTALLATION FAILED: unable to continue with install: CustomResourceDefinition "acraccesstokens.generators.external-secrets.io" in namespace "" exists and cannot be imported into the current release: invalid ownership metadata; label validation error: missing key "app.kubernetes.io/managed-by": must be set to "Helm"; annotation validation error: missing key "meta.helm.sh/release-name": must be set to "external-secrets"; annotation validation error: missing key "meta.helm.sh/release-namespace": must be set to "external-secrets"
    sink.go:61: ������������| 10:22:05 | �[31;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[31;1minstall-eso-operator       �[0;22m | �[31;1mSCRIPT�[0;22m    | �[31;1mERROR�[0;22m |
        === ERROR
        exit status 1
    sink.go:61: ������������| 10:22:05 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1minstall-eso-operator       �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:22:05 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:22:05 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-classic-emu
    sink.go:61: ������������| 10:22:11 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- FAIL: chainsaw (0.00s)
    --- FAIL: chainsaw/external-secrets-operator-dynamic-validation (7.37s)
FAIL
Tests Summary...
- Passed  tests 0
- Failed  tests 1
- Skipped tests 0
Done with failures.
Error: some tests failed

📦 kube-vip

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/kube-vip]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- kube-vip-dynamic-validation (./tests/chainsaw/kube-vip)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/kube-vip-dynamic-validation
=== PAUSE chainsaw/kube-vip-dynamic-validation
=== CONT  chainsaw/kube-vip-dynamic-validation
    sink.go:61: ������������| 10:22:11 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-epic-crow
    sink.go:61: ������������| 10:22:11 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1minstall-argocd-crds     �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:22:11 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1minstall-argocd-crds     �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD CRD インストール(application.yaml 検証用)==="
        curl -sL "https://raw.githubusercontent.com/argoproj/argo-cd/v3.5.2/manifests/install.yaml" \
          | yq 'select(.kind == "CustomResourceDefinition")' \
          | kubectl apply --server-side --force-conflicts -f -
        
        echo "=== argocd Namespace 作成 ==="
        kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -
        
        echo "=== CRD 登録待機 ==="
        kubectl wait --for=condition=established --timeout=60s crd --all
        echo "CRD インストール完了"
    sink.go:61: ������������| 10:22:16 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1minstall-argocd-crds     �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD CRD インストール(application.yaml 検証用)===
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io serverside-applied
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io serverside-applied
        === argocd Namespace 作成 ===
        namespace/argocd configured
        === CRD 登録待機 ===
        customresourcedefinition.apiextensions.k8s.io/acraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterexternalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustergenerators.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clusterpushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/clustersecretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/ecrauthorizationtokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/externalsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/fakes.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/gcraccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/generatorstates.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/githubaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/grafanas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/mfas.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/passwords.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/pushsecrets.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/quayaccesstokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/secretstores.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/stssessiontokens.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/uuids.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/vaultdynamicsecrets.generators.external-secrets.io condition met
        customresourcedefinition.apiextensions.k8s.io/webhooks.generators.external-secrets.io condition met
        CRD インストール完了
    sink.go:61: ������������| 10:22:16 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1minstall-argocd-crds     �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 10:22:16 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1minstall-argocd-crds     �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:22:16 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-manifests         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:22:16 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-manifests         �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== kustomize build (kube-vip) ==="
        kustomize build "${REPO_ROOT}/argoproj/kube-vip/" > /tmp/kube-vip-manifest.yaml
        echo "Built manifest:"
        cat /tmp/kube-vip-manifest.yaml
        
        echo "=== クラスターへ実際に適用(dry-run なし)==="
        kubectl apply --server-side --force-conflicts -f /tmp/kube-vip-manifest.yaml
        echo "適用完了"
    sink.go:61: ������������| 10:22:16 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-manifests         �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === kustomize build (kube-vip) ===
        Built manifest:
        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: kube-vip
          namespace: kube-system
        ---
        apiVersion: rbac.authorization.k8s.io/v1
        kind: ClusterRole
        metadata:
          name: kube-vip-role
        rules:
        - apiGroups:
          - ""
          resources:
          - services
          - services/status
          - endpoints
          - configmaps
          - nodes
          verbs:
          - get
          - list
          - watch
          - update
        - apiGroups:
          - coordination.k8s.io
          resources:
          - leases
          verbs:
          - get
          - list
          - watch
          - create
          - update
        - apiGroups:
          - discovery.k8s.io
          resources:
          - endpointslices
          verbs:
          - get
          - list
          - watch
          - update
        ---
        apiVersion: rbac.authorization.k8s.io/v1
        kind: ClusterRoleBinding
        metadata:
          name: kube-vip-binding
        roleRef:
          apiGroup: rbac.authorization.k8s.io
          kind: ClusterRole
          name: kube-vip-role
        subjects:
        - kind: ServiceAccount
          name: kube-vip
          namespace: kube-system
        ---
        apiVersion: apps/v1
        kind: DaemonSet
        metadata:
          name: kube-vip-ds
          namespace: kube-system
        spec:
          selector:
            matchLabels:
              app: kube-vip
          template:
            metadata:
              labels:
                app: kube-vip
            spec:
              affinity:
                nodeAffinity:
                  requiredDuringSchedulingIgnoredDuringExecution:
                    nodeSelectorTerms:
                    - matchExpressions:
                      - key: node-role.kubernetes.io/master
                        operator: Exists
                    - matchExpressions:
                      - key: node-role.kubernetes.io/control-plane
                        operator: Exists
              containers:
              - args:
                - manager
                env:
                - name: vip_arp
                  value: "true"
                - name: port
                  value: "6443"
                - name: vip_interface
                  value: end0
                - name: vip_cidr
                  value: "32"
                - name: dns_mode
                  value: first
                - name: cp_enable
                  value: "true"
                - name: cp_namespace
                  value: kube-system
                - name: svc_enable
... (出力省略。完全なログはGitHub Actionsで確認してください)

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Chainsaw Manifest Validation

❌ テスト失敗あり

テスト対象コンポーネント: ["argocd", "external-secrets-operator", "kube-vip"]

📦 argocd

FAILED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/argocd]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- argocd-dynamic-validation (./tests/chainsaw/argocd)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/argocd-dynamic-validation
=== PAUSE chainsaw/argocd-dynamic-validation
=== CONT  chainsaw/argocd-dynamic-validation
    sink.go:61: ������������| 10:44:13 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-informed-raptor
    sink.go:61: ������������| 10:44:13 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:44:13 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD コア Deployment の起動待機 ==="
        for DEPLOY in argocd-server argocd-repo-server argocd-dex-server argocd-notifications-controller argocd-applicationset-controller argocd-redis; do
          echo "Waiting for deployment/$DEPLOY ..."
          kubectl wait deployment/$DEPLOY \
            -n argocd \
            --for=condition=Available \
            --timeout=300s
        done
        
        echo "=== ArgoCD ApplicationController (StatefulSet) の起動待機 ==="
        kubectl rollout status statefulset/argocd-application-controller -n argocd --timeout=300s
        
        echo "=== 実行中の Pod 確認 ==="
        kubectl get pods -n argocd
        echo "ArgoCD 動的検証: 全コアコンポーネント Available"
    sink.go:61: ������������| 10:44:13 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD コア Deployment の起動待機 ===
        Waiting for deployment/argocd-server ...
        === STDERR
        Error from server (NotFound): deployments.apps "argocd-server" not found
    sink.go:61: ������������| 10:44:13 | �[31;1margocd-dynamic-validation�[0;22m | �[31;1mwait-for-argocd-ready      �[0;22m | �[31;1mSCRIPT�[0;22m    | �[31;1mERROR�[0;22m |
        === ERROR
        exit status 1
    sink.go:61: ������������| 10:44:13 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:44:13 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:44:13 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-informed-raptor
    sink.go:61: ������������| 10:44:18 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- FAIL: chainsaw (0.00s)
    --- FAIL: chainsaw/argocd-dynamic-validation (5.28s)
FAIL
Tests Summary...
- Passed  tests 0
- Failed  tests 1
- Skipped tests 0
Done with failures.
Error: some tests failed

📦 external-secrets-operator

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/external-secrets-operator]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- external-secrets-operator-dynamic-validation (./tests/chainsaw/external-secrets-operator)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/external-secrets-operator-dynamic-validation
=== PAUSE chainsaw/external-secrets-operator-dynamic-validation
=== CONT  chainsaw/external-secrets-operator-dynamic-validation
    sink.go:61: ������������| 10:44:18 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-quick-starling
    sink.go:61: ������������| 10:44:18 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:44:18 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ESO Deployment の起動待機 ==="
        kubectl wait deployment \
          -n external-secrets \
          --all \
          --for=condition=Available \
          --timeout=120s
        
        echo "=== 実行中の Pod 確認 ==="
        kubectl get pods -n external-secrets
        echo "ESO 動的検証: オペレーター Available"
    sink.go:61: ������������| 10:44:19 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ESO Deployment の起動待機 ===
        deployment.apps/external-secrets condition met
        deployment.apps/external-secrets-cert-controller condition met
        deployment.apps/external-secrets-webhook condition met
        === 実行中の Pod 確認 ===
        NAME                                                READY   STATUS    RESTARTS   AGE
        external-secrets-6566c4cfdd-7bmxk                   1/1     Running   0          48s
        external-secrets-cert-controller-86794c66b7-ctrkx   1/1     Running   0          48s
        external-secrets-webhook-574788fc77-zzrlk           1/1     Running   0          48s
        ESO 動的検証: オペレーター Available
    sink.go:61: ������������| 10:44:19 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1mwait-for-eso-ready         �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 10:44:19 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:44:19 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:44:19 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ClusterSecretStore の存在確認 ==="
        kubectl get clustersecretstore parameterstore -o yaml
        echo "ClusterSecretStore 動的検証: リソース作成確認"
        
        echo "=== ESO Application yaml の実適用 ==="
        kubectl apply --server-side --force-conflicts \
          -f "${REPO_ROOT}/argoproj/external-secrets-operator/application.yaml"
        echo "ArgoCD Application リソース作成完了"
    sink.go:61: ������������| 10:44:19 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ClusterSecretStore の存在確認 ===
        apiVersion: external-secrets.io/v1
        kind: ClusterSecretStore
        metadata:
          creationTimestamp: "2026-09-08T10:44:12Z"
          generation: 1
          name: parameterstore
          resourceVersion: "1011"
          uid: 21f29673-65b7-4685-9554-dfe6963a3e31
        spec:
          provider:
            aws:
              auth:
                secretRef:
                  accessKeyIDSecretRef:
                    key: access-key
                    name: awssm-secret
                    namespace: external-secrets
                  secretAccessKeySecretRef:
                    key: secret-access-key
                    name: awssm-secret
                    namespace: external-secrets
              region: ap-northeast-1
              role: arn:aws:iam::839695154978:role/external_secrets_role
              service: ParameterStore
        status:
          conditions:
          - lastTransitionTime: "2026-09-08T10:44:13Z"
            message: unable to create client
            reason: InvalidProviderConfig
            status: "False"
            type: Ready
        ClusterSecretStore 動的検証: リソース作成確認
        === ESO Application yaml の実適用 ===
        application.argoproj.io/external-secrets serverside-applied
        ArgoCD Application リソース作成完了
    sink.go:61: ������������| 10:44:19 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1mverify-cluster-secret-store�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 10:44:19 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:44:19 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:44:19 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-quick-starling
    sink.go:61: ������������| 10:44:24 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/external-secrets-operator-dynamic-validation (5.78s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

📦 kube-vip

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/kube-vip]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- kube-vip-dynamic-validation (./tests/chainsaw/kube-vip)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/kube-vip-dynamic-validation
=== PAUSE chainsaw/kube-vip-dynamic-validation
=== CONT  chainsaw/kube-vip-dynamic-validation
    sink.go:61: ������������| 10:44:24 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-workable-ghoul
    sink.go:61: ������������| 10:44:24 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:44:24 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== DaemonSet の存在確認 ==="
        kubectl get daemonset kube-vip-ds -n kube-system -o wide
        
        echo "=== DaemonSet の desired/scheduled 確認 ==="
        DESIRED=$(kubectl get daemonset kube-vip-ds -n kube-system -o jsonpath='{.status.desiredNumberScheduled}')
        echo "Desired: $DESIRED"
        echo "kube-vip DaemonSet が正常に作成されました"
    sink.go:61: ������������| 10:44:24 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === DaemonSet の存在確認 ===
        NAME          DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE   CONTAINERS   IMAGES                             SELECTOR
        kube-vip-ds   1         1         0       1            0           <none>          11s   kube-vip     ghcr.io/kube-vip/kube-vip:v1.2.3   app=kube-vip
        === DaemonSet の desired/scheduled 確認 ===
        Desired: 1
        kube-vip DaemonSet が正常に作成されました
    sink.go:61: ������������| 10:44:24 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1mverify-daemonset-created�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 10:44:24 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:44:24 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:44:24 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCDApplication (application.yaml) の実適用 ==="
        kubectl apply --server-side --force-conflicts \
          -f "${REPO_ROOT}/argoproj/kube-vip/application.yaml"
        echo "ArgoCD Application リソース作成完了"
    sink.go:61: ������������| 10:44:24 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCDApplication (application.yaml) の実適用 ===
        application.argoproj.io/kube-vip serverside-applied
        ArgoCD Application リソース作成完了
        === STDERR
        Warning: metadata.finalizers: "resources-finalizer.argocd.argoproj.io": prefer a domain-qualified finalizer name including a path (/) to avoid accidental conflicts with other finalizer writers
    sink.go:61: ������������| 10:44:24 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1mapply-application-yaml  �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 10:44:24 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:44:24 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:44:24 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-workable-ghoul
    sink.go:61: ������������| 10:44:30 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/kube-vip-dynamic-validation (5.45s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Chainsaw Manifest Validation

❌ テスト失敗あり

テスト対象コンポーネント: ["argocd", "external-secrets-operator", "kube-vip"]

📦 argocd

FAILED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/argocd]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- argocd-dynamic-validation (./tests/chainsaw/argocd)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/argocd-dynamic-validation
=== PAUSE chainsaw/argocd-dynamic-validation
=== CONT  chainsaw/argocd-dynamic-validation
    sink.go:61: ������������| 10:52:09 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-first-kid
    sink.go:61: ������������| 10:52:09 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:52:09 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD コア Deployment の起動待機 ==="
        for DEPLOY in argocd-server argocd-repo-server argocd-dex-server argocd-notifications-controller argocd-applicationset-controller argocd-redis; do
          echo "Waiting for deployment/$DEPLOY ..."
          kubectl wait deployment/$DEPLOY \
            -n argocd \
            --for=condition=Available \
            --timeout=300s
        done
        
        echo "=== ArgoCD ApplicationController (StatefulSet) の起動待機 ==="
        kubectl rollout status statefulset/argocd-application-controller -n argocd --timeout=300s
        
        echo "=== 実行中の Pod 確認 ==="
        kubectl get pods -n argocd
        echo "ArgoCD 動的検証: 全コアコンポーネント Available"
    sink.go:61: ������������| 10:52:09 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD コア Deployment の起動待機 ===
        Waiting for deployment/argocd-server ...
        === STDERR
        Error from server (NotFound): deployments.apps "argocd-server" not found
    sink.go:61: ������������| 10:52:09 | �[31;1margocd-dynamic-validation�[0;22m | �[31;1mwait-for-argocd-ready      �[0;22m | �[31;1mSCRIPT�[0;22m    | �[31;1mERROR�[0;22m |
        === ERROR
        exit status 1
    sink.go:61: ������������| 10:52:09 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:52:09 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:52:09 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-first-kid
    sink.go:61: ������������| 10:52:15 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- FAIL: chainsaw (0.00s)
    --- FAIL: chainsaw/argocd-dynamic-validation (5.49s)
FAIL
Tests Summary...
- Passed  tests 0
- Failed  tests 1
- Skipped tests 0
Done with failures.
Error: some tests failed

📦 external-secrets-operator

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/external-secrets-operator]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- external-secrets-operator-dynamic-validation (./tests/chainsaw/external-secrets-operator)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/external-secrets-operator-dynamic-validation
=== PAUSE chainsaw/external-secrets-operator-dynamic-validation
=== CONT  chainsaw/external-secrets-operator-dynamic-validation
    sink.go:61: ������������| 10:52:16 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-huge-mammal
    sink.go:61: ������������| 10:52:16 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:52:16 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ESO Deployment の起動待機 ==="
        kubectl wait deployment \
          -n external-secrets \
          --all \
          --for=condition=Available \
          --timeout=120s
        
        echo "=== 実行中の Pod 確認 ==="
        kubectl get pods -n external-secrets
        echo "ESO 動的検証: オペレーター Available"
    sink.go:61: ������������| 10:52:16 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ESO Deployment の起動待機 ===
        deployment.apps/external-secrets condition met
        deployment.apps/external-secrets-cert-controller condition met
        deployment.apps/external-secrets-webhook condition met
        === 実行中の Pod 確認 ===
        NAME                                                READY   STATUS    RESTARTS   AGE
        external-secrets-6566c4cfdd-cc2zl                   1/1     Running   0          46s
        external-secrets-cert-controller-86794c66b7-vz9tw   1/1     Running   0          46s
        external-secrets-webhook-574788fc77-95mv5           1/1     Running   0          46s
        ESO 動的検証: オペレーター Available
    sink.go:61: ������������| 10:52:16 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1mwait-for-eso-ready         �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 10:52:16 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:52:16 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:52:16 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ClusterSecretStore の存在確認 ==="
        kubectl get clustersecretstore parameterstore -o yaml
        echo "ClusterSecretStore 動的検証: リソース作成確認"
        
        echo "=== ESO Application yaml の実適用 ==="
        kubectl apply --server-side --force-conflicts \
          -f "${REPO_ROOT}/argoproj/external-secrets-operator/application.yaml"
        echo "ArgoCD Application リソース作成完了"
    sink.go:61: ������������| 10:52:16 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ClusterSecretStore の存在確認 ===
        apiVersion: external-secrets.io/v1
        kind: ClusterSecretStore
        metadata:
          creationTimestamp: "2026-09-08T10:52:09Z"
          generation: 1
          name: parameterstore
          resourceVersion: "904"
          uid: 75e052c6-62dd-41d4-af2b-829873068497
        spec:
          provider:
            aws:
              auth:
                secretRef:
                  accessKeyIDSecretRef:
                    key: access-key
                    name: awssm-secret
                    namespace: external-secrets
                  secretAccessKeySecretRef:
                    key: secret-access-key
                    name: awssm-secret
                    namespace: external-secrets
              region: ap-northeast-1
              role: arn:aws:iam::839695154978:role/external_secrets_role
              service: ParameterStore
        status:
          conditions:
          - lastTransitionTime: "2026-09-08T10:52:09Z"
            message: unable to create client
            reason: InvalidProviderConfig
            status: "False"
            type: Ready
        ClusterSecretStore 動的検証: リソース作成確認
        === ESO Application yaml の実適用 ===
        application.argoproj.io/external-secrets serverside-applied
        ArgoCD Application リソース作成完了
    sink.go:61: ������������| 10:52:16 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1mverify-cluster-secret-store�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 10:52:16 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:52:16 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:52:16 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-huge-mammal
    sink.go:61: ������������| 10:52:22 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/external-secrets-operator-dynamic-validation (6.13s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

📦 kube-vip

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/kube-vip]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- kube-vip-dynamic-validation (./tests/chainsaw/kube-vip)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/kube-vip-dynamic-validation
=== PAUSE chainsaw/kube-vip-dynamic-validation
=== CONT  chainsaw/kube-vip-dynamic-validation
    sink.go:61: ������������| 10:52:22 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-welcome-tiger
    sink.go:61: ������������| 10:52:22 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:52:22 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== DaemonSet の存在確認 ==="
        kubectl get daemonset kube-vip-ds -n kube-system -o wide
        
        echo "=== DaemonSet の desired/scheduled 確認 ==="
        DESIRED=$(kubectl get daemonset kube-vip-ds -n kube-system -o jsonpath='{.status.desiredNumberScheduled}')
        echo "Desired: $DESIRED"
        echo "kube-vip DaemonSet が正常に作成されました"
    sink.go:61: ������������| 10:52:22 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === DaemonSet の存在確認 ===
        NAME          DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE   CONTAINERS   IMAGES                             SELECTOR
        kube-vip-ds   1         1         0       1            0           <none>          13s   kube-vip     ghcr.io/kube-vip/kube-vip:v1.2.3   app=kube-vip
        === DaemonSet の desired/scheduled 確認 ===
        Desired: 1
        kube-vip DaemonSet が正常に作成されました
    sink.go:61: ������������| 10:52:22 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1mverify-daemonset-created�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 10:52:22 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:52:22 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:52:22 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCDApplication (application.yaml) の実適用 ==="
        kubectl apply --server-side --force-conflicts \
          -f "${REPO_ROOT}/argoproj/kube-vip/application.yaml"
        echo "ArgoCD Application リソース作成完了"
    sink.go:61: ������������| 10:52:22 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCDApplication (application.yaml) の実適用 ===
        application.argoproj.io/kube-vip serverside-applied
        ArgoCD Application リソース作成完了
        === STDERR
        Warning: metadata.finalizers: "resources-finalizer.argocd.argoproj.io": prefer a domain-qualified finalizer name including a path (/) to avoid accidental conflicts with other finalizer writers
    sink.go:61: ������������| 10:52:22 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1mapply-application-yaml  �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 10:52:22 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 10:52:22 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 10:52:22 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-welcome-tiger
    sink.go:61: ������������| 10:52:27 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/kube-vip-dynamic-validation (5.52s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

@boxp boxp left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

chainsaw testの結果をコメントする時、前のコメントをhideするようにしてほしい

…e namespace継承問題を修正)

kustomize v5.7.1ではremote base(github.com/argoproj/argo-cd/manifests/base)の
namespace設定がCI環境で正しく継承されないため、明示的にnamespace: argocdを設定する。
本番ArgoCDはApplication.destination.namespaceでも制御されるため影響なし。
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

ArgoCD Diff Result

Auth path: tailscale

アプリケーション: argocd の差分

パス: argoproj/argocd

===== rbac.authorization.k8s.io/RoleBinding argocd/argocd-application-controller ======
56a57
>   namespace: argocd

===== rbac.authorization.k8s.io/RoleBinding argocd/argocd-applicationset-controller ======
56a57
>   namespace: argocd

===== rbac.authorization.k8s.io/RoleBinding argocd/argocd-dex-server ======
56a57
>   namespace: argocd

===== rbac.authorization.k8s.io/RoleBinding argocd/argocd-notifications-controller ======
56a57
>   namespace: argocd

===== rbac.authorization.k8s.io/RoleBinding argocd/argocd-redis ======
49a50
>   namespace: argocd

===== rbac.authorization.k8s.io/RoleBinding argocd/argocd-server ======
56a57
>   namespace: argocd
ℹ️ 上記の差分が見つかりました

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Chainsaw Manifest Validation

✅ 全テスト通過

テスト対象コンポーネント: ["argocd", "external-secrets-operator", "kube-vip"]

📦 argocd

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/argocd]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- argocd-dynamic-validation (./tests/chainsaw/argocd)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/argocd-dynamic-validation
=== PAUSE chainsaw/argocd-dynamic-validation
=== CONT  chainsaw/argocd-dynamic-validation
    sink.go:61: ������������| 11:04:59 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-sunny-airedale
    sink.go:61: ������������| 11:04:59 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 11:04:59 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD コア Deployment の起動待機 ==="
        for DEPLOY in argocd-server argocd-repo-server argocd-dex-server argocd-notifications-controller argocd-applicationset-controller argocd-redis; do
          echo "Waiting for deployment/$DEPLOY ..."
          kubectl wait deployment/$DEPLOY \
            -n argocd \
            --for=condition=Available \
            --timeout=300s
        done
        
        echo "=== ArgoCD ApplicationController (StatefulSet) の起動待機 ==="
        kubectl rollout status statefulset/argocd-application-controller -n argocd --timeout=300s
        
        echo "=== 実行中の Pod 確認 ==="
        kubectl get pods -n argocd
        echo "ArgoCD 動的検証: 全コアコンポーネント Available"
    sink.go:61: ������������| 11:05:48 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD コア Deployment の起動待機 ===
        Waiting for deployment/argocd-server ...
        deployment.apps/argocd-server condition met
        Waiting for deployment/argocd-repo-server ...
        deployment.apps/argocd-repo-server condition met
        Waiting for deployment/argocd-dex-server ...
        deployment.apps/argocd-dex-server condition met
        Waiting for deployment/argocd-notifications-controller ...
        deployment.apps/argocd-notifications-controller condition met
        Waiting for deployment/argocd-applicationset-controller ...
        deployment.apps/argocd-applicationset-controller condition met
        Waiting for deployment/argocd-redis ...
        deployment.apps/argocd-redis condition met
        === ArgoCD ApplicationController (StatefulSet) の起動待機 ===
        partitioned roll out complete: 1 new pods have been updated...
        === 実行中の Pod 確認 ===
        NAME                                                READY   STATUS                       RESTARTS   AGE
        argocd-application-controller-0                     1/1     Running                      0          50s
        argocd-applicationset-controller-59b85c945c-d2l5k   1/1     Running                      0          50s
        argocd-dex-server-7bb57f7bdd-tqkk8                  1/1     Running                      0          50s
        argocd-notifications-controller-6649448fc9-bhphm    1/1     Running                      0          50s
        argocd-redis-789b7d6769-v5572                       1/1     Running                      0          50s
        argocd-repo-server-bdf78b574-wbw4l                  1/1     Running                      0          50s
        argocd-server-699496df6b-thp7k                      1/1     Running                      0          50s
        cloudflared-76fc4b49b7-6kv2s                        0/1     CreateContainerConfigError   0          50s
        cloudflared-api-6c5d5744c6-wz7pw                    0/1     CreateContainerConfigError   0          50s
        ArgoCD 動的検証: 全コアコンポーネント Available
    sink.go:61: ������������| 11:05:48 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1mwait-for-argocd-ready      �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 11:05:48 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 11:05:48 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mapply-argocd-application-cr�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 11:05:48 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mapply-argocd-application-cr�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD Application CR (application.yaml) の実適用 ==="
        kubectl apply --server-side --force-conflicts \
          -f "${REPO_ROOT}/argoproj/argocd/application.yaml"
        echo "ArgoCD Application CR 作成完了"
    sink.go:61: ������������| 11:05:48 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mapply-argocd-application-cr�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD Application CR (application.yaml) の実適用 ===
        application.argoproj.io/argocd serverside-applied
        ArgoCD Application CR 作成完了
    sink.go:61: ������������| 11:05:48 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1mapply-argocd-application-cr�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 11:05:48 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mapply-argocd-application-cr�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 11:05:48 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 11:05:48 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-sunny-airedale
    sink.go:61: ������������| 11:05:53 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/argocd-dynamic-validation (54.10s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

📦 external-secrets-operator

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/external-secrets-operator]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- external-secrets-operator-dynamic-validation (./tests/chainsaw/external-secrets-operator)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/external-secrets-operator-dynamic-validation
=== PAUSE chainsaw/external-secrets-operator-dynamic-validation
=== CONT  chainsaw/external-secrets-operator-dynamic-validation
    sink.go:61: ������������| 11:05:53 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-amazing-phoenix
    sink.go:61: ������������| 11:05:53 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 11:05:53 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ESO Deployment の起動待機 ==="
        kubectl wait deployment \
          -n external-secrets \
          --all \
          --for=condition=Available \
          --timeout=120s
        
        echo "=== 実行中の Pod 確認 ==="
        kubectl get pods -n external-secrets
        echo "ESO 動的検証: オペレーター Available"
    sink.go:61: ������������| 11:05:54 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ESO Deployment の起動待機 ===
        deployment.apps/external-secrets condition met
        deployment.apps/external-secrets-cert-controller condition met
        deployment.apps/external-secrets-webhook condition met
        === 実行中の Pod 確認 ===
        NAME                                                READY   STATUS    RESTARTS   AGE
        external-secrets-6566c4cfdd-lpcjm                   1/1     Running   0          98s
        external-secrets-cert-controller-86794c66b7-jrhqv   1/1     Running   0          98s
        external-secrets-webhook-574788fc77-7qx5f           1/1     Running   0          98s
        ESO 動的検証: オペレーター Available
    sink.go:61: ������������| 11:05:54 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1mwait-for-eso-ready         �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 11:05:54 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 11:05:54 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 11:05:54 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ClusterSecretStore の存在確認 ==="
        kubectl get clustersecretstore parameterstore -o yaml
        echo "ClusterSecretStore 動的検証: リソース作成確認"
        
        echo "=== ESO Application yaml の実適用 ==="
        kubectl apply --server-side --force-conflicts \
          -f "${REPO_ROOT}/argoproj/external-secrets-operator/application.yaml"
        echo "ArgoCD Application リソース作成完了"
    sink.go:61: ������������| 11:05:54 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ClusterSecretStore の存在確認 ===
        apiVersion: external-secrets.io/v1
        kind: ClusterSecretStore
        metadata:
          creationTimestamp: "2026-09-08T11:04:59Z"
          generation: 1
          name: parameterstore
          resourceVersion: "871"
          uid: 7329b059-6edb-491a-8a7f-e1570df94962
        spec:
          provider:
            aws:
              auth:
                secretRef:
                  accessKeyIDSecretRef:
                    key: access-key
                    name: awssm-secret
                    namespace: external-secrets
                  secretAccessKeySecretRef:
                    key: secret-access-key
                    name: awssm-secret
                    namespace: external-secrets
              region: ap-northeast-1
              role: arn:aws:iam::839695154978:role/external_secrets_role
              service: ParameterStore
        status:
          conditions:
          - lastTransitionTime: "2026-09-08T11:04:59Z"
            message: unable to create client
            reason: InvalidProviderConfig
            status: "False"
            type: Ready
        ClusterSecretStore 動的検証: リソース作成確認
        === ESO Application yaml の実適用 ===
        application.argoproj.io/external-secrets serverside-applied
        ArgoCD Application リソース作成完了
    sink.go:61: ������������| 11:05:54 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1mverify-cluster-secret-store�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 11:05:54 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 11:05:54 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 11:05:54 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-amazing-phoenix
    sink.go:61: ������������| 11:05:59 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/external-secrets-operator-dynamic-validation (5.76s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

📦 kube-vip

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/kube-vip]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- kube-vip-dynamic-validation (./tests/chainsaw/kube-vip)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/kube-vip-dynamic-validation
=== PAUSE chainsaw/kube-vip-dynamic-validation
=== CONT  chainsaw/kube-vip-dynamic-validation
    sink.go:61: ������������| 11:05:59 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-golden-buzzard
    sink.go:61: ������������| 11:05:59 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 11:05:59 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== DaemonSet の存在確認 ==="
        kubectl get daemonset kube-vip-ds -n kube-system -o wide
        
        echo "=== DaemonSet の desired/scheduled 確認 ==="
        DESIRED=$(kubectl get daemonset kube-vip-ds -n kube-system -o jsonpath='{.status.desiredNumberScheduled}')
        echo "Desired: $DESIRED"
        echo "kube-vip DaemonSet が正常に作成されました"
    sink.go:61: ������������| 11:05:59 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === DaemonSet の存在確認 ===
        NAME          DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE   CONTAINERS   IMAGES                             SELECTOR
        kube-vip-ds   1         1         0       1            0           <none>          60s   kube-vip     ghcr.io/kube-vip/kube-vip:v1.2.3   app=kube-vip
        === DaemonSet の desired/scheduled 確認 ===
        Desired: 1
        kube-vip DaemonSet が正常に作成されました
    sink.go:61: ������������| 11:05:59 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1mverify-daemonset-created�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 11:05:59 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 11:05:59 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 11:05:59 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCDApplication (application.yaml) の実適用 ==="
        kubectl apply --server-side --force-conflicts \
          -f "${REPO_ROOT}/argoproj/kube-vip/application.yaml"
        echo "ArgoCD Application リソース作成完了"
    sink.go:61: ������������| 11:05:59 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCDApplication (application.yaml) の実適用 ===
        application.argoproj.io/kube-vip serverside-applied
        ArgoCD Application リソース作成完了
        === STDERR
        Warning: metadata.finalizers: "resources-finalizer.argocd.argoproj.io": prefer a domain-qualified finalizer name including a path (/) to avoid accidental conflicts with other finalizer writers
    sink.go:61: ������������| 11:05:59 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1mapply-application-yaml  �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 11:05:59 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 11:05:59 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 11:05:59 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-golden-buzzard
    sink.go:61: ������������| 11:06:05 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/kube-vip-dynamic-validation (5.51s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

- chainsaw.yaml自身をpathsトリガーに追加(ワークフローのみ変更するPRでもCIが実行されるよう対応)
- kube-vip chainsaw-testのdesiredNumberScheduled検証を強化(0または未設定の場合にexitするよう修正)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

ArgoCD Diff Result

Auth path: tailscale

アプリケーション: argocd の差分

パス: argoproj/argocd

===== rbac.authorization.k8s.io/RoleBinding argocd/argocd-application-controller ======
56a57
>   namespace: argocd

===== rbac.authorization.k8s.io/RoleBinding argocd/argocd-applicationset-controller ======
56a57
>   namespace: argocd

===== rbac.authorization.k8s.io/RoleBinding argocd/argocd-dex-server ======
56a57
>   namespace: argocd

===== rbac.authorization.k8s.io/RoleBinding argocd/argocd-notifications-controller ======
56a57
>   namespace: argocd

===== rbac.authorization.k8s.io/RoleBinding argocd/argocd-redis ======
49a50
>   namespace: argocd

===== rbac.authorization.k8s.io/RoleBinding argocd/argocd-server ======
56a57
>   namespace: argocd
ℹ️ 上記の差分が見つかりました

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Chainsaw Manifest Validation

✅ 全テスト通過

テスト対象コンポーネント: ["argocd", "external-secrets-operator", "kube-vip"]

📦 argocd

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/argocd]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- argocd-dynamic-validation (./tests/chainsaw/argocd)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/argocd-dynamic-validation
=== PAUSE chainsaw/argocd-dynamic-validation
=== CONT  chainsaw/argocd-dynamic-validation
    sink.go:61: ������������| 13:23:22 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-epic-quagga
    sink.go:61: ������������| 13:23:22 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 13:23:22 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD コア Deployment の起動待機 ==="
        for DEPLOY in argocd-server argocd-repo-server argocd-dex-server argocd-notifications-controller argocd-applicationset-controller argocd-redis; do
          echo "Waiting for deployment/$DEPLOY ..."
          kubectl wait deployment/$DEPLOY \
            -n argocd \
            --for=condition=Available \
            --timeout=300s
        done
        
        echo "=== ArgoCD ApplicationController (StatefulSet) の起動待機 ==="
        kubectl rollout status statefulset/argocd-application-controller -n argocd --timeout=300s
        
        echo "=== 実行中の Pod 確認 ==="
        kubectl get pods -n argocd
        echo "ArgoCD 動的検証: 全コアコンポーネント Available"
    sink.go:61: ������������| 13:24:02 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD コア Deployment の起動待機 ===
        Waiting for deployment/argocd-server ...
        deployment.apps/argocd-server condition met
        Waiting for deployment/argocd-repo-server ...
        deployment.apps/argocd-repo-server condition met
        Waiting for deployment/argocd-dex-server ...
        deployment.apps/argocd-dex-server condition met
        Waiting for deployment/argocd-notifications-controller ...
        deployment.apps/argocd-notifications-controller condition met
        Waiting for deployment/argocd-applicationset-controller ...
        deployment.apps/argocd-applicationset-controller condition met
        Waiting for deployment/argocd-redis ...
        deployment.apps/argocd-redis condition met
        === ArgoCD ApplicationController (StatefulSet) の起動待機 ===
        partitioned roll out complete: 1 new pods have been updated...
        === 実行中の Pod 確認 ===
        NAME                                                READY   STATUS                       RESTARTS   AGE
        argocd-application-controller-0                     1/1     Running                      0          41s
        argocd-applicationset-controller-59b85c945c-pjjml   1/1     Running                      0          42s
        argocd-dex-server-7bb57f7bdd-7jk74                  1/1     Running                      0          42s
        argocd-notifications-controller-6649448fc9-fkfb6    1/1     Running                      0          42s
        argocd-redis-789b7d6769-wn4fx                       1/1     Running                      0          42s
        argocd-repo-server-bdf78b574-sprlp                  1/1     Running                      0          41s
        argocd-server-699496df6b-42nng                      1/1     Running                      0          41s
        cloudflared-76fc4b49b7-8trvh                        0/1     CreateContainerConfigError   0          41s
        cloudflared-api-6c5d5744c6-llcg5                    0/1     CreateContainerConfigError   0          41s
        ArgoCD 動的検証: 全コアコンポーネント Available
    sink.go:61: ������������| 13:24:02 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1mwait-for-argocd-ready      �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 13:24:02 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mwait-for-argocd-ready      �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 13:24:02 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mapply-argocd-application-cr�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 13:24:02 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mapply-argocd-application-cr�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCD Application CR (application.yaml) の実適用 ==="
        kubectl apply --server-side --force-conflicts \
          -f "${REPO_ROOT}/argoproj/argocd/application.yaml"
        echo "ArgoCD Application CR 作成完了"
    sink.go:61: ������������| 13:24:02 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mapply-argocd-application-cr�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCD Application CR (application.yaml) の実適用 ===
        application.argoproj.io/argocd serverside-applied
        ArgoCD Application CR 作成完了
    sink.go:61: ������������| 13:24:02 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1mapply-argocd-application-cr�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 13:24:02 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1mapply-argocd-application-cr�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 13:24:02 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 13:24:02 | �[32;1margocd-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-epic-quagga
    sink.go:61: ������������| 13:24:07 | �[36;1margocd-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/argocd-dynamic-validation (45.42s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

📦 external-secrets-operator

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/external-secrets-operator]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- external-secrets-operator-dynamic-validation (./tests/chainsaw/external-secrets-operator)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/external-secrets-operator-dynamic-validation
=== PAUSE chainsaw/external-secrets-operator-dynamic-validation
=== CONT  chainsaw/external-secrets-operator-dynamic-validation
    sink.go:61: ������������| 13:24:07 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-saving-glowworm
    sink.go:61: ������������| 13:24:07 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 13:24:07 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ESO Deployment の起動待機 ==="
        kubectl wait deployment \
          -n external-secrets \
          --all \
          --for=condition=Available \
          --timeout=120s
        
        echo "=== 実行中の Pod 確認 ==="
        kubectl get pods -n external-secrets
        echo "ESO 動的検証: オペレーター Available"
    sink.go:61: ������������| 13:24:08 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ESO Deployment の起動待機 ===
        deployment.apps/external-secrets condition met
        deployment.apps/external-secrets-cert-controller condition met
        deployment.apps/external-secrets-webhook condition met
        === 実行中の Pod 確認 ===
        NAME                                                READY   STATUS    RESTARTS   AGE
        external-secrets-6566c4cfdd-5gvnc                   1/1     Running   0          86s
        external-secrets-cert-controller-86794c66b7-ps4jk   1/1     Running   0          86s
        external-secrets-webhook-574788fc77-8p5sj           1/1     Running   0          86s
        ESO 動的検証: オペレーター Available
    sink.go:61: ������������| 13:24:08 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1mwait-for-eso-ready         �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 13:24:08 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mwait-for-eso-ready         �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 13:24:08 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 13:24:08 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ClusterSecretStore の存在確認 ==="
        kubectl get clustersecretstore parameterstore -o yaml
        echo "ClusterSecretStore 動的検証: リソース作成確認"
        
        echo "=== ESO Application yaml の実適用 ==="
        kubectl apply --server-side --force-conflicts \
          -f "${REPO_ROOT}/argoproj/external-secrets-operator/application.yaml"
        echo "ArgoCD Application リソース作成完了"
    sink.go:61: ������������| 13:24:08 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ClusterSecretStore の存在確認 ===
        apiVersion: external-secrets.io/v1
        kind: ClusterSecretStore
        metadata:
          creationTimestamp: "2026-09-08T13:23:21Z"
          generation: 1
          name: parameterstore
          resourceVersion: "874"
          uid: d88a9391-0c9e-4b11-8d5a-bc3356306b15
        spec:
          provider:
            aws:
              auth:
                secretRef:
                  accessKeyIDSecretRef:
                    key: access-key
                    name: awssm-secret
                    namespace: external-secrets
                  secretAccessKeySecretRef:
                    key: secret-access-key
                    name: awssm-secret
                    namespace: external-secrets
              region: ap-northeast-1
              role: arn:aws:iam::839695154978:role/external_secrets_role
              service: ParameterStore
        status:
          conditions:
          - lastTransitionTime: "2026-09-08T13:23:21Z"
            message: unable to create client
            reason: InvalidProviderConfig
            status: "False"
            type: Ready
        ClusterSecretStore 動的検証: リソース作成確認
        === ESO Application yaml の実適用 ===
        application.argoproj.io/external-secrets serverside-applied
        ArgoCD Application リソース作成完了
    sink.go:61: ������������| 13:24:08 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1mverify-cluster-secret-store�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 13:24:08 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1mverify-cluster-secret-store�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 13:24:08 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 13:24:08 | �[32;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[32;1m@chainsaw                  �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-saving-glowworm
    sink.go:61: ������������| 13:24:13 | �[36;1mexternal-secrets-operator-dynamic-validation�[0;22m | �[36;1m@chainsaw                  �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/external-secrets-operator-dynamic-validation (5.78s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

📦 kube-vip

PASSED

テスト出力を展開
Version: 0.2.15
Loading default configuration...
- Using test file: chainsaw-test
- TestDirs [./tests/chainsaw/kube-vip]
- Quiet false
- SkipDelete false
- FailFast false
- Namespace ''
- FastNamespaceDeletion false
- FullName false
- IncludeTestRegex ''
- ExcludeTestRegex ''
- ApplyTimeout 5s
- AssertTimeout 30s
- CleanupTimeout 30s
- DeleteTimeout 15s
- ErrorTimeout 30s
- ExecTimeout 5s
- DeletionPropagationPolicy Background
- Template true
- NoCluster false
- PauseOnFailure false
Loading tests...
- kube-vip-dynamic-validation (./tests/chainsaw/kube-vip)
Loading values...
Running tests...
=== RUN   chainsaw
=== PAUSE chainsaw
=== CONT  chainsaw
=== RUN   chainsaw/kube-vip-dynamic-validation
=== PAUSE chainsaw/kube-vip-dynamic-validation
=== CONT  chainsaw/kube-vip-dynamic-validation
    sink.go:61: ������������| 13:24:13 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mCREATE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-usable-flea
    sink.go:61: ������������| 13:24:13 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 13:24:13 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== DaemonSet の存在確認 ==="
        kubectl get daemonset kube-vip-ds -n kube-system -o wide
        
        echo "=== DaemonSet の desired/scheduled 確認 ==="
        DESIRED=$(kubectl get daemonset kube-vip-ds -n kube-system -o jsonpath='{.status.desiredNumberScheduled}')
        echo "Desired: $DESIRED"
        if [ -z "$DESIRED" ] || [ "$DESIRED" -le 0 ]; then
          echo "ERROR: desiredNumberScheduled が 0 または未設定です。DaemonSet がスケジュール可能ではありません。"
          exit 1
        fi
        echo "kube-vip DaemonSet が正常に作成されました(desiredNumberScheduled=$DESIRED)"
    sink.go:61: ������������| 13:24:13 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === DaemonSet の存在確認 ===
        NAME          DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE   CONTAINERS   IMAGES                             SELECTOR
        kube-vip-ds   1         1         0       1            0           <none>          51s   kube-vip     ghcr.io/kube-vip/kube-vip:v1.2.3   app=kube-vip
        === DaemonSet の desired/scheduled 確認 ===
        Desired: 1
        kube-vip DaemonSet が正常に作成されました(desiredNumberScheduled=1)
    sink.go:61: ������������| 13:24:13 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1mverify-daemonset-created�[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 13:24:13 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mverify-daemonset-created�[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 13:24:13 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 13:24:13 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mCMD�[0;22m       | �[36;1mRUN�[0;22m   |
        === COMMAND
        /usr/bin/sh -c set -e
        echo "=== ArgoCDApplication (application.yaml) の実適用 ==="
        kubectl apply --server-side --force-conflicts \
          -f "${REPO_ROOT}/argoproj/kube-vip/application.yaml"
        echo "ArgoCD Application リソース作成完了"
    sink.go:61: ������������| 13:24:14 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mSCRIPT�[0;22m    | �[36;1mLOG�[0;22m   |
        === STDOUT
        === ArgoCDApplication (application.yaml) の実適用 ===
        application.argoproj.io/kube-vip serverside-applied
        ArgoCD Application リソース作成完了
        === STDERR
        Warning: metadata.finalizers: "resources-finalizer.argocd.argoproj.io": prefer a domain-qualified finalizer name including a path (/) to avoid accidental conflicts with other finalizer writers
    sink.go:61: ������������| 13:24:14 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1mapply-application-yaml  �[0;22m | �[32;1mSCRIPT�[0;22m    | �[32;1mDONE�[0;22m  |
    sink.go:61: ������������| 13:24:14 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1mapply-application-yaml  �[0;22m | �[36;1mTRY�[0;22m       | �[36;1mEND�[0;22m   |
    sink.go:61: ������������| 13:24:14 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mBEGIN�[0;22m |
    sink.go:61: ������������| 13:24:14 | �[32;1mkube-vip-dynamic-validation�[0;22m | �[32;1m@chainsaw               �[0;22m | �[32;1mDELETE�[0;22m    | �[32;1mOK�[0;22m    | v1/Namespace @ chainsaw-usable-flea
    sink.go:61: ������������| 13:24:19 | �[36;1mkube-vip-dynamic-validation�[0;22m | �[36;1m@chainsaw               �[0;22m | �[36;1mCLEANUP�[0;22m   | �[36;1mEND�[0;22m   |
--- PASS: chainsaw (0.00s)
    --- PASS: chainsaw/kube-vip-dynamic-validation (5.43s)
PASS
Tests Summary...
- Passed  tests 1
- Failed  tests 0
- Skipped tests 0
Done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant