Team Foundation Server 2017 업데이트 1

Last Update: 2017-09-01

최신 업데이트를 보려면 릴리스 정보 페이지(영문)를 방문하세요.

릴리스 날짜: 2017년 3월 7일

Team Foundation Server 2017 업데이트 1의 릴리스를 발표하게 되어 기쁘게 생각합니다. 이 새 릴리스는 혁신적이고 향상된 최신 기능을 갖추고 있습니다. 요구 사항 정보는 Team Foundation Server 요구 사항 및 호환성 페이지에서 확인할 수 있습니다.

다운로드: Team Foundation Server 2017 업데이트 2017

다른 관련 다운로드에 대해 자세히 알아보려면 다운로드 페이지를 참조하세요.

TFS 2017 업데이트 1의 새로운 기능


알려진 문제


새로운 기능

보다 개인적인 환경

개인 설정된 컬렉션 홈페이지

이 릴리스에서는 가장 중요한 아티팩트에 쉽게 액세스할 수 있습니다. 새로 디자인한 컬렉션 페이지(그림 1)에는 관심 있는 프로젝트, 즐겨찾기, 작업 및 끌어오기 요청을 보여 주는 개인 설정 환경이 있습니다. 여기서 효율적으로 하루를 시작할 수 있습니다. 한 곳으로 이동하면 필요하고 관심 있는 모든 것을 빠르게 찾을 수 있습니다. 자세한 내용은 계정 허브 페이지를 참조하세요.

<img src="media/tfsrc1_18-2.png" "Redesigned collection page" width="650" height="376" style="border:2px solid Silver; display: block; margin: auto;">

(그림 1) 새로 디자인된 컬렉션 페이지

프로젝트에 ID가 지정됩니다.

이제 한 곳에서 프로젝트 개요를 확인할 수 있습니다. 새 프로젝트 페이지를 사용하면 쉽게 프로젝트 설명을 보고 편집하고, 멤버를 보거나 추가하고, 최신 활동을 확인할 수 있습니다. 새 프로젝트를 시작하고 TFS의 모든 기본 제공 DevOps 기능을 활용하기도 더 쉬워졌습니다.

버전 제어 기능 향상

리포지토리 관리자 사용 권한 변경

Git 리포지토리의 경우 관리자 사용 권한을 여러 가지 세부적인 사용 권한으로 나눴습니다. 그래서 누가 무슨 작업을 수행할 수 있는지 더 유연하게 결정할 수 있습니다. 예를 들어 계정의 모든 사용자가 새 리포지토리를 만들 수 있도록 허용할 수 있지만 리포지토리를 삭제하거나 리포지토리에 새 사용자를 추가하는 것은 허용하지 않을 수 있습니다. 새 사용 권한은 다음과 같습니다.

  • 권한 관리: 사용자 및 사용 권한 추가/제거
  • 만들기: 새 리포지토리 만들기
  • 삭제: 리포지토리 삭제
  • 이름 바꾸기: 리포지토리 이름 바꾸기
  • 정책 편집: 분기 정책 구성
  • 다른 사용자의 잠금 제거: 다른 사용자가 설정한 분기 잠금 제거

이러한 사용 권한은 프로젝트 또는 개별 리포지토리의 모든 리포지토리에 적용될 수 있습니다.

분기 정책 향상

정책 섹션(그림 2)에는 이제 필수 정책과 선택적 정책이 섹션으로 그룹화됩니다. 이를 통해 PR을 완료하는 데 필요한 정책을 명확하게 설명합니다. 또한 필수 섹션에는 필수 검토자가 요약되어 있으며, 모든 필수 검토자가 승인한 경우에만 통과한 것으로 표시됩니다.

<img src="media/tfsrc2_01.png" "Policies section" width="306" height="197" style="border:2px solid Silver; display: block; margin: auto;">

(그림 2) 정책 섹션

정책을 무시해야 하고 필요한 사용 권한이 있는 경우 완료 대화 상자에 새 환경이 표시됩니다(그림 3). 충족되지 않은 정책은 경고 메시지에 표시되며, 정책을 재정의하기 위한 옵트인에 대해 새로운 명시적 옵션이 표시됩니다. 재정의 옵션을 선택하면 재정의 및 완료 작업이 설정되어 PR을 완료하고 실패한 정책을 재정의합니다.

<img src="media/tfsrc2_02.png" "Complete dialog" width="421" height="412" style="border:2px solid Silver; display: block; margin: auto;">

(그림 3) 완료 대화 상자

필수 검토자 정책의 지원 파일 제외

특정 파일 경로에 필수 검토자를 지정하는 경우 이제 제외할 경로에 "!" 접두사를 사용하여 경로를 제외할 수 있습니다. 예를 들어 이 접두사를 사용하여 일반적으로 필요한 사인오프에서 docs 폴더를 제외할 수 있습니다(그림 4).

<img src="media/tfsrc1_31.png" "File exclusion support" width="823" height="103" style="border:2px solid Silver; display: block; margin: auto;">

(그림 4) 파일 제외 지원

리포지토리 가져오기

이제 GitHub, BitBucket, GitLab 또는 기타 위치에서 Git 리포지토리를 가져올 수 있습니다. 기존 또는 새로운 빈 리포지토리로 가져옵니다. 자세한 내용은 Git 리포지토리 가져오기를 참조하세요.

리포지토리를 만드는 동안 .gitignore 추가

새 Git 리포지토리를 만드는 동안 이제 .gitignore 파일을 추가하고 해당 리포지토리와 연결할 수 있습니다. .gitignore 파일은 커밋을 수행하는 동안 Git에서 무시할 파일을 지정합니다.

대화 상자를 통해 사용 가능한 많은 .gitignore 템플릿 중 하나를 선택할 수 있습니다(그림 5).

<img src="media/tfsrc1_26-2.png" "Add .gitignore during repo creation" width="400" height="260" style="border:2px solid Silver; display: block; margin: auto;">

(그림 5) 리포지토리를 만드는 동안 .gitignore 추가

Cherry-Pick 및 되돌리기

웹 포털에서 변경 내용을 이동하거나 취소하기 쉽도록 Cherry-Pick 및 되돌리기라는 두 가지 새로운 기능이 추가되었습니다.

Cherry-Pick 명령을 사용하면 끌어오기 요청을 통해 변경 내용을 여러 분기로 이동할 수 있습니다. 일반적인 사용 사례는 버그를 핫픽스해야 하지만 기본 줄에서도 수정해야 하는 경우입니다. 핫픽스 분기에 대한 수정이 포함된 끌어오기 요청을 만든 후 동일한 수정을 마스터 분기에 쉽게 Cherry-Pick할 수 있습니다. 자세한 내용은 Cherry-Pick을 사용하여 변경 내용 복사를 참조하세요.

완료된 PR의 변경 내용을 되돌릴 수 있습니다. 잘못된 변경 내용을 도입한 PR을 찾은 다음 __되돌리기__를 클릭하고 원치 않는 변경 내용을 취소하는 PR을 만드는 단계를 따릅니다. 자세한 내용은 Git을 사용하여 변경 내용 취소를 참조하세요.

구성 가능한 비교 분기

이제 비교 분기를 기본 분기가 아닌 다른 분기로 설정할 수 있습니다. 이 설정은 사용자 단위로 저장됩니다. 끌어오기 요청 및 분기 페이지에서 생성되는 새 분기는 비교 분기로 설정한 분기를 기반으로 합니다. 자세한 내용은 분기 관리를 참조하세요.

파일 또는 폴더 찾기

Team Services 프로젝트의 코드 허브를 사용하여 리포지토리에서 파일 또는 폴더를 빠르게 검색할 수 있습니다. 결과에는 현재 폴더의 항목과 리포지토리 전체의 파일 및 폴더가 차례로 나열됩니다.

Git 리포지토리에 대한 경로 컨트롤 상자(그림 6)로 이동한 다음 입력을 시작하여 찾고 있는 파일 또는 폴더에 대한 탐색 검색 환경을 시작합니다.

<img src="media/tfsrc1_04-2.png" "Find a file or folder" width="400" height="184" style="border:2px solid Silver; display: block; margin: auto;">

(그림 6) 파일 또는 폴더 찾기

리포지토리 삭제 확인

실수에 의한 리포지토리 삭제를 방지하기 위해 이제 삭제할 리포지토리의 이름을 입력하여 작업을 확인해야 합니다.

리포지토리 즐겨찾기

이제 자주 사용하는 리포지토리를 즐겨찾기에 추가할 수 있습니다. 리포지토리 선택기(그림 7)에는 모든 리포지토리즐겨찾기 탭이 표시됩니다. 즐겨찾기 목록에 리포지토리를 추가하려면 별표를 클릭합니다.

<img src="media/tfsrc1_05-2.png" "Repo favorites" width="171" height="171" style="border:2px solid Silver; display: block; margin: auto;">

(그림 7) 리포지토리 즐겨찾기

커밋 기록에서 파일 또는 폴더 검색

[파일] 탭과 마찬가지로, 이제 리포지토리에서 파일 또는 폴더를 검색하고 해당 파일이나 폴더에 대한 커밋 기록을 확인할 수 있습니다. Git 리포지토리에 대한 [기록] 탭(그림 8)의 경로 컨트롤 상자로 이동한 다음 입력을 시작하여 찾고 있는 파일 또는 폴더에 대한 기록 검색 환경을 시작합니다.

<img src="media/tfsrc1_27-2.png" "Commit history" width="410" height="261" style="border:2px solid Silver; display: block; margin: auto;">

(그림 8) 커밋 기록

커밋 페이지 기능 향상

커밋 정보 페이지와 커밋 기록 페이지의 환경이 최신 고성능 환경으로 개선되었습니다. 이제 조감도에서 커밋과 관련된 중요한 정보를 찾아서 작업할 수 있습니다.

커밋 정보 페이지의 예는 다음과 같습니다(그림 9).

<img src="media/tfsrc1_22-2.png" "Commit details" width="700" height="177" style="border:2px solid Silver; display: block; margin: auto;">

(그림 9) 커밋 정보

커밋 기록 페이지는 다음과 같습니다(그림 10).

<img src="media/tfsrc1_23-2.png" "Commit history" width="700" height="160" style="border:2px solid Silver; display: block; margin: auto;">

(그림 10) 커밋 기록

분기에서 커밋 검색

이제 커밋 정보 페이지에서 분기에서 검색 단추를 클릭하여 지정된 분기 또는 태그에서 커밋을 검색할 수 있습니다(그림 11).

<img src="media/tfsrc1_24-2.png" "Commit search" width="700" height="113" style="border:2px solid Silver; display: block; margin: auto;">

(그림 11) 커밋 검색

해당 분기 및 태그에 특정 커밋이 포함되지 않은 경우에도 창에서 보려는 태그 및 분기를 선택할 수 있습니다(그림 12).

<img src="media/tfsrc1_25-2.png" "Commit search dialog" width="700" height="365" style="border:2px solid Silver; display: block; margin: auto;">

(그림 12) 커밋 검색 대화 상자

토론 컨트롤 도구 모음

markdown은 끌어오기 요청에 주석을 추가할 때에는 강력한 도구이지만 구문을 기억하기 힘들 수 있습니다. 구문을 기억하기 쉽게 만들기 위해 도구 모음을 토론 컨트롤에 추가했습니다(그림 13). 이에 따라 적절한 Markdown 구문이 삽입되어 일반적인 서식이 추가됩니다. 새 도구 모음 컨트롤을 사용하여 제목, 굵게, 기울임꼴, 링크, 코드 및 목록을 모두 추가할 수 있으며, 도구 모음을 사용하여 @ 및 # 멘션 같은 기능을 입력할 수도 있습니다. 굵게(CTRL + B), 기울임꼴(CTRL + I), 링크 만들기(CTRL + K)에 대해 바로 가기 키를 사용할 수 있습니다.

<img src="media/tfsrc2_03-2.png" "Discussion toolbar" width="700" height="157" style="border:2px solid Silver; display: block; margin: auto;">

(그림 13) 토론 도구 모음

PR 주석 향상

PR에 있는 새 주석을 더 잘 확인할 수 있도록 기존 토론 스레드의 새 회신에 추가 장식을 추가했습니다. 또한 파일 보기의 주석에서는 새 주석이 있는 스레드가 강조 표시됩니다(그림 14).

<img src="media/tfsrc2_04-2.png" "PR comment" width="590" height="469" style="border:2px solid Silver; display: block; margin: auto;">

(그림 14) PR 주석 향상

커밋에 대한 PR 보기

이제 커밋에 대해 연결된 모든 끌어오기 요청을 커밋 정보 페이지에서 볼 수 있습니다. 아래 이미지(그림 15)에서 다음을 확인할 수 있습니다.

  • 연결된 끌어오기 요청 드롭다운 목록에는 이 커밋과 연결된 끌어오기 요청이 두 개 있습니다.
  • 끌어오기 요청 #2는 이 커밋을 마스터로 가져왔습니다.
  • 동일한 커밋을 끌어오기 요청 #1을 통해 분기 4로 가져왔습니다.

<img src="media/tfsrc2_05-2.png" "PR in commits" width="700" height="223" style="border:2px solid Silver; display: block; margin: auto;">

(그림 15) 커밋의 PR

끌어오기 요청 팔로우

이제 끌어오기 요청을 팔로우하여 전자 메일 경고를 통해 변경 내용 알림을 받을 수 있습니다. 팔로우 옵션은 상황에 맞는 메뉴에서 사용할 수 있습니다(그림 16).

<img src="media/tfsrc1_28.png" "Follow a pull request" width="194" height="209" style="border:2px solid Silver; display: block; margin: auto;">

(그림 16) 끌어오기 요청 팔로우

끌어오기 요청 병합 다시 시작

대상 분기가 업데이트된 끌어오기 요청에 대한 병합을 다시 시도하는 또 다른 옵션이 추가되었습니다. 이 병합 다시 시작 옵션은 대상 분기의 최근 변경 내용으로 인해 충돌이 생성되거나 PR 빌드가 손상되지 않았는지 확인하려는 경우에 유용합니다.

거부된 끌어오기 요청에서 완료 차단됨

코드 검토 정책이 설정된 분기는 하나 이상의 검토자가 거부한 경우 PR을 완료할 수 없음을 보여 줍니다. 많은 사용자가 이 동작을 예상하므로 기본 동작이 변경되었습니다. 원래 동작을 원하는 팀을 위해 분기 정책 설정 페이지에 새 옵션이 제공됩니다(그림 17).

<img src="media/tfsrc1_29-2.png" "Code review policy" width="400" height="114" style="border:2px solid Silver; display: block; margin: auto;">

(그림 17) 코드 검토 정책

끌어오기 요청 설명의 markdown

markdown을 사용하여 끌어오기 요청 설명을 꾸며보세요. 이제 끌어오기 요청 주석에서 제공되는 것과 동일한 markdown 지원을 끌어오기 요청 설명에서 사용할 수 있습니다.

PR 토론의 첨부 파일

이제 끌어오기 요청 주석에 첨부 파일을 추가할 수 있습니다(그림 18). 끌어서 놓기나 찾아보기를 통해 첨부 파일을 추가할 수 있습니다. 이미지의 경우 단순히 클립보드에서 붙여넣는 방법으로 첨부 파일을 추가할 수 있습니다. 첨부 파일을 추가하면 새 첨부 파일에 대한 markdown 참조를 포함하도록 주석이 자동으로 업데이트됩니다.

<img src="media/tfsrc1_30-2.png" "Attachments in PR discussions" width="700" height="233" style="border:2px solid Silver; display: block; margin: auto;">

(그림 18) PR 토론의 첨부 파일

업데이트가 있는 PR 강조 표시

이제 끌어오기 요청에 대한 업데이트를 이전보다 쉽게 확인할 수 있습니다. [PR 목록] 뷰(그림 19)에서 마지막으로 확인한 이후 변경 내용이 있는 PR은 변경 내용 롤업을 표시하는 새 업데이트 열과 함께 표시됩니다.

<img src="media/tfsrc1_32-2.png" "PR updated files" width="700" height="212" style="border:2px solid Silver; display: block; margin: auto;">

(그림 19) PR 업데이트된 파일

변경 내용이 있는 PR을 보는 경우 개요에 유사한 요약 메시지가 표시됩니다. 새 푸시 및 주석 스레드가 파란색으로 강조 표시됩니다(그림 20). 코드 업데이트 보기 링크를 클릭하면 마지막으로 끌어오기 요청을 본 이후 새 변경 내용의 차이를 표시하는 파일 뷰로 이동됩니다. 이 기능을 사용하면 작성자가 피드백에 대한 응답으로 변경한 PR에 대해 쉽게 추가 작업을 수행할 수 있습니다.

<img src="media/tfsrc1_33-2.png" "PR summary" width="700" height="212" style="border:2px solid Silver; display: block; margin: auto;">

(그림 20) PR 요약

PR 병합 전략에 대한 분기 정책

각 분기에 대한 끌어오기 요청 병합 전략을 정의할 수 있는 새 분기 정책이 추가되었습니다(그림 21). 이전에는 PR 완료 시 각 사용자가 병합 또는 Squash 결정을 선택했습니다. 사용되는 경우 이 정책은 기본 설정을 재정의하여 정책에 의해 설정된 요구 사항을 적용합니다.

<img src="media/tfsrc1_34.png" "Branch policy" width="421" height="111" style="border:2px solid Silver; display: block; margin: auto;">

(그림 21) 분기 정책

병합 충돌 정보 노출

끌어오기 요청에 충돌이 포함된 파일이 있는 경우 이제 이러한 충돌에 대한 자세한 내용이 개요에 표시됩니다(그림 22). 충돌하는 각 파일이 소스 및 대상 분기 간의 충돌 유형에 대한 짧은 요약 정보와 함께 나열됩니다.

<img src="media/tfsrc1_35-2-2.png" "Merge conflicts" width="700" height="256" style="border:2px solid Silver; display: block; margin: auto;">

(그림 22) 병합 충돌

markdown 미리 보기 단추

커밋, 푸시 또는 끌어오기 요청에서 markdown 파일의 차이를 보는 경우 이제 쉽게 전환하여 렌더링된 결과 뷰를 확인할 수 있습니다.

작업 항목 추적의 개선 사항

범위가 지정된 ID 필드에 대한 검색 환경 개선

이번 릴리스에는 범위가 지정된 ID 필드, 즉 특정 사용자 그룹에만 할당을 허용하도록 구성된 ID 필드에 대한 ID 선택기 동작이 업데이트되었습니다. 업데이트된 환경에서는 선택기의 MRU 목록 및 검색 결과에 컬렉션의 유효한 모든 사용자에 대한 결과가 표시되는 대신, 구성된 그룹의 멤버만 반환됩니다.

빌드 기능 향상

빌드 정의 롤백

빌드 정의를 이전 버전으로 롤백할 수 있습니다. 빌드 정의를 편집할 때 기록 탭으로 이동하여 이 작업을 수행할 수 있습니다.

빌드에서 소스의 동기화 및 체크 아웃 사용 안 함

Git에 대한 소스 자동 동기화 및 체크 아웃을 선택적으로 사용하지 않도록 설정할 수 있습니다. 이렇게 하면 에이전트의 기본 제공 동작을 사용하는 대신 작업 또는 스크립트에서 소스 작업을 처리할 수 있습니다. Source.Version, Source.Branch 및 Build.SourcesDirectory와 같은 표준 소스 관련 변수가 모두 설정됩니다.

Git shallow clone 및 git-lfs

이제 빌드 에이전트에서 Git shallow clone 및 git-lfs를 지원합니다. 자세한 내용은 Build definition repository page(빌드 정의 리포지토리 페이지)를 참조하세요.

빌드 및 릴리스 정의에 대한 작업 버전 관리

사용자가 빌드 또는 릴리스에서 실행하는 작업의 주 버전을 제어할 수 있습니다. 이 변경 내용으로 인해 에이전트 및 작업 버전에 대한 자동 업데이트 때문에 발생하는 예기치 않은 오류 수가 줄어들 것으로 예상합니다. 이제 사용자 정의의 빌드 탭이나 릴리스 정의의 환경 탭에서 작업의 주 버전을 지정합니다.

부 버전이 릴리스되는 경우(예: 1.2에서 1.3으로) 해당 변경 내용이 사용자 빌드에 자동으로 포함됩니다. 그러나 새로운 주 버전이 릴리스되는 경우(예: 2.0) 정의를 편집하고 새로운 주 버전으로 직접 변경할 때까지 빌드가 버전 1.3으로 계속 잠겨 있습니다. 빌드 정의에 있는 플래그가 새로운 주 버전을 알립니다.

패키지 관리에 지불 필요

패키지 관리를 계속 사용하려면 Visual Studio Enterprise 구독 또는 Marketplace에서 구입한 패키지 관리 라이선스가 필요합니다. licensing Package Management(패키지 관리 라이선스)에 대해 자세히 알아볼 수 있습니다.

패키지 기능 향상

패키지 관리의 릴리스 뷰

__릴리스 뷰__라는 새로운 기능이 패키지 관리에 추가되었습니다(그림 23). 릴리스 뷰는 해당 릴리스 뷰에 승격된 피드의 패키지 버전 하위 집합을 나타냅니다. 릴리스 뷰를 만들고 패키지의 소비자와 공유하면 종속성을 갖는 버전을 제어할 수 있습니다. 이 기능은 업데이트된 패키지 버전을 자주 게시하지만 각 게시된 버전을 알리거나 지원하지 않으려는 연속 통합 시나리오에서 특히 유용합니다.

시작하려면 Web Access에서 빠른 시작을 찾아보거나 CI/CD에 대한 릴리스 뷰에 대해 자세히 알아보세요.

<img src="media/tfsrc2_12-2.png" "Release views in Package Management" width="500" height="264" style="border:2px solid Silver; display: block; margin: auto;">

(그림 23) 릴리스 뷰

패키지 관리의 npm

이제 패키지 관리 피드에서 Node.js 및 JavaScript 개발용 npm 패키지를 지원합니다. 또한 npm 피드는 npmjs.com을 "캐싱을 사용한 업스트림 소스"로 지원합니다. 이 옵션을 사용하면 피드에서 npmjs.com의 패키지를 투명하게 프록시 및 캐시합니다(Use packages from npmjs.com(npmjs.com에서 패키지 사용) 참조). 즉, npmjs.com에서 특정 package@version을 한 번만 가져오면 되고, 해당 패키지에 대한 이후 요청은 TFS 서버에서 직접 처리됩니다. npmjs.com에서 패키지가 제거된 경우에도 TFS에서 캐시된 버전을 가져올 수 있습니다.

시작하려면 피드에 연결 대화 상자에서 새 npm 옵션을 찾습니다(그림 24).

<img src="media/tfsrc2_11-2.png" "npm in Package Management" width="700" height="327" style="border:2px solid Silver; display: block; margin: auto;">

(그림 24) 패키지 관리의 npm

플랫폼 간 기능 향상

Xcode 빌드 작업 xcpretty 서식 지정

이제 xcpretty를 사용하여 xcode 빌드 출력의 서식을 지정할 수 있습니다(그림 25). xcodebuild를 사용하여 JUnit 테스트 결과를 Team Services에 게시할 수도 있습니다. 이전에는 테스트 결과를 게시하기 위해 xctool을 빌드 도구로 사용해야 했습니다. 이제 xcpretty를 사용하려면 Xcode 작업의 고급 섹션에서 xcpretty 사용을 선택하고 xctool 사용의 선택을 취소합니다.

<img src="media/tfsrc1_19-2.png" "Xcode Build formatting" width="700" height="364" style="border:2px solid Silver; display: block; margin: auto;">

(그림 25) Xcpretty 서식 지정

Jenkins 테스트 및 코드 검사 결과 게시

이제 Jenkins 큐 작업 빌드 및 릴리스 작업이 Jenkins 작업 또는 파이프라인에서 테스트 및 코드 검사 결과를 검색할 수 있습니다. 이렇게 하려면 Jenkins 5.2.0 이상용 TFS 플러그 인을 Jenkins 서버에 설치하고 빌드 후 작업 TFS/Team Services에 대한 결과 수집을 구성해야 합니다. Jenkins에서 결과를 검색한 후 테스트 결과 게시 또는 코드 검사 게시 빌드 작업을 사용하여 게시할 수 있습니다.

Xcode 빌드 작업의 Xcode 8 서명 및 패키지 내보내기

이제 Xcode 작업에서 Xcode 8 자동 서명을 사용한 프로젝트 빌드를 지원합니다(그림 26). 수동으로 빌드 서버에 인증서 및 프로비저닝 프로필을 설치하거나, 파일 내용 옵션을 지정하여 작업에서 설치하도록 할 수 있습니다.

<img src="media/tfsrc1_20-2.png" "Xcode automatic signing" width="675" height="180" style="border:2px solid Silver; display: block; margin: auto;">

(그림 26) Xcode 자동 서명

Xcode 8에서는 보관(.xcarchive)에서 앱 패키지(IPA)를 내보낼 때 내보내기 옵션 plist를 지정해야 합니다(그림 27). 이제 Xcode 8 또는 Xcode 7을 사용하는 경우 Xcode 작업에서 내보내기 방법을 자동으로 식별합니다. 내보내기 방법을 지정하거나 Xcode 작업에서 사용자 지정 plist 파일을 지정할 수 있습니다. Xcode 7 이전의 Xcode 버전을 사용하는 경우에는 작업이 이전 도구(xcrun)를 사용하여 앱 패키지를 만들도록 대체됩니다.

<img src="media/tfsrc1_21-2.png" "Xcode export options" width="675" height="212" style="border:2px solid Silver; display: block; margin: auto;">

(그림 27) Xcode 내보내기 옵션

테스트 기능 향상

Visual Studio 2017을 사용하여 빌드된 테스트 실행

CI/CD 파이프라인에서 테스트 에이전트 배포기능 테스트 실행 작업을 사용하여(그림 28) 이제 Visual Studio 2017용 테스트 에이전트를 설치하고 Visual Studio 2017을 사용하여 빌드한 테스트를 실행할 수 있습니다.

<img src="media/tfsrc2_06-2.png" "Run tests" width="700" height="389" style="border:2px solid Silver; display: block; margin: auto;">

(그림 28) 테스트 실행

작업 항목에서 버그 확인

버그를 찾은 테스트를 다시 실행하여 버그를 확인할 수 있습니다(그림 29). 버그 작업 항목 양식의 상황에 맞는 메뉴에서 확인 옵션을 호출하여 웹 실행기에서 관련 테스트 사례를 시작할 수 있습니다. 또한 웹 실행기에서 유효성 검사를 수행하고 바로 버그 작업 항목을 업데이트할 수 있습니다.

<img src="media/tfsrc1_01-2.png" "Verify bugs from work item" width="700" height="327" style="border:2px solid Silver; display: block; margin: auto;">

(그림 29) 작업 항목에서 버그 확인

테스트 단계 작업에 대한 REST 클라이언트 도우미

이제 REST 클라이언트에 추가된 도우미 클래스를 사용하여 테스트 사례 작업 항목에서 테스트 단계 및 테스트 단계 첨부 파일을 만들고, 수정 및 삭제할 수 있습니다(RestApi-Sample 참조).

웹 실행기에서 기존 버그 업데이트

웹 실행기에서 새 버그를 만들 수 있을 뿐만 아니라 이제 기존 버그를 업데이트할 수도 있습니다(그림 30). 수집한 모든 진단 데이터, 버그가 발견된 경위, 현재 세션의 추적 가능성 링크가 기존 버그에 자동으로 추가됩니다.

<img src="media/tfsrc1_07-2.png" "Test runner" width="700" height="282" style="border:2px solid Silver; display: block; margin: auto;">

(그림 30) 기존 버그 업데이트

웹 실행기의 테스트 사례 설명

테스트 사례 실행을 시작하기 전에 필요한 필수 조건 캡처를 위해 테스트 사례 설명 필드를 사용하는 경우가 많았습니다. 이 업데이트에서는 이제 설명 표시 옵션을 사용하여 웹 실행기에서 테스트 사례 설명 정보를 볼 수 있습니다(그림 31).

<img src="media/tfsrc1_06-2.png" "Test case description" width="700" height="309" style="border:2px solid Silver; display: block; margin: auto;">

(그림 31) 테스트 사례 설명

테스트 허브 기여 지점

개발자가 테스트차트 탭 옆에 표시되는 [피벗] 탭으로 확장을 작성할 수 있도록 하는 새로운 기여 지점("ms.vss-test-web.test-plan-pivot-tabs")이 테스트 계획 허브 내에 추가되었습니다(그림 32).

<img src="media/tfsrc1_08-2.png" "Contribution point" width="400" height="250" style="border:2px solid Silver; display: block; margin: auto;">

(그림 32) 기여 지점

테스트 아티팩트 삭제

이 릴리스 전에는 삭제 옵션이 작업 항목으로 제한되었습니다. 이 업데이트에서는 이제 작업 항목 폼의 상황에 맞는 메뉴에서 영구적으로 삭제 (그림 33) 옵션을 사용하여 테스트 허브 및 작업 허브 둘 다에서 테스트 아티팩트(테스트 계획, 테스트 도구 모음, 테스트 사례, 공유 매개 변수 및 공유 단계)를 영구적으로 삭제할 수 있습니다.

<img src="media/tfsrc1_12-2.png" "Delete test artifacts" width="700" height="463" style="border:2px solid Silver; display: block; margin: auto;">

(그림 33) 테스트 아티팩트 삭제

테스트 계획에 대한 즐겨찾기

이제 자주 사용하는 테스트 계획을 즐겨찾기에 추가할 수 있습니다. 테스트 계획 선택기에 모든 테스트 계획 및 즐겨찾기 탭이 표시됩니다(그림 34). 즐겨찾기 목록에 테스트 계획을 추가하려면 별표 아이콘을 클릭합니다. 즐겨찾기에 추가된 테스트 계획은 테스트 계획 선택기와 새 계정 홈페이지의 즐겨찾기 탭에서 액세스할 수 있습니다. 제목 필드를 검색하여 테스트 계획을 필터링할 수도 있습니다(그림 35).

<img src="media/tfsrc1_16-2.png" "Test plans" width="300" height="236" style="border:2px solid Silver; display: block; margin: auto;">

(그림 34) 테스트 계획

<img src="media/tfsrc1_17-2.png" "Test favorites" width="600" height="216" style="border:2px solid Silver; display: block; margin: auto;">

(그림 35) 테스트 즐겨찾기

관리되는 자동화된 테스트의 테스트 영향 분석

이제 VSTest 작업의 2.* 미리 보기 버전에 있는 확인란을 통해 관리되는 자동화된 테스트의 테스트 영향 분석을 사용할 수 있습니다(그림 36).

<img src="media/tfsrc1_36-2.png" "Test impact analysis" width="700" height="554" style="border:2px solid Silver; display: block; margin: auto;">

(그림 36) 테스트 영향 분석

사용할 경우 지정된 코드 변경의 유효성을 검사하는 데 필요한 관리되는 자동화된 테스트의 관련 집합만 실행됩니다. 테스트 영향 분석은 최신 버전의 Visual Studio가 필요하며, 현재 CI에서 관리되는 자동화된 테스트에 대해 지원됩니다.

테스트 및 피드백 확장에 대한 Firefox 지원

Firefox에 대한 테스트 및 피드백 확장의 일반 공급을 발표하게 되어 기쁘게 생각합니다. Firefox 추가 기능은 Marketplace 사이트에서 다운로드할 수 있습니다.

참고: Edge 브라우저에 대한 지원도 개발 중입니다. 추가 업데이트를 기다려 주세요.

Release Management 기능 향상

릴리스에서 변수 그룹 지원

변수 그룹은 변수와 해당 값을 그룹화하여 여러 릴리스 정의에서 사용할 수 있도록 만드는 데 사용됩니다. 또한 변수 그룹의 보안을 관리할 수 있고, 릴리스 정의에서 변수 그룹의 변수를 보고, 편집하며 사용할 수 있는 사람을 선택할 수 있습니다.

빌드 및 릴리스 허브에서 라이브러리 탭을 열고 도구 모음에서 __+ 변수 그룹__을 선택합니다(그림 37). 현재 변수 그룹은 릴리스 정의에서만 사용할 수 있습니다. 변수 그룹에 대한 자세한 내용은 Release definitions in Microsoft Release Management(Microsoft Release Management의 릴리스 정의)를 참조하세요.

다음과 같이 변수 그룹을 만들고(그림 37) 편집합니다(그림 38).

<img src="media/tfsrc2_08-2.png" "Create variable group" width="700" height="358" style="border:2px solid Silver; display: block; margin: auto;">

(그림 37) 변수 그룹 만들기

<img src="media/tfsrc2_09-2.png" "Edit variable group" width="700" height="434" style="border:2px solid Silver; display: block; margin: auto;">

(그림 38) 변수 그룹 편집

여러 릴리스 일정

하루에 여러 번 릴리스를 만들도록 예약하고 싶으세요? 이제 릴리스 정의에서 예약된 트리거를 여러 개 구성할 수 있습니다(그림 39).

<img src="media/tfsrc1_09-2.png" "Release schedule" width="700" height="389" style="border:2px solid Silver; display: block; margin: auto;">

(그림 39) 릴리스 일정

빌드 및 릴리스의 인라인 서비스 연결

이 기능을 사용하면 서비스 탭으로 이동하지 않고 빌드/릴리스 정의에서 바로 서비스 연결을 만들 수 있습니다. 이 기능은 Docker, Jenkins, VMWare, SCVMM 등 선언적으로 정의된 모든 확장에 대해 자동으로 사용됩니다.

지금까지는 릴리스 정의에서 현재 프로젝트의 아티팩트 소스만 연결할 수 있었습니다. 이제 다른 프로젝트의 빌드 아티팩트도 연결할 수 있습니다40. 아티팩트를 연결하는 동안 프로젝트 드롭다운에 계정의 모든 프로젝트가 나열됩니다.

<img src="media/tfsrc1_13-2.png" "Link build artifacts" width="400" height="271" style="border:2px solid Silver; display: block; margin: auto;">

(그림 40) 빌드 아티팩트 연결

Azure 리소스 그룹 기능 향상

이 릴리스 전에는 Azure 리소스 그룹 작업이 ARM 템플릿 구문의 유효성을 검사할 수 없습니다. 해당 구문이 실제로 리소스를 배포하지 않고 허용됩니다. 이 향상된 기능은 실제 Azure 리소스를 만들기 전에 템플릿 작성 문제를 찾을 수 있는 __유효성 검사 전용__이라는 새로운 배포 모드를 허용합니다.

Azure 리소스 그룹 작업에 대한 또 다른 향상된 기능은 증분 또는 전체 배포 허용입니다(그림 41). 이전에 작업은 증분 모드를 사용하여 ARM 템플릿을 배포했습니다. 그러나 리소스 그룹에 존재하지만 템플릿에 지정되지 않은 리소스는 수정하지 않았습니다. 전체 모드에서는 템플릿에 없는 리소스를 삭제합니다. 기본값은 증분 모드입니다.

<img src="media/tfsrc1_10-2.png" "Azure resource groups" width="700" height="278" style="border:2px solid Silver; display: block; margin: auto;">

(그림 41) Azure 리소스 그룹

Azure CLI 작업

새 Azure CLI 작업(그림 42)은 Windows, Linux, Mac 등의 플랫폼 간 에이전트에서 Azure CLI 명령 실행을 지원합니다. 작업에서 클래식 구독과 ARM 구독을 둘 다 지원합니다. 스크립트를 제공하는 두 가지 모드(연결된 아티팩트 및 인라인 스크립트)를 지원합니다.

<img src="media/tfsrc1_11-2.png" "Azure CLI task" width="700" height="135" style="border:2px solid Silver; display: block; margin: auto;">

(그림 42) Azure CLI 작업

코드 검색 업데이트

TFS 2017 업데이트 1의 코드 검색 서비스에는 Elasticsearch 버전 2.4.1이 포함되어 있습니다. TFS 2017을 실행하는 서버에서 코드 검색 서비스를 구성하면 TFS 업그레이드의 일부로 코드 검색 서비스가 업데이트됩니다. 원격 서버에서 코드 검색 서비스를 구성한 경우 설치 관리자와 함께 제공된 __검색 서비스 패키지__의 내용을 원격 컴퓨터에 복사하고 추가 정보 파일의 지침에 따라 검색 서비스를 수동으로 업그레이드합니다.

코드 통찰력 기능 향상

SonarQube MSBuild 작업

이제 SonarSource에서 제공하는 확장에서 SonarQube MSBuild 작업을 사용할 수 있습니다. 자세한 내용은 SonarSource에서 고유한 SonarQube Team Services/TFS 통합 발표를 참조하세요.

관리 기능 향상

새 알림 설정 환경

알림을 통해 사용자와 팀은 Team Services 프로젝트의 작업에 대한 최신 정보를 얻을 수 있습니다. 이 업데이트에서는 사용자와 팀이 받는 알림을 더 쉽게 관리할 수 있습니다.

이제 프로필 메뉴에는 알림 설정을 관리하기 위한 고유한 계정 수준 환경이 있습니다(그림 43).

<img src="media/tfsrc1_14.png" "Notification settings" width="330" height="194" style="border:2px solid Silver; display: block; margin: auto;">

(그림 43) 알림 설정

이 뷰에서는 직접 만든 개인 구독을 관리할 수 있습니다(그림 44). 또한 계정의 모든 프로젝트에 대해 팀 관리자가 만든 구독이 표시됩니다.

<img src="media/tfsrc1_15-2.png" "Manage personal subscriptions" width="800" height="382" style="border:2px solid Silver; display: block; margin: auto;">

(그림 44) 개인 구독 관리

자세한 내용은 개인 알림 설정 관리를 참조하세요.

TfsConfig에 addProjectReports가 포함됨

이제 addProjectReports 명령을 사용하여 해당 팀 프로젝트에 보고서를 추가할 수 있습니다. 이 명령은 이전의 파워 도구 명령이었으며 이제는 TfsConfig.exe 명령의 일부입니다. 자세한 내용은 팀 프로젝트에 보고서 업로드를 참조하세요.

단체방 사용 중단

Slack, Microsoft Teams 등 TFS 및 Team Services와 잘 통합되는 좋은 솔루션이 많기 때문에 TFS와 Team Services 둘 다에서 단체방 기능 사용을 중단하기로 했습니다. Team Services에서 작업하는 경우 계획을 알리는 새로운 노란색 배너가 표시됩니다. 금년 하반기에는 단체방 기능을 완전히 중단할 계획입니다.

사용할 수 있는 여러 가지 대안이 있습니다. 단체방은 알림 허브와 채팅 둘 다에서 사용됩니다. TFS 및 Team Services는 Microsoft Teams, Slack, HipChat, CampfireFlowdock을 비롯한 다른 많은 공동 작업 제품과 이미 통합됩니다. Zapier를 사용하여 직접 통합을 만들거나 표시되는 알림을 세부적으로 제어할 수도 있습니다.

deprecation of Team Rooms in Team Services(Team Services에서 단체방 사용 중단)에 대해 자세히 알아보세요.

markdown에서 더 이상 파일 링크를 지원하지 않음

업데이트 1에서는 시작 페이지, 팀 대시보드에 있는 markdown 위젯 및 Kanban 보드에 있는 완료 정의의 markdown에서 파일 링크가 더 이상 지원되지 않습니다. 해결 방법으로, markdown에 파일 링크를 텍스트로 포함할 수 있습니다. 자세한 내용은 markdown 지침을 참조하세요.

프로세스 템플릿 편집기 발표

Visual Studio 2017용 프로세스 템플릿 편집기 확장이 출시되었습니다. 이 확장은 전역 목록 및 작업 항목 형식 업데이트 도구뿐만 아니라 프로세스 템플릿을 보고 업데이트하고, 작업 항목 필드의 특성을 보는 편리한 방법을 제공합니다. 이 확장은 TFS 2017 및 TFS 2017 업데이트 1 서버에 대해 작동합니다.


알려진 문제

TFS 2013 이전 버전에서 TFS 2017 업데이트 1 빌드 15.112.26301.0으로 업그레이드할 경우 빌드가 작동하지 않음

  • 문제:

    이 문제는 2017년 3월 7일에 릴리스된 TFS 2017 업데이트 1 빌드 15.112.26301.0으로 업그레이드한 경우에만 발생합니다. 3월 9일에 릴리스된 빌드 15.112.26307.0으로 업그레이드하면 이 문제가 발생하지 않습니다.

    TFS 2013(RTM 또는 업데이트) 이전 버전에서 업그레이드한 후 빌드에 "counter with name TaskReferenceId does not exist"(이름이 TaskReferenceId인 카운터가 없습니다) 오류가 표시됩니다.

  • 해결 방법:

    업그레이드된 컬렉션 데이터베이스에서 다음 스크립트를 실행합니다.

    INSERT  tbl_Counter (PartitionId, DataspaceId, CounterName, CounterValue)
    SELECT  DISTINCT
              dpm.PartitionId,
              ds.DataspaceId,
              N'TaskReferenceId',
              1
      FROM    tbl_DatabasePartitionMap dpm
      INNER LOOP JOIN Task.tbl_Hub h
      ON      h.PartitionId = dpm.PartitionId
      INNER LOOP JOIN tbl_Dataspace ds
      ON      ds.PartitionId = dpm.PartitionId
              AND ds.DataspaceCategory = h.DataspaceCategory
              AND ds.DataspaceIdentifier <> '00000000-0000-0000-0000-000000000000'
      WHERE   dpm.PartitionId > 0
              AND dpm.HostType = 4
              AND NOT EXISTS (
                  SELECT  *
                  FROM    tbl_Counter c
                  WHERE   c.PartitionId = dpm.PartitionId
                          AND c.DataspaceId = ds.DataspaceId
                          AND c.CounterName = N'TaskReferenceId'
              ) 
    

고객이 Git LFS 버전 1.3.1 이상으로 업데이트해야 함

  • 문제:

    Git LFS 1.3.1 이전 버전은 더 이상 지원되지 않습니다.

  • 해결 방법:

    Git LFS를 사용할 경우 Git LFS 1.3.1 이상 버전으로 업데이트해야 합니다. 이전 버전의 LFS 클라이언트는 이 버전 TFS의 인증 변경 내용과 호환되지 않습니다.

작업 항목 양식이 제대로 렌더링되지 않음

  • 문제:

    작업 항목 양식에서 레거시 다중 값 컨트롤 등의 레거시 사용자 지정 컨트롤을 사용하는 경우 작업 항목 양식이 렌더링되지 않을 수 있습니다.

  • 해결 방법:

    최신 버전의 컨트롤로 업데이트해야 합니다. 여기서 TFS 2017 업데이트 1에 대한 최신 다중 값 컨트롤을 찾을 수 있습니다.

작업 항목 폼이 웹에서 제대로 렌더링되지 않음

작업 항목 폼에서 읽기 전용 필드를 숨기지 않음

  • 문제:

    레이아웃에서 HideReadonlyEmptyFields 속성이 true로 설정된 상태에서 이전 작업 항목 폼을 사용하는 경우 폼에서 읽기 전용 필드와 빈 필드를 숨길 수 없습니다.

  • 해결 방법:

    지금은 해결 방법이 없습니다. 이 문제는 TFS 2017 업데이트 2에서 수정될 예정입니다.

작업 항목 양식이 표시될 때 변경됨

  • 문제:

    이 문제는 새 작업 항목 양식으로 옵트인 시 TFS 2017 업데이트 1에서 IE 11과 연관되어 있습니다. 사용자 프로필을 프랑스어, 한국어, 러시아어, 터키어, 일본어 또는 중국어로 설정하고 작업 항목이 임의 ID에 할당되어 있는 경우에는 작업 항목을 볼 때 해당 작업 항목 폼이 변경된 상태로 보입니다. 작업 항목을 저장하면 [할당 대상] 필드가 할당되지 않은 상태로 설정됩니다.

  • 해결 방법:

    IE11 외에 다른 브라우저를 사용합니다. IE11을 사용 중인 경우에는 작업 항목 도구 모음에서 실행 취소/새로 고침을 클릭하여 올바른 [할당 대상] 값으로 복원합니다.

업스트림 NPM 패키지의 캐싱 실패

  • 문제:

    TFS 서버가 프록시 뒤에 있는 경우 업스트림 NPM 패키지를 캐시하지 못합니다.

  • 해결 방법:

    TFS 서버가 회사 프록시 뒤에 있는 경우 TFS 서버 web.config(즉, %ProgramFiles%\Microsoft Team Foundation Server 15.0\Application Tier\Web Services\web.config)를 다음과 같이 변경합니다.

    이 구성 블록을

      <!-- ASP.NET Proxy Usage for HttpWebRequests 
            "usesystemdefault" 
               false - stops the server using the default proxy configuration or proxy
                     auto-detection. 
            "bypassonlocal"
               true - this tells all requests to a local address to ignore configured proxies.
        -->
      <defaultProxy>
        <proxy usesystemdefault="False" bypassonlocal="True" />
      </defaultProxy>
    

    다음 코드로 바꿉니다.

      <defaultProxy useDefaultCredentials="true" />
    

코드 드롭다운 메뉴에 잘못된 버전 제어 페이지가 표시됨

  • #### 문제: 아래 이미지(그림 45)와 같이 Git 리포지토리에서 관리 페이지로 이동하여 코드 허브를 클릭할 경우 기록 링크가 아닌 변경 집합보류 집합 링크가 나타납니다.

<img src="media/tfsrc2_10.png" "Code dropdown menu" width="412" height="230" style="border:2px solid Silver; display: block; margin: auto;">

(그림 45) 코드 드롭다운 메뉴

  • #### 해결 방법: Git 리포지토리 관리 페이지 밖으로 이동하면 올바른 링크가 표시됩니다.

확장이 자동으로 업데이트되지 않음

  • 문제:

    TFS의 이전 버전이 TFS 2017과 연결되도록 업그레이드하고 연결된 모드에서 TFS 2017을 실행 중인 경우 확장이 자동으로 업데이트되어야 하지만, 자동으로 업데이트되지 않습니다.

  • 해결 방법:

    지금은 해결 방법이 없습니다. 이 문제는 해결되었으며 자동 업데이트 동작은 TFS 2017 업데이트 2에서 지원됩니다. 특정한 이유로 업데이트 2를 기다릴 수 없는 경우에는 지원 채널을 통해 문의하시면 수정 사항을 미리 공유해 드리겠습니다.

공용 URL이 올바로 설정되지 않은 경우 확장을 구입할 수 없거나 확장이 올바로 작동하지 않음

  • 문제:

    Visual Studio Marketplace에서 확장 구입이 실패합니다.

    이미 구입한 확장은 올바로 작동하지 않을 가능성이 높습니다.

  • 해결 방법:

    이 문제는 TFS 2017 업데이트 2에서 수정되었고 업그레이드가 권장됩니다. 업데이트 1에서 작업 시 이 업데이트가 필요할 경우 회사 환경 내의 다른 시스템에서 URL에 연결할 수 있도록 TFS 서버 관리자 콘솔에서 '공용 URL'을 설정합니다(그림 46).

<img src="media/adminconsole-2.png" "Code menu" width="700" height="471" style="border:2px solid Silver; display: block; margin: auto;">

(그림 46) 코드 메뉴