Skip to content

v0.3.0

Latest

Choose a tag to compare

@archmagece archmagece released this 23 Sep 04:32

DVA v0.3.0

v0.3.0은 plan 선언의 재사용 범위와 native 실행의 안전한 경계를 넓히고, 실행 전 입력과
종료 상태를 더 엄격하게 확인합니다.

선언과 계획

  • **plan alias와 단일 부모 extends**를 지원합니다. alias는 대상 plan만 가리켜야 하며
    description 외의 필드와 함께 쓸 수 없습니다. alias 체인은 최대 10단계까지 허용하며, 순환·자기참조·미정의 참조와 깊이 초과는 거부됩니다.
    extends는 단일 부모와 최대 3단계만 허용하고, composes: plan에는 적용할 수 없습니다.
    자식은 scalar를 덮고 vars는 키별로 합치며, 같은 이름의 entries는 서비스 합집합이 아니라
    자식 선언으로 교체합니다.
  • stack 엔트리에 **optional·primary**를, native runner에 **post_build**를 추가했습니다.
    optional은 선언한 디렉터리가 없을 때 해당 엔트리만 plan에서 빼고, 다른 런타임 실패를 숨기지
    않습니다. primary는 대표 엔트리를 명시하며, post_build는 build 성공 뒤 같은 dir/env에서
    실행되고 실패하면 build도 실패합니다.
  • interaction hook의 plans: 필터가 지정한 plan에서만 hook을 실행합니다. 필터가 없으면 기존처럼
    모든 plan에 적용됩니다.
  • drift_ignore와 suggestions: {makefile, package_json}로 자동 탐지·제안 억제를 선언할 수
    있습니다. 선언됐지만 없는 파일이나 서비스를 참조하는 interaction은 억제 대상이 아닙니다.
  • interaction.destructive: true는 하위 명령에 상속되며, dva agent-deny install --scope project가
    해당 interaction의 deny 패턴을 투영합니다. 하위 명령은 destructive: false로 해제할 수
    있습니다.

실행 안전성

  • composition plan의 native readiness 대기는 health check의 가장 큰 ready_timeout(미지정 시
    30초)으로 제한됩니다. native 프로세스가 시작 직후 끝나면 PID와 log 경로를 포함해 빠르게
    실패하며, 무한 대기하지 않습니다.
  • required env_file 입력이 없거나 잘못됐을 때 dva run은 실행·--dry-run 미리보기·파괴적
    명령 확인보다 먼저 실패합니다. import/direct-child route도 명령 소유자의 입력만 판정합니다.
  • native process의 stop/down은 SIGTERM 뒤 최대 5초 동안 종료를 기다립니다. 취소·시간 초과
    또는 종료 실패에는 PID/log 파일을 남겨 살아 있는 프로세스를 새 실행이 덮어쓰지 않게 합니다.
  • config module/override 병합은 typed runner 설정을 필드 단위로 deep merge하여 native 환경과
    runner별 설정을 보존합니다.

CI profile 의존성

CI profile은 이미 ci.profiles.<name>.steps 배열로 선언합니다. depends_on은 profile이나
ci 아래가 아니라 각 step 항목에 둡니다.

ci:
  profiles:
    commit:
      steps:
        - name: test
          run: go test ./...
        - name: lint
          run: go vet ./...
          depends_on: [test]

이 구조에서 lint는 test가 성공한 뒤 실행됩니다. step 이름은 같은 profile 안에서 유일해야
하며 의존 대상도 그 profile의 step이어야 합니다.

확인할 점

  • alias/extends, optional native entry, destructive interaction을 쓰는 config는 먼저
    dva config validate로 확인하세요.
  • process 종료가 timeout으로 실패하면 PID/log를 지우거나 새 up을 시도하기 전에 해당 프로세스의
    실제 상태를 확인하세요.
  • 기존 CI profile 문법은 이 릴리스에서 새로 도입된 것이 아닙니다. 의존성을 추가할 때에는 위처럼
    step 아래에 배치하세요.