함수
함수 (Functions)
알림 템플릿과 트리거에서 사용할 수 있는 내장 함수들이에요. 시간(time), 문자열(strings), sync, repo 관련 함수들을 제공하며, 시간 관련 함수는 argocd-notifications-controller 컨테이너에 설정된 로컬 타임존을 사용해요.
출처: 문서
본문
time
시간 관련 함수예요.
로컬 타임존 설정 (Configuring the local timezone)
time 함수는 알림 템플릿과 트리거 양쪽에서 사용할 수 있어요.
.Local()을 사용해 시간 값을 로컬 시간으로 변환할 때, Argo CD Notifications는 argocd-notifications-controller 컨테이너에 설정된 로컬 타임존을 사용해요.
argocd-notifications-controller 컨테이너에 TZ 환경 변수를 설정해 타임존을 구성할 수 있어요.
apiVersion: apps/v1
kind: Deployment
metadata:
name: argocd-notifications-controller
spec:
template:
spec:
containers:
- name: argocd-notifications-controller
env:
- name: TZ
value: Asia/Tokyo
예를 들어 알림 템플릿이 애플리케이션 타임스탬프를 설정된 로컬 타임존으로 포맷할 수 있어요.
{{ (call .time.Parse .app.status.operationState.startedAt).Local.Format "2006-01-02T15:04:05Z07:00" }}
time.Now() Time
Golang 내장 time.Now 함수를 실행해요. Golang Time 인스턴스를 반환해요.
time.Parse(val string) Time
지정된 문자열을 RFC3339 레이아웃으로 파싱해요. Golang Time 인스턴스를 반환해요.
시간 관련 상수.
Durations
time.Nanosecond = 1
time.Microsecond = 1000 * Nanosecond
time.Millisecond = 1000 * Microsecond
time.Second = 1000 * Millisecond
time.Minute = 60 * Second
time.Hour = 60 * Minute
Timestamps
시간 인스턴스를 문자열로 포맷할 때 사용해요(예: time.Now().Format(time.RFC3339)).
time.Layout = "01/02 03:04:05PM '06 -0700" // The reference time, in numerical order.
time.ANSIC = "Mon Jan _2 15:04:05 2006"
time.UnixDate = "Mon Jan _2 15:04:05 MST 2006"
time.RubyDate = "Mon Jan 02 15:04:05 -0700 2006"
time.RFC822 = "02 Jan 06 15:04 MST"
time.RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
time.RFC850 = "Monday, 02-Jan-06 15:04:05 MST"
time.RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST"
time.RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
time.RFC3339 = "2006-01-02T15:04:05Z07:00"
time.RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
time.Kitchen = "3:04PM"
// Handy time stamps.
time.Stamp = "Jan _2 15:04:05"
time.StampMilli = "Jan _2 15:04:05.000"
time.StampMicro = "Jan _2 15:04:05.000000"
time.StampNano = "Jan _2 15:04:05.000000000"
strings
문자열 관련 함수예요.
strings.ReplaceAll() string
Golang 내장 strings.ReplaceAll 함수를 실행해요.
strings.ToUpper() string
Golang 내장 strings.ToUpper 함수를 실행해요.
strings.ToLower() string
Golang 내장 strings.ToLower 함수를 실행해요.
sync
sync.GetInfoItem(app map, name string) string
Argo CD App sync 작업에 저장된 info 항목 값을 주어진 이름으로 반환해요.
repo
Application 소스 저장소에 대한 추가 정보를 제공하는 함수예요.
repo.RepoURLToHTTPS(url string) string
주어진 GIT URL을 HTTPS 형식으로 변환해요.
repo.FullNameByRepoURL(url string) string
저장소 URL 전체 이름((<owner>/<repoName>))을 반환해요. 현재 Github, GitLab, Bitbucket만 지원해요.
repo.QueryEscape(s string) string
QueryEscape는 문자열을 이스케이프해 URL 안에 안전하게 넣을 수 있게 해요.
예시:
/projects/{{ call .repo.QueryEscape (call .repo.FullNameByRepoURL .app.status.RepoURL) }}/merge_requests
repo.GetCommitMetadata(sha string) CommitMetadata
커밋 메타데이터를 반환해요. 커밋은 애플리케이션 소스 저장소에 속해야 해요. CommitMetadata 필드:
Message string— 커밋 메시지Author string— 커밋 작성자Date time.Time— 커밋 생성 날짜Tags []string— 연관된 태그
repo.GetAppDetails() AppDetail
애플리케이션 세부 정보를 반환해요. AppDetail 필드:
Type string— AppDetail 타입Helm HelmAppSpec— Helm 세부 정보- 필드:
Name stringValueFiles []stringParameters []*v1alpha1.HelmParameterValues stringFileParameters []*v1alpha1.HelmFileParameter
- 메서드:
GetParameterValueByName(Name string)— Parameters 필드에서 이름으로 값 조회GetFileParameterPathByName(Name string)— FileParameters 필드에서 이름으로 경로 조회
- 필드:
Kustomize *apiclient.KustomizeAppSpec— Kustomize 세부 정보Directory *apiclient.DirectoryAppSpec— Directory 세부 정보