เจนเฉเจฒเฉ! เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจธเจผเจพเจเจพ (เจเจฐเจซเจผ เจคเฉเจจเจพเจค เจชเฉเจฐเฉเจตเจฟเจ, เจฐเฉเจตเจฟเจ เจเจช) - เจเจน เจเจฆเฉเจ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเจฆเฉเจ เจจเจพ เจธเจฟเจฐเจซเจผ เจฎเจพเจธเจเจฐ เจฌเฉเจฐเจพเจเจ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจธเจเฉเจ เจนเจฐ เจเฉฑเจ เจตเจฟเจฒเฉฑเจเจฃ URL เจฒเจ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉ เจตเฉ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจคเฉเจธเฉเจ เจเจพเจเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ เจเจฟ เจเฉ เจเฉเจก เจเจคเจชเจพเจฆเจจ เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ; เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจฆเฉเจเฉ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฐเจพเจ เจเจพเจ เจเจคเจชเจพเจฆ เจฎเจพเจนเจฐเจพเจ เจจเฉเฉฐ เจฆเจฟเจเจพเจ เจเจพ เจธเจเจฆเฉ เจนเฉเฅค เจเจฆเฉเจ เจคเฉเจธเฉเจ เจเฉฑเจ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉ เจตเจฟเฉฑเจ เจเฉฐเจฎ เจเจฐ เจฐเจนเฉ เจนเฉ, เจคเจพเจ เจชเฉเจฐเจพเจฃเฉ เจเฉเจก เจฒเจ เจนเจฐเฉเจ เจจเจตเฉเจ เจเจฎเจฟเจ เจฎเฉเจเฉเจฆเจพ เจคเฉเจจเจพเจคเฉ เจจเฉเฉฐ เจฎเจฟเจเจพ เจฆเจฟเฉฑเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจจเจตเฉเจ เจเฉเจก เจฒเจ เจจเจตเฉเจ เจคเฉเจจเจพเจคเฉ เจฐเฉเจฒ เจเจเจ เจนเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจเจฆเฉเจ เจคเฉเจธเฉเจ เจฎเจพเจธเจเจฐ เจฌเฉเจฐเจพเจเจ เจตเจฟเฉฑเจ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉ เจจเฉเฉฐ เจฎเจฟเจฒเจพเจเจเจฆเฉ เจนเฉ เจคเจพเจ เจธเจตเจพเจฒ เจชเฉเจฆเจพ เจนเฉ เจธเจเจฆเฉ เจนเจจเฅค เจคเฉเจนเจพเจจเฉเฉฐ เจนเฉเจฃ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจธเจผเจพเจเจพ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉ, เจชเจฐ เจเฉเจฌเจฐเจจเฉเจเจธ เจธเจฐเฉเจค เจ เจเฉ เจตเฉ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจนเจจเฅค
เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจธเจผเจพเจเจพเจตเจพเจ เจฌเจพเจฐเฉ เจนเฉเจฐ
เจเฉเจฌเจฐเจจเฉเจเจธ เจตเจฟเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจธเจผเจพเจเจพเจตเจพเจ เจฌเจฃเจพเจเจฃ เจฆเจพ เจเฉฑเจ เจคเจฐเฉเจเจพ เจนเฉ เจจเจพเจฎ-เจธเจฅเจพเจจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพเฅค เจธเฉฐเจเฉเจช เจตเจฟเฉฑเจ, เจเจคเจชเจพเจฆเจจ เจธเฉฐเจฐเจเจจเจพ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเฉ เจนเฉ:
kind: Namespace
apiVersion: v1
metadata:
name: habr-back-end
...
kind: Deployment
apiVersion: apps/v1
metadata:
namespace: habr-back-end
spec:
replicas: 3
...
เจเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจธเจผเจพเจเจพ เจฒเจ, เจเฉฑเจ เจจเฉเจฎเจธเจชเฉเจธ เจเจธเจฆเฉ เจชเจเจพเจฃเจเจฐเจคเจพ (เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉ เจจเฉฐเจฌเจฐ) เจ เจคเฉ เจเจฟเจธเฉ เจเจฟเจธเจฎ เจฆเจพ เจ เจเฉเจคเจฐ/เจชเฉเจธเจเจซเจฟเจเจธ (เจเจฆเจพเจนเจฐเจจ เจฒเจ, -เจชเฉเจเจฐ-):
kind: Namespace
apiVersion: v1
metadata:
name: habr-back-end-pr-17
...
kind: Deployment
apiVersion: apps/v1
metadata:
namespace: habr-back-end-pr-17
spec:
replicas: 1
...
เจเจฎ เจคเฉเจฐ 'เจคเฉ, เจฎเฉเจ เจฒเจฟเจเจฟเจ เจเฉเจฌเจฐเจจเฉเจเจธ เจเจชเจฐเฉเจเจฐ (เจเฉฑเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจเจฟเจธเจฆเฉ เจเจฒเฉฑเจธเจเจฐ เจธเจฐเฉเจคเจพเจ เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจนเฉ),
$ kubectl get pods --all-namespaces | grep -e "-pr-"
NAMESPACE ... AGE
habr-back-end-pr-264 ... 4d8h
habr-back-end-pr-265 ... 5d7h
เจคเฉเจธเฉเจ เจเจธ เจฌเจพเจฐเฉ เจชเฉเฉเจน เจธเจเจฆเฉ เจนเฉ เจเจฟ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจธเจผเจพเจเจพเจตเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจเจฟเจตเฉเจ เจฒเจพเจเฉ เจเจฐเจจเจพ เจนเฉ
เจชเฉเจฐเฉเจฐเจฃเจพ
เจเจฒเฉ เจจเจฟเจฐเฉฐเจคเจฐ เจเจเฉเจเจฐเจฃ (continuous integration
):
- เจ เจธเฉเจ เจฌเฉเจฐเจพเจเจ เจฒเจ เจเฉฑเจ เจจเจตเฉเจ เจตเจเจจเจฌเฉฑเจงเจคเจพ เจจเฉเฉฐ เจงเฉฑเจเจฆเฉ เจนเจพเจ.
- เจฌเจฟเจฒเจก 'เจคเฉ, เจฒเจฟเฉฐเจเจฐ เจ เจคเฉ/เจเจพเจ เจเฉเจธเจ เจเจฒเจพเจ เจเจพเจเจฆเฉ เจนเจจเฅค
- เจเฉเจฌเจฐเจจเฉเจเจธ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉ เจธเฉฐเจฐเจเจจเจพ เจซเจฒเจพเจ 'เจคเฉ เจคเจฟเจเจฐ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ (เจเจฆเจพเจนเจฐเจฃ เจฒเจ, เจเจธเจฆเจพ เจจเฉฐเจฌเจฐ เจคเจฟเจเจฐ เจเฉเจฎเจชเจฒเฉเจ เจตเจฟเฉฑเจ เจชเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ)เฅค
- kubectl apply เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ, เจธเฉฐเจฐเจเจจเจพ เจจเฉเฉฐ เจเจฒเฉฑเจธเจเจฐ (เจกเจฟเจชเจฒเจพเจ) เจตเจฟเฉฑเจ เจเฉเฉเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค
- เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉ เจจเฉเฉฐ เจฎเจพเจธเจเจฐ เจฌเฉเจฐเจพเจเจ เจตเจฟเฉฑเจ เจฎเจฟเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉเฅค
เจเจฆเฉเจ เจคเฉเจธเฉเจ เจเฉฑเจ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉ เจตเจฟเฉฑเจ เจเฉฐเจฎ เจเจฐ เจฐเจนเฉ เจนเฉ, เจคเจพเจ เจชเฉเจฐเจพเจฃเฉ เจเฉเจก เจฒเจ เจนเจฐเฉเจ เจจเจตเฉเจ เจเจฎเจฟเจ เจฎเฉเจเฉเจฆเจพ เจคเฉเจจเจพเจคเฉ เจจเฉเฉฐ เจฎเจฟเจเจพ เจฆเจฟเฉฑเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจจเจตเฉเจ เจเฉเจก เจฒเจ เจจเจตเฉเจ เจคเฉเจจเจพเจคเฉ เจฐเฉเจฒ เจเจเจ เจนเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจชเจฐ เจเจฆเฉเจ เจเฉฑเจ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉ เจจเฉเฉฐ เจฎเจพเจธเจเจฐ เจฌเฉเจฐเจพเจเจ เจตเจฟเฉฑเจ เจฎเจฟเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ, เจคเจพเจ เจธเจฟเจฐเจซเจผ เจฎเจพเจธเจเจฐ เจฌเฉเจฐเจพเจเจ เจนเฉ เจฌเจฃเจพเจ เจเจพเจตเฉเจเฉเฅค เจจเจคเฉเจเฉ เจตเจเฉเจ, เจเจน เจชเจคเจพ เจเจฒเจฆเจพ เจนเฉ เจเจฟ เจ เจธเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉ เจฌเจพเจฐเฉ เจญเฉเฉฑเจฒ เจเจ เจนเจพเจ, เจ เจคเฉ เจเจธเจฆเฉ เจเฉเจฌเจฐเจจเฉเจเจธ เจธเจฐเฉเจค เจ เจเฉ เจตเฉ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจนเจจเฅค
เจเจฟเจตเฉเจ เจตเจฐเจคเจฃเจพ เจนเฉ
เจนเฉเจ เจฆเจฟเฉฑเจคเฉ เจเจฎเจพเจเจก เจจเจพเจฒ เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเฉ:
$ kubectl apply -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/configs/production.yml
เจนเฉเจ เจฆเจฟเฉฑเจคเฉ เจธเจฎเฉฑเจเจฐเฉ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจซเจพเจเจฒ เจฌเจฃเจพเจ เจ
เจคเฉ เจฆเฉเจเจฐเจพ เจธเจฅเจพเจชเจฟเจค เจเจฐเฉ kubectl apply -f
:
apiVersion: feature-branch.dmytrostriletskyi.com/v1
kind: StaleFeatureBranch
metadata:
name: stale-feature-branch
spec:
namespaceSubstring: -pr-
afterDaysWithoutDeploy: 3
เจชเฉเจฐเจพเจฎเฉเจเจฐ เจจเฉเจฎเจธเจชเฉเจธ เจธเจฌเจธเจเฉเจฐเจฟเฉฐเจ เจนเฉเจฐ เจจเฉเจฎเจธเจชเฉเจธเจพเจ เจคเฉเจ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉเจเจ เจฒเจ เจจเฉเจฎเจธเจชเฉเจธ เจซเจฟเจฒเจเจฐ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเฉเจเจฐ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจจเจพเจฎ-เจธเจฅเจพเจจเจพเจ เจนเจจ: habr-back-end
, habr-front-end
, habr-back-end-pr-17
, habr-back-end-pr-33
, เจซเจฟเจฐ เจนเจเจพเจเจฃ เจฒเจ เจเจฎเฉเจฆเจตเจพเจฐ เจนเฉเจฃเจเฉ habr-back-end-pr-17
, habr-back-end-pr-33
.
เจชเฉเจฐเจพเจฎเฉเจเจฐ afterDaysWithoutDeploy เจชเฉเจฐเจพเจฃเฉ เจจเฉเจฎเจธเจชเฉเจธ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเฉเจเจฐ เจจเฉเจฎเจธเจชเฉเจธ เจฌเจฃเจพเจเจ เจเจฟเจ เจนเฉ 3 ะดะฝั 1 ัะฐั
เจตเจพเจชเจธ, เจ
เจคเฉ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจฆเจฐเจธเจพเจเจเจฆเจพ เจนเฉ 3 ะดะฝั
, เจเจธ เจจเฉเจฎเจธเจชเฉเจธ เจจเฉเฉฐ เจฎเจฟเจเจพ เจฆเจฟเฉฑเจคเจพ เจเจพเจตเฉเจเจพเฅค เจเจน เจเจฒเจ เจฆเจฟเจธเจผเจพ เจตเจฟเฉฑเจ เจตเฉ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ เจเฉเจเจฐ เจจเฉเจฎเจธเจชเฉเจธ เจฌเจฃเจพเจเจ เจเจฟเจ เจนเฉ 2 ะดะฝั 23 ัะฐัะฐ
เจตเจพเจชเจธ, เจ
เจคเฉ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจฆเจฐเจธเจพเจเจเจฆเจพ เจนเฉ 3 ะดะฝั
, เจเจธ เจจเฉเจฎเจธเจชเฉเจธ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจ เจจเจนเฉเจ เจเจพเจตเฉเจเจพเฅค
เจเฉฑเจ เจนเฉเจฐ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจนเฉ, เจเจน เจเจธ เจฒเจ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐ เจนเฉ เจเจฟ เจเจฟเฉฐเจจเฉ เจตเจพเจฐ เจธเจพเจฐเฉ เจจเจพเจฎ-เจธเจฅเจพเจจเจพเจ เจจเฉเฉฐ เจธเจเฉเจจ เจเจฐเจจเจพ เจนเฉ เจ
เจคเฉ เจฌเจฟเจจเจพเจ เจคเฉเจจเจพเจคเฉ เจฆเฉ เจฆเจฟเจจเจพเจ เจฆเฉ เจเจพเจเจ เจเจฐเจจเฉ เจนเฉ - เจนเจฐ เจฎเจฟเฉฐเจ เจฆเฉ เจเจพเจเจ เจเจฐเฉ. เจฎเฉเจฒ เจฐเฉเจช เจตเจฟเฉฑเจ เจเจน เจฌเจฐเจพเจฌเจฐ เจนเฉ 30 ะผะธะฝััะฐะผ
.
เจเจน เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ
เจ เจญเจฟเจเจธ เจตเจฟเฉฑเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจฒเฉเฉ เจนเฉเจตเฉเจเฉ:
เจกเฉเจเจฐ เจเฉฑเจ เจ เจฒเฉฑเจ-เจฅเจฒเฉฑเจ เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจ เจเฉฐเจฎ เจเจฐเจจ เจฒเจเฅคเจฎเจฟเจจเฉเจเฉเจฌเฉ เจธเจฅเจพเจจเจ เจคเฉเจฐ 'เจคเฉ เจเฉเจฌเจฐเจจเฉเจเจธ เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจตเจงเจพเจเจเจพเฅคkubectl - เจเจฒเฉฑเจธเจเจฐ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฒเจ เจเจฎเจพเจเจก เจฒเจพเจเจจ เจเฉฐเจเจฐเจซเฉเจธเฅค
เจ เจธเฉเจ เจธเจฅเจพเจจเจ เจคเฉเจฐ 'เจคเฉ เจเฉเจฌเจฐเจจเฉเจเจธ เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจตเจงเจพเจเจเจฆเฉ เจนเจพเจ:
$ minikube start --vm-driver=docker
minikube v1.11.0 on Darwin 10.15.5
Using the docker driver based on existing profile.
Starting control plane node minikube in cluster minikube.
เจธเฉฐเจเฉเจค kubectl
เจฎเฉเจฒ เจฐเฉเจช เจตเจฟเฉฑเจ เจธเจฅเจพเจจเจ เจเจฒเฉฑเจธเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉ:
$ kubectl config use-context minikube
Switched to context "minikube".
เจเจคเจชเจพเจฆเจจ เจตเจพเจคเจพเจตเจฐเจฃ เจฒเจ เจธเฉฐเจฐเจเจจเจพ เจกเจพเจเจจเจฒเฉเจก เจเจฐเฉ:
$ curl https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/configs/production.yml > stale-feature-branch-production-configs.yml
เจเจฟเจเจเจเจฟ เจชเฉเจฐเฉเจกเจเจธเจผเจจ เจเฉเจเจซเจฟเจเจฐเฉเจธเจผเจจเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจพเจฃเฉ เจจเจพเจฎ-เจธเจฅเจพเจจเจพเจ เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจฒเจ เจธเฉฐเจฐเจเจฟเจค เจเฉเจคเจพ เจเจฟเจ เจนเฉ, เจ
เจคเฉ เจธเจพเจกเฉ เจจเจตเฉเจ เจฌเจฃเฉ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจเจน เจจเจนเฉเจ เจนเจจ, เจ
เจธเฉเจ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒ เจจเฉเฉฐ เจฌเจฆเจฒ เจฆเฉเจตเจพเจเจเฉ IS_DEBUG
'เจคเฉ true
. เจเจธ เจฎเฉเฉฑเจฒ เจฆเฉ เจจเจพเจฒ เจชเฉเจฐเจพเจฎเฉเจเจฐ afterDaysWithoutDeploy
เจจเฉเฉฐ เจงเจฟเจเจจ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจฐเฉฑเจเจฟเจ เจเจพเจเจฆเจพ เจนเฉ เจ
เจคเฉ เจจเจพเจฎ-เจธเจฅเจพเจจเจพเจ เจฆเฉ เจคเฉเจจเจพเจคเฉ เจเฉเจคเฉ เจฌเจฟเจจเจพเจ เจฆเจฟเจจเจพเจ เจฒเจ เจเจพเจเจ เจจเจนเฉเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ, เจธเจฟเจฐเจซเจผ เจธเจฌเจธเจเฉเจฐเจฟเฉฐเจ เจฆเฉ เจฎเฉเจเฉเจฆเจเฉ เจฒเจ (-pr-
).
เจเฉเจเจฐ เจคเฉเจธเฉเจ 'เจคเฉ เจนเฉ Linux
:
$ sed -i 's|false|true|g' stale-feature-branch-production-configs.yml
เจเฉเจเจฐ เจคเฉเจธเฉเจ 'เจคเฉ เจนเฉ macOS
:
$ sed -i "" 's|false|true|g' stale-feature-branch-production-configs.yml
เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเจจเจพ:
$ kubectl apply -f stale-feature-branch-production-configs.yml
เจเจพเจเจ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ เจเจฟ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจเฉฑเจ เจธเจฐเฉเจค เจชเฉเจฐเจเจ เจนเฉเจเจ เจนเฉ StaleFeatureBranch
:
$ kubectl api-resources | grep stalefeaturebranches
NAME ... APIGROUP ... KIND
stalefeaturebranches ... feature-branch.dmytrostriletskyi.com ... StaleFeatureBranch
เจ เจธเฉเจ เจเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจ เจเจฟ เจเฉฑเจ เจเจชเจฐเฉเจเจฐ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจชเฉเจฐเจเจ เจนเฉเจเจ เจนเฉ:
$ kubectl get pods --namespace stale-feature-branch-operator
NAME ... STATUS ... AGE
stale-feature-branch-operator-6bfbfd4df8-m7sch ... Running ... 38s
เจเฉ เจคเฉเจธเฉเจ เจเจธเจฆเฉ เจฒเฉเจเจธ เจจเฉเฉฐ เจฆเฉเจเจฆเฉ เจนเฉ, เจคเจพเจ เจเจน เจธเจฐเฉเจคเจพเจ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจจ เจฒเจ เจคเจฟเจเจฐ เจนเฉ StaleFeatureBranch
:
$ kubectl logs stale-feature-branch-operator-6bfbfd4df8-m7sch -n stale-feature-branch-operator
... "msg":"Operator Version: 0.0.1"}
...
... "msg":"Starting EventSource", ... , "source":"kind source: /, Kind="}
... "msg":"Starting Controller", ...}
... "msg":"Starting workers", ..., "worker count":1}
เจ
เจธเฉเจ เจฐเฉเจกเฉเจฎเฉเจก เจเฉฐเจธเจเจพเจฒ เจเจฐเจฆเฉ เจนเจพเจ fixtures
(เจเจฒเฉฑเจธเจเจฐ เจธเจฐเฉเจคเจพเจ เจฆเฉ เจฎเจพเจกเจฒเจฟเฉฐเจ เจฒเจ เจคเจฟเจเจฐ-เจเฉเจคเฉ เจธเฉฐเจฐเจเจจเจพ) เจเฉฑเจ เจธเจฐเฉเจค เจฒเจ StaleFeatureBranch
:
$ kubectl apply -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/fixtures/stale-feature-branch.yml
เจธเฉฐเจฐเจเจจเจพ เจธเจฌเจธเจเจฐเจฟเฉฐเจ เจจเจพเจฒ เจจเฉเจฎเจธเจชเฉเจธ เจเฉเจเจฃ เจฒเจ เจฆเจฐเจธเจพเจเจเจฆเฉ เจนเฉ -pr-
เจเฉฑเจ เจตเจพเจฐ เจ
เฉฐเจฆเจฐ 1 ะผะธะฝััั
.:
apiVersion: feature-branch.dmytrostriletskyi.com/v1
kind: StaleFeatureBranch
metadata:
name: stale-feature-branch
spec:
namespaceSubstring: -pr-
afterDaysWithoutDeploy: 1
checkEveryMinutes: 1
เจเจชเจฐเฉเจเจฐ เจจเฉ เจเจตเจพเจฌ เจฆเจฟเฉฑเจคเจพ เจนเฉ เจ เจคเฉ เจจเจพเจฎ-เจธเจฅเจพเจจเจพเจ เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจฒเจ เจคเจฟเจเจฐ เจนเฉ:
$ kubectl logs stale-feature-branch-operator-6bfbfd4df8-m7sch -n stale-feature-branch-operator
... "msg":"Stale feature branch is being processing.","namespaceSubstring":"-pr-","afterDaysWithoutDeploy":1,"checkEveryMinutes":1,"isDebug":"true"}
เจธเจฅเจพเจชเจฟเจค เจเจฐเฉ fixtures
, เจเจฟเจธ เจตเจฟเฉฑเจ เจฆเฉ เจจเฉเจฎ-เจธเจชเฉเจธ (project-pr-1
, project-pr-2
) เจ
เจคเฉ เจเจน deployments
, services
, ingress
, เจเจคเจเจฆเจฟ:
$ kubectl apply -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/fixtures/first-feature-branch.yml -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/fixtures/second-feature-branch.yml
...
namespace/project-pr-1 created
deployment.apps/project-pr-1 created
service/project-pr-1 created
horizontalpodautoscaler.autoscaling/project-pr-1 created
secret/project-pr-1 created
configmap/project-pr-1 created
ingress.extensions/project-pr-1 created
namespace/project-pr-2 created
deployment.apps/project-pr-2 created
service/project-pr-2 created
horizontalpodautoscaler.autoscaling/project-pr-2 created
secret/project-pr-2 created
configmap/project-pr-2 created
ingress.extensions/project-pr-2 created
เจ เจธเฉเจ เจเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจ เจเจฟ เจเจชเจฐเฉเจเจค เจธเจพเจฐเฉ เจธเจฐเฉเจค เจธเจซเจฒเจคเจพเจชเฉเจฐเจตเจ เจฌเจฃเจพเจ เจเจ เจนเจจ:
$ kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-1 && kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-2
...
NAME ... READY ... STATUS ... AGE
pod/project-pr-1-848d5fdff6-rpmzw ... 1/1 ... Running ... 67s
NAME ... READY ... AVAILABLE ... AGE
deployment.apps/project-pr-1 ... 1/1 ... 1 ... 67s
...
เจเจฟเจเจเจเจฟ เจ
เจธเฉเจ เจธเจผเจพเจฎเจฒ เจเฉเจคเจพ เจนเฉ debug
, เจจเฉเจฎเจธเจชเฉเจธ project-pr-1
ะธ project-pr-2
, เจเจธเจฒเจ เจนเฉเจฐ เจธเจพเจฐเฉ เจธเจฐเฉเจคเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจจเฉเฉฐ เจงเจฟเจเจจ เจตเจฟเฉฑเจ เจฒเจ เจฌเจฟเจจเจพเจ เจคเฉเจฐเฉฐเจค เจฎเจฟเจเจพเจเจฃเจพ เจนเฉเจตเฉเจเจพ afterDaysWithoutDeploy
. เจเจธเจจเฉเฉฐ เจเจชเจฐเฉเจเจฐ เจฒเฉเจเจธ เจตเจฟเฉฑเจ เจฆเฉเจเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ:
$ kubectl logs stale-feature-branch-operator-6bfbfd4df8-m7sch -n stale-feature-branch-operator
... "msg":"Namespace should be deleted due to debug mode is enabled.","namespaceName":"project-pr-1"}
... "msg":"Namespace is being processing.","namespaceName":"project-pr-1","namespaceCreationTimestamp":"2020-06-16 18:43:58 +0300 EEST"}
... "msg":"Namespace has been deleted.","namespaceName":"project-pr-1"}
... "msg":"Namespace should be deleted due to debug mode is enabled.","namespaceName":"project-pr-2"}
... "msg":"Namespace is being processing.","namespaceName":"project-pr-2","namespaceCreationTimestamp":"2020-06-16 18:43:58 +0300 EEST"}
... "msg":"Namespace has been deleted.","namespaceName":"project-pr-2"}
เจเฉเจเจฐ เจคเฉเจธเฉเจ เจธเจฐเฉเจคเจพเจ เจฆเฉ เจเจชเจฒเจฌเจงเจคเจพ เจฆเฉ เจเจพเจเจ เจเจฐเจฆเฉ เจนเฉ, เจคเจพเจ เจเจน เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจนเฉเจฃเจเฉ Terminating
(เจฎเจฟเจเจพเจเจฃ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ) เจเจพเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจฎเจฟเจเจพเจเจ เจเจฟเจ (เจเจฎเจพเจเจก เจเจเจเจชเฉเฉฑเจ เจเจพเจฒเฉ เจนเฉ)เฅค
$ kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-1 && kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-2
...
เจคเฉเจธเฉเจ เจฐเจเจจเจพ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจฆเฉเจนเจฐเจพ เจธเจเจฆเฉ เจนเฉ fixtures
เจเจ เจตเจพเจฐ เจ
เจคเฉ เจฏเจเฉเจจเฉ เจฌเจฃเจพเจ เจเจฟ เจเจน เจเฉฑเจ เจฎเจฟเฉฐเจ เจฆเฉ เจ
เฉฐเจฆเจฐ เจนเจเจพ เจฆเจฟเฉฑเจคเฉ เจเจ เจนเจจเฅค
เจฌเจฆเจฒ
เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจเฉฐเจฎ เจเจฐเจจ เจตเจพเจฒเฉ เจเจชเจฐเฉเจเจฐ เจฆเฉ เจฌเจเจพเจ เจเฉ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ? เจเฉฑเจฅเฉ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจคเจฐเฉเจเฉ เจนเจจ, เจเจน เจธเจพเจฐเฉ เจ เจชเฉเจฐเจฃ เจนเจจ (เจ เจคเฉ เจเจนเจจเจพเจ เจฆเฉเจเจ เจเจฎเฉเจเจ เจตเจฟเจ เจเจคเฉเจเจค เจนเจจ), เจ เจคเฉ เจนเจฐ เจเฉเจ เจเจชเจฃเฉ เจฒเจ เจซเฉเจธเจฒเจพ เจเจฐเจฆเจพ เจนเฉ เจเจฟ เจเจฟเจธเฉ เจเจพเจธ เจชเฉเจฐเฉเจเฉเจเจ เจฒเจ เจธเจญ เจคเฉเจ เจตเจงเฉเจ เจเฉ เจนเฉ:
-
เจฎเจพเจธเจเจฐ เจฌเฉเจฐเจพเจเจ เจฆเฉ เจจเจฟเจฐเฉฐเจคเจฐ เจเจเฉเจเจฐเจฃ เจฆเฉ เจฆเฉเจฐเจพเจจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจธเจผเจพเจเจพ เจจเฉเฉฐ เจฎเจฟเจเจพเจเฅค
- เจ เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเจน เจเจพเจฃเจจ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจนเฉ เจเจฟ เจเจฟเจนเฉเฉ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉ เจเจธ เจชเฉเจฐเจคเฉเจฌเฉฑเจงเจคเจพ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเฉ เจเฉ เจฌเจฃเจพเจ เจเจพ เจฐเจนเฉ เจนเฉเฅค เจเจฟเจเจเจเจฟ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจธเจผเจพเจเจพ เจจเฉเจฎเจธเจชเฉเจธ เจตเจฟเฉฑเจ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉ เจชเจเจพเจฃเจเจฐเจคเจพ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉ - เจเจธเจฆเจพ เจจเฉฐเจฌเจฐ, เจเจพเจ เจธเจผเจพเจเจพ เจฆเจพ เจจเจพเจฎ, เจชเจเจพเจฃเจเจฐเจคเจพ เจจเฉเฉฐ เจนเจฎเฉเจธเจผเจพ เจเจฎเจฟเจ เจตเจฟเฉฑเจ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจเจพ เจนเฉเจตเฉเจเจพเฅค
- เจฎเจพเจธเจเจฐ เจฌเฉเจฐเจพเจเจ เจฌเจฟเจฒเจก เจซเฉเจฒ เจนเฉ เจฐเจนเฉ เจนเจจเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจคเฉเจนเจพเจกเฉ เจเฉเจฒ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจชเฉเจพเจ เจนเจจ: เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจกเจพเจเจจเจฒเฉเจก เจเจฐเฉ, เจเฉเจธเจ เจเจฒเจพเจ, เจชเฉเจฐเฉเจเฉเจเจ เจฌเจฃเจพเจ, เจฐเฉเจฒเฉเจเจผ เจเจฐเฉ, เจธเฉเจเจจเจพเจตเจพเจ เจญเฉเจเฉ, เจเจเจฐเฉ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉ เจฆเฉ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจธเจผเจพเจเจพ เจจเฉเฉฐ เจธเจพเจซเจผ เจเจฐเฉเฅค เจเฉเจเจฐ เจจเฉเจเฉเจซเจฟเจเฉเจธเจผเจจ เจญเฉเจเจฃ เจตเฉเจฒเฉ เจฌเจฟเจฒเจก เจซเฉเจฒ เจนเฉ เจเจพเจเจฆเจพ เจนเฉ, เจคเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจฒเฉฑเจธเจเจฐ เจฆเฉ เจธเจพเจฐเฉ เจธเจฐเฉเจคเจพเจ เจจเฉเฉฐ เจนเฉฑเจฅเฉเจ เจฎเจฟเจเจพเจเจฃเจพ เจนเฉเจตเฉเจเจพเฅค
- เจธเจนเฉ เจธเฉฐเจฆเจฐเจญ เจคเฉเจ เจฌเจฟเจจเจพเจ, เจฎเจพเจธเจเจฐ เจฌเจฟเจฒเจก เจตเจฟเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจธเจผเจพเจเจพเจตเจพเจ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจฃเจพ เจธเจชเฉฑเจธเจผเจ เจจเจนเฉเจ เจนเฉเฅค
-
เจตเฉเจฌเจนเฉเฉฑเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ (
เจเจฆเจพเจนเจฐเจจ ).- เจเจน เจคเฉเจนเจพเจกเฉ เจชเจนเฉเฉฐเจ เจจเจนเฉเจ เจนเฉ เจธเจเจฆเฉเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจตเจฟเฉฑเจ
เจเฉเจจเจเจฟเฉฐเจธ , เจเฉเจตเจฒ เจเฉฑเจ เจเจฟเจธเจฎ เจฆเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจธเจฐเฉเจค เจเฉเจก เจตเจฟเฉฑเจ เจเจธเจฆเฉเจเจ เจธเฉฐเจฐเจเจจเจพเจตเจพเจ เจจเฉเฉฐ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเจฐเจจ เจฆเฉ เจธเจฎเจฐเฉฑเจฅเจพ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจเจฐเจฆเฉ เจนเฉเฅค เจตเฉเจฌเจนเฉเฉฑเจเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจธเจฎเฉเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเจนเจจเจพเจ 'เจคเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจจ เจฒเจ เจเจชเจฃเฉ เจเฉเจฆ เจฆเฉ เจธเจเฉเจฐเจฟเจชเจ เจฒเจฟเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจเจธ เจธเจเฉเจฐเจฟเจชเจ เจจเฉเฉฐ เจเฉเจจเจเจฟเฉฐเจธ เจเฉฐเจเจฐเจซเฉเจธ เจตเจฟเฉฑเจ เจฐเฉฑเจเจฃเจพ เจนเฉเจตเฉเจเจพ, เจเจฟเจธ เจจเฉเฉฐ เจเจพเจเจฎ เจฐเฉฑเจเจฃเจพ เจฎเฉเจธเจผเจเจฒ เจนเฉเฅค
- เจเจน เจคเฉเจนเจพเจกเฉ เจชเจนเฉเฉฐเจ เจจเจนเฉเจ เจนเฉ เจธเจเจฆเฉเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจตเจฟเฉฑเจ
-
เจฒเจฟเจเฉ
เจเฉเจฐเฉเจจเจเฉเจฌ เจ เจคเฉ เจเฉเจฌเจฐเจจเฉเจเจธ เจเจฒเฉฑเจธเจเจฐ เจธเจผเจพเจฎเจฒ เจเจฐเฉเฅค- เจฒเจฟเจเจฃ เจ เจคเฉ เจธเจนเจพเจเจคเจพ 'เจคเฉ เจธเจฎเจพเจ เจฌเจฟเจคเจพเจเจฃเจพ.
- เจเจชเจฐเฉเจเจฐ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเฉฑเจ เจธเจฎเจพเจจ เจธเจผเฉเจฒเฉ เจตเจฟเฉฑเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ, เจฆเจธเจคเจพเจตเฉเจเจผเฉ เจ เจคเฉ เจธเจฎเจฐเจฅเจฟเจค เจนเฉเฅค
เจฒเฉเจ เจตเฉฑเจฒ เจคเฉเจนเจพเจกเจพ เจงเจฟเจเจจ เจฆเฉเจฃ เจฒเจ เจคเฉเจนเจพเจกเจพ เจงเฉฐเจจเจตเจพเจฆเฅค
เจธเจฐเฉเจค: www.habr.com