함수

함수 (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 string
      • ValueFiles []string
      • Parameters []*v1alpha1.HelmParameter
      • Values string
      • FileParameters []*v1alpha1.HelmFileParameter
    • 메서드:
      • GetParameterValueByName(Name string) — Parameters 필드에서 이름으로 값 조회
      • GetFileParameterPathByName(Name string) — FileParameters 필드에서 이름으로 경로 조회
  • Kustomize *apiclient.KustomizeAppSpec — Kustomize 세부 정보
  • Directory *apiclient.DirectoryAppSpec — Directory 세부 정보

더 알아보기 (Learn more)

  • 템플릿 — 알림 메시지 템플릿에서 함수 사용.
  • 트리거 — 조건 평가에서 함수 사용.