Merge branch 'dd/ci-swap-azure-pipelines-with-github-actions'
Update the CI configuration to use GitHub Actions, retiring the one based on Azure Pipelines. * dd/ci-swap-azure-pipelines-with-github-actions: ci: let GitHub Actions upload failed tests' directories ci: add a problem matcher for GitHub Actions tests: when run in Bash, annotate test failures with file name/line number ci: retire the Azure Pipelines definition README: add a build badge for the GitHub Actions runs ci: configure GitHub Actions for CI/PR ci: run gem with sudo to install asciidoctor ci: explicit install all required packages ci: fix the `jobname` of the `GETTEXT_POISON` job ci/lib: set TERM environment variable if not exist ci/lib: allow running in GitHub Actions ci/lib: if CI type is unknown, show the environment variables
This commit is contained in:
commit
8cb514d1cb
230
.github/workflows/main.yml
vendored
Normal file
230
.github/workflows/main.yml
vendored
Normal file
@ -0,0 +1,230 @@
|
|||||||
|
name: CI/PR
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
env:
|
||||||
|
DEVELOPER: 1
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
windows-build:
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: download git-sdk-64-minimal
|
||||||
|
shell: bash
|
||||||
|
run: a=git-sdk-64-minimal && mkdir -p $a && curl -# https://wingit.blob.core.windows.net/ci-artifacts/$a.tar.xz | tar -C $a -xJf -
|
||||||
|
- name: build
|
||||||
|
shell: powershell
|
||||||
|
env:
|
||||||
|
HOME: ${{runner.workspace}}
|
||||||
|
MSYSTEM: MINGW64
|
||||||
|
NO_PERL: 1
|
||||||
|
run: |
|
||||||
|
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
||||||
|
printf '%s\n' /git-sdk-64-minimal/ >>.git/info/exclude
|
||||||
|
|
||||||
|
ci/make-test-artifacts.sh artifacts
|
||||||
|
"@
|
||||||
|
- name: upload build artifacts
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
name: windows-artifacts
|
||||||
|
path: artifacts
|
||||||
|
windows-test:
|
||||||
|
runs-on: windows-latest
|
||||||
|
needs: [windows-build]
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: download git-sdk-64-minimal
|
||||||
|
shell: bash
|
||||||
|
run: a=git-sdk-64-minimal && mkdir -p $a && curl -# https://wingit.blob.core.windows.net/ci-artifacts/$a.tar.xz | tar -C $a -xJf -
|
||||||
|
- name: download build artifacts
|
||||||
|
uses: actions/download-artifact@v1
|
||||||
|
with:
|
||||||
|
name: windows-artifacts
|
||||||
|
path: ${{github.workspace}}
|
||||||
|
- name: extract build artifacts
|
||||||
|
shell: bash
|
||||||
|
run: tar xf artifacts.tar.gz
|
||||||
|
- name: test
|
||||||
|
shell: powershell
|
||||||
|
run: |
|
||||||
|
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
||||||
|
# Let Git ignore the SDK
|
||||||
|
printf '%s\n' /git-sdk-64-minimal/ >>.git/info/exclude
|
||||||
|
|
||||||
|
ci/run-test-slice.sh ${{matrix.nr}} 10
|
||||||
|
"@
|
||||||
|
- name: ci/print-test-failures.sh
|
||||||
|
if: failure()
|
||||||
|
shell: powershell
|
||||||
|
run: |
|
||||||
|
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh
|
||||||
|
- name: Upload failed tests' directories
|
||||||
|
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
name: failed-tests-windows
|
||||||
|
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||||
|
vs-build:
|
||||||
|
env:
|
||||||
|
MSYSTEM: MINGW64
|
||||||
|
NO_PERL: 1
|
||||||
|
GIT_CONFIG_PARAMETERS: "'user.name=CI' 'user.email=ci@git'"
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: download git-sdk-64-minimal
|
||||||
|
shell: bash
|
||||||
|
run: a=git-sdk-64-minimal && mkdir -p $a && curl -# https://wingit.blob.core.windows.net/ci-artifacts/$a.tar.xz | tar -C $a -xJf -
|
||||||
|
- name: generate Visual Studio solution
|
||||||
|
shell: powershell
|
||||||
|
run: |
|
||||||
|
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
||||||
|
make NDEBUG=1 DEVELOPER=1 vcxproj
|
||||||
|
"@
|
||||||
|
if (!$?) { exit(1) }
|
||||||
|
- name: download vcpkg artifacts
|
||||||
|
shell: powershell
|
||||||
|
run: |
|
||||||
|
$urlbase = "https://dev.azure.com/git/git/_apis/build/builds"
|
||||||
|
$id = ((Invoke-WebRequest -UseBasicParsing "${urlbase}?definitions=9&statusFilter=completed&resultFilter=succeeded&`$top=1").content | ConvertFrom-JSON).value[0].id
|
||||||
|
$downloadUrl = ((Invoke-WebRequest -UseBasicParsing "${urlbase}/$id/artifacts").content | ConvertFrom-JSON).value[0].resource.downloadUrl
|
||||||
|
(New-Object Net.WebClient).DownloadFile($downloadUrl, "compat.zip")
|
||||||
|
Expand-Archive compat.zip -DestinationPath . -Force
|
||||||
|
Remove-Item compat.zip
|
||||||
|
- name: add msbuild to PATH
|
||||||
|
uses: microsoft/setup-msbuild@v1.0.0
|
||||||
|
- name: MSBuild
|
||||||
|
run: msbuild git.sln -property:Configuration=Release -property:Platform=x64 -maxCpuCount:4 -property:PlatformToolset=v142
|
||||||
|
- name: bundle artifact tar
|
||||||
|
shell: powershell
|
||||||
|
env:
|
||||||
|
MSVC: 1
|
||||||
|
VCPKG_ROOT: ${{github.workspace}}\compat\vcbuild\vcpkg
|
||||||
|
run: |
|
||||||
|
& compat\vcbuild\vcpkg_copy_dlls.bat release
|
||||||
|
if (!$?) { exit(1) }
|
||||||
|
& git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
||||||
|
mkdir -p artifacts &&
|
||||||
|
eval \"`$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts 2>&1 | grep ^tar)\"
|
||||||
|
"@
|
||||||
|
- name: upload build artifacts
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
name: vs-artifacts
|
||||||
|
path: artifacts
|
||||||
|
vs-test:
|
||||||
|
runs-on: windows-latest
|
||||||
|
needs: [vs-build]
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: download git-64-portable
|
||||||
|
shell: bash
|
||||||
|
run: a=git-64-portable && mkdir -p $a && curl -# https://wingit.blob.core.windows.net/ci-artifacts/$a.tar.xz | tar -C $a -xJf -
|
||||||
|
- name: download build artifacts
|
||||||
|
uses: actions/download-artifact@v1
|
||||||
|
with:
|
||||||
|
name: vs-artifacts
|
||||||
|
path: ${{github.workspace}}
|
||||||
|
- name: extract build artifacts
|
||||||
|
shell: bash
|
||||||
|
run: tar xf artifacts.tar.gz
|
||||||
|
- name: test (parallel)
|
||||||
|
shell: powershell
|
||||||
|
env:
|
||||||
|
MSYSTEM: MINGW64
|
||||||
|
NO_SVN_TESTS: 1
|
||||||
|
GIT_TEST_SKIP_REBASE_P: 1
|
||||||
|
run: |
|
||||||
|
& git-64-portable\git-cmd.exe --command=usr\bin\bash.exe -lc @"
|
||||||
|
# Let Git ignore the SDK and the test-cache
|
||||||
|
printf '%s\n' /git-64-portable/ /test-cache/ >>.git/info/exclude
|
||||||
|
|
||||||
|
cd t &&
|
||||||
|
PATH=\"`$PWD/helper:`$PATH\" &&
|
||||||
|
test-tool.exe run-command testsuite --jobs=10 -V -x --write-junit-xml \
|
||||||
|
`$(test-tool.exe path-utils slice-tests \
|
||||||
|
${{matrix.nr}} 10 t[0-9]*.sh)
|
||||||
|
"@
|
||||||
|
regular:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
vector:
|
||||||
|
- jobname: linux-clang
|
||||||
|
cc: clang
|
||||||
|
pool: ubuntu-latest
|
||||||
|
- jobname: linux-gcc
|
||||||
|
cc: gcc
|
||||||
|
pool: ubuntu-latest
|
||||||
|
- jobname: osx-clang
|
||||||
|
cc: clang
|
||||||
|
pool: macos-latest
|
||||||
|
- jobname: osx-gcc
|
||||||
|
cc: gcc
|
||||||
|
pool: macos-latest
|
||||||
|
- jobname: GETTEXT_POISON
|
||||||
|
cc: gcc
|
||||||
|
pool: ubuntu-latest
|
||||||
|
env:
|
||||||
|
CC: ${{matrix.vector.cc}}
|
||||||
|
jobname: ${{matrix.vector.jobname}}
|
||||||
|
runs-on: ${{matrix.vector.pool}}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- run: ci/install-dependencies.sh
|
||||||
|
- run: ci/run-build-and-tests.sh
|
||||||
|
- run: ci/print-test-failures.sh
|
||||||
|
if: failure()
|
||||||
|
- name: Upload failed tests' directories
|
||||||
|
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
name: failed-tests-${{matrix.vector.jobname}}
|
||||||
|
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||||
|
dockerized:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
vector:
|
||||||
|
- jobname: linux-musl
|
||||||
|
image: alpine
|
||||||
|
- jobname: Linux32
|
||||||
|
image: daald/ubuntu32:xenial
|
||||||
|
env:
|
||||||
|
jobname: ${{matrix.vector.jobname}}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: ${{matrix.vector.image}}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- run: ci/install-docker-dependencies.sh
|
||||||
|
- run: ci/run-build-and-tests.sh
|
||||||
|
- run: ci/print-test-failures.sh
|
||||||
|
if: failure()
|
||||||
|
- name: Upload failed tests' directories
|
||||||
|
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
name: failed-tests-${{matrix.vector.jobname}}
|
||||||
|
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||||
|
static-analysis:
|
||||||
|
env:
|
||||||
|
jobname: StaticAnalysis
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- run: ci/install-dependencies.sh
|
||||||
|
- run: ci/run-static-analysis.sh
|
||||||
|
documentation:
|
||||||
|
env:
|
||||||
|
jobname: Documentation
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- run: ci/install-dependencies.sh
|
||||||
|
- run: ci/test-documentation.sh
|
@ -16,7 +16,7 @@ compiler:
|
|||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- env: jobname=GIT_TEST_GETTEXT_POISON
|
- env: jobname=GETTEXT_POISON
|
||||||
os: linux
|
os: linux
|
||||||
compiler:
|
compiler:
|
||||||
addons:
|
addons:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
[![Build Status](https://dev.azure.com/git/git/_apis/build/status/git.git)](https://dev.azure.com/git/git/_build/latest?definitionId=11)
|
[![Build status](https://github.com/git/git/workflows/CI/PR/badge.svg)](https://github.com/git/git/actions?query=branch%3Amaster+event%3Apush)
|
||||||
|
|
||||||
Git - fast, scalable, distributed revision control system
|
Git - fast, scalable, distributed revision control system
|
||||||
=========================================================
|
=========================================================
|
||||||
|
@ -1,558 +0,0 @@
|
|||||||
variables:
|
|
||||||
Agent.Source.Git.ShallowFetchDepth: 1
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
- job: windows_build
|
|
||||||
displayName: Windows Build
|
|
||||||
condition: succeeded()
|
|
||||||
pool:
|
|
||||||
vmImage: windows-latest
|
|
||||||
timeoutInMinutes: 240
|
|
||||||
steps:
|
|
||||||
- powershell: |
|
|
||||||
if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
|
|
||||||
net use s: \\gitfileshare.file.core.windows.net\test-cache "$GITFILESHAREPWD" /user:AZURE\gitfileshare /persistent:no
|
|
||||||
cmd /c mklink /d "$(Build.SourcesDirectory)\test-cache" S:\
|
|
||||||
}
|
|
||||||
displayName: 'Mount test-cache'
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
- powershell: |
|
|
||||||
$urlbase = "https://dev.azure.com/git-for-windows/git/_apis/build/builds"
|
|
||||||
$id = ((Invoke-WebRequest -UseBasicParsing "${urlbase}?definitions=22&statusFilter=completed&resultFilter=succeeded&`$top=1").content | ConvertFrom-JSON).value[0].id
|
|
||||||
$downloadUrl = ((Invoke-WebRequest -UseBasicParsing "${urlbase}/$id/artifacts").content | ConvertFrom-JSON).value[1].resource.downloadUrl
|
|
||||||
(New-Object Net.WebClient).DownloadFile($downloadUrl,"git-sdk-64-minimal.zip")
|
|
||||||
Expand-Archive git-sdk-64-minimal.zip -DestinationPath . -Force
|
|
||||||
Remove-Item git-sdk-64-minimal.zip
|
|
||||||
|
|
||||||
# Let Git ignore the SDK and the test-cache
|
|
||||||
"/git-sdk-64-minimal/`n/test-cache/`n" | Out-File -NoNewLine -Encoding ascii -Append "$(Build.SourcesDirectory)\.git\info\exclude"
|
|
||||||
displayName: 'Download git-sdk-64-minimal'
|
|
||||||
- powershell: |
|
|
||||||
& git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
|
||||||
ci/make-test-artifacts.sh artifacts
|
|
||||||
"@
|
|
||||||
if (!$?) { exit(1) }
|
|
||||||
displayName: Build
|
|
||||||
env:
|
|
||||||
HOME: $(Build.SourcesDirectory)
|
|
||||||
MSYSTEM: MINGW64
|
|
||||||
DEVELOPER: 1
|
|
||||||
NO_PERL: 1
|
|
||||||
- task: PublishPipelineArtifact@0
|
|
||||||
displayName: 'Publish Pipeline Artifact: test artifacts'
|
|
||||||
inputs:
|
|
||||||
artifactName: 'windows-artifacts'
|
|
||||||
targetPath: '$(Build.SourcesDirectory)\artifacts'
|
|
||||||
- task: PublishPipelineArtifact@0
|
|
||||||
displayName: 'Publish Pipeline Artifact: git-sdk-64-minimal'
|
|
||||||
inputs:
|
|
||||||
artifactName: 'git-sdk-64-minimal'
|
|
||||||
targetPath: '$(Build.SourcesDirectory)\git-sdk-64-minimal'
|
|
||||||
- powershell: |
|
|
||||||
if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
|
|
||||||
cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
|
|
||||||
}
|
|
||||||
displayName: 'Unmount test-cache'
|
|
||||||
condition: true
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
|
|
||||||
- job: windows_test
|
|
||||||
displayName: Windows Test
|
|
||||||
dependsOn: windows_build
|
|
||||||
condition: succeeded()
|
|
||||||
pool:
|
|
||||||
vmImage: windows-latest
|
|
||||||
timeoutInMinutes: 240
|
|
||||||
strategy:
|
|
||||||
parallel: 10
|
|
||||||
steps:
|
|
||||||
- powershell: |
|
|
||||||
if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
|
|
||||||
net use s: \\gitfileshare.file.core.windows.net\test-cache "$GITFILESHAREPWD" /user:AZURE\gitfileshare /persistent:no
|
|
||||||
cmd /c mklink /d "$(Build.SourcesDirectory)\test-cache" S:\
|
|
||||||
}
|
|
||||||
displayName: 'Mount test-cache'
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
- task: DownloadPipelineArtifact@0
|
|
||||||
displayName: 'Download Pipeline Artifact: test artifacts'
|
|
||||||
inputs:
|
|
||||||
artifactName: 'windows-artifacts'
|
|
||||||
targetPath: '$(Build.SourcesDirectory)'
|
|
||||||
- task: DownloadPipelineArtifact@0
|
|
||||||
displayName: 'Download Pipeline Artifact: git-sdk-64-minimal'
|
|
||||||
inputs:
|
|
||||||
artifactName: 'git-sdk-64-minimal'
|
|
||||||
targetPath: '$(Build.SourcesDirectory)\git-sdk-64-minimal'
|
|
||||||
- powershell: |
|
|
||||||
& git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
|
||||||
test -f artifacts.tar.gz || {
|
|
||||||
echo No test artifacts found\; skipping >&2
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
tar xf artifacts.tar.gz || exit 1
|
|
||||||
|
|
||||||
# Let Git ignore the SDK and the test-cache
|
|
||||||
printf '%s\n' /git-sdk-64-minimal/ /test-cache/ >>.git/info/exclude
|
|
||||||
|
|
||||||
ci/run-test-slice.sh `$SYSTEM_JOBPOSITIONINPHASE `$SYSTEM_TOTALJOBSINPHASE || {
|
|
||||||
ci/print-test-failures.sh
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
"@
|
|
||||||
if (!$?) { exit(1) }
|
|
||||||
displayName: 'Test (parallel)'
|
|
||||||
env:
|
|
||||||
HOME: $(Build.SourcesDirectory)
|
|
||||||
MSYSTEM: MINGW64
|
|
||||||
NO_SVN_TESTS: 1
|
|
||||||
GIT_TEST_SKIP_REBASE_P: 1
|
|
||||||
- powershell: |
|
|
||||||
if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
|
|
||||||
cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
|
|
||||||
}
|
|
||||||
displayName: 'Unmount test-cache'
|
|
||||||
condition: true
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
displayName: 'Publish Test Results **/TEST-*.xml'
|
|
||||||
inputs:
|
|
||||||
mergeTestResults: true
|
|
||||||
testRunTitle: 'windows'
|
|
||||||
platform: Windows
|
|
||||||
publishRunAttachments: false
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
- task: PublishBuildArtifacts@1
|
|
||||||
displayName: 'Publish trash directories of failed tests'
|
|
||||||
condition: failed()
|
|
||||||
inputs:
|
|
||||||
PathtoPublish: t/failed-test-artifacts
|
|
||||||
ArtifactName: failed-test-artifacts
|
|
||||||
|
|
||||||
- job: vs_build
|
|
||||||
displayName: Visual Studio Build
|
|
||||||
condition: succeeded()
|
|
||||||
pool:
|
|
||||||
vmImage: windows-latest
|
|
||||||
timeoutInMinutes: 240
|
|
||||||
steps:
|
|
||||||
- powershell: |
|
|
||||||
if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
|
|
||||||
net use s: \\gitfileshare.file.core.windows.net\test-cache "$GITFILESHAREPWD" /user:AZURE\gitfileshare /persistent:no
|
|
||||||
cmd /c mklink /d "$(Build.SourcesDirectory)\test-cache" S:\
|
|
||||||
}
|
|
||||||
displayName: 'Mount test-cache'
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
- powershell: |
|
|
||||||
$urlbase = "https://dev.azure.com/git-for-windows/git/_apis/build/builds"
|
|
||||||
$id = ((Invoke-WebRequest -UseBasicParsing "${urlbase}?definitions=22&statusFilter=completed&resultFilter=succeeded&`$top=1").content | ConvertFrom-JSON).value[0].id
|
|
||||||
$downloadUrl = ((Invoke-WebRequest -UseBasicParsing "${urlbase}/$id/artifacts").content | ConvertFrom-JSON).value[1].resource.downloadUrl
|
|
||||||
(New-Object Net.WebClient).DownloadFile($downloadUrl,"git-sdk-64-minimal.zip")
|
|
||||||
Expand-Archive git-sdk-64-minimal.zip -DestinationPath . -Force
|
|
||||||
Remove-Item git-sdk-64-minimal.zip
|
|
||||||
|
|
||||||
# Let Git ignore the SDK and the test-cache
|
|
||||||
"/git-sdk-64-minimal/`n/test-cache/`n" | Out-File -NoNewLine -Encoding ascii -Append "$(Build.SourcesDirectory)\.git\info\exclude"
|
|
||||||
displayName: 'Download git-sdk-64-minimal'
|
|
||||||
- powershell: |
|
|
||||||
& git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
|
||||||
make NDEBUG=1 DEVELOPER=1 vcxproj
|
|
||||||
"@
|
|
||||||
if (!$?) { exit(1) }
|
|
||||||
displayName: Generate Visual Studio Solution
|
|
||||||
env:
|
|
||||||
HOME: $(Build.SourcesDirectory)
|
|
||||||
MSYSTEM: MINGW64
|
|
||||||
DEVELOPER: 1
|
|
||||||
NO_PERL: 1
|
|
||||||
GIT_CONFIG_PARAMETERS: "'user.name=CI' 'user.email=ci@git'"
|
|
||||||
- powershell: |
|
|
||||||
$urlbase = "https://dev.azure.com/git/git/_apis/build/builds"
|
|
||||||
$id = ((Invoke-WebRequest -UseBasicParsing "${urlbase}?definitions=9&statusFilter=completed&resultFilter=succeeded&`$top=1").content | ConvertFrom-JSON).value[0].id
|
|
||||||
$downloadUrl = ((Invoke-WebRequest -UseBasicParsing "${urlbase}/$id/artifacts").content | ConvertFrom-JSON).value[0].resource.downloadUrl
|
|
||||||
(New-Object Net.WebClient).DownloadFile($downloadUrl, "compat.zip")
|
|
||||||
Expand-Archive compat.zip -DestinationPath . -Force
|
|
||||||
Remove-Item compat.zip
|
|
||||||
displayName: 'Download vcpkg artifacts'
|
|
||||||
- task: MSBuild@1
|
|
||||||
inputs:
|
|
||||||
solution: git.sln
|
|
||||||
platform: x64
|
|
||||||
configuration: Release
|
|
||||||
maximumCpuCount: 4
|
|
||||||
msbuildArguments: /p:PlatformToolset=v142
|
|
||||||
- powershell: |
|
|
||||||
& compat\vcbuild\vcpkg_copy_dlls.bat release
|
|
||||||
if (!$?) { exit(1) }
|
|
||||||
& git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
|
||||||
mkdir -p artifacts &&
|
|
||||||
eval \"`$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts | grep ^tar)\"
|
|
||||||
"@
|
|
||||||
if (!$?) { exit(1) }
|
|
||||||
displayName: Bundle artifact tar
|
|
||||||
env:
|
|
||||||
HOME: $(Build.SourcesDirectory)
|
|
||||||
MSYSTEM: MINGW64
|
|
||||||
DEVELOPER: 1
|
|
||||||
NO_PERL: 1
|
|
||||||
MSVC: 1
|
|
||||||
VCPKG_ROOT: $(Build.SourcesDirectory)\compat\vcbuild\vcpkg
|
|
||||||
- powershell: |
|
|
||||||
$tag = (Invoke-WebRequest -UseBasicParsing "https://gitforwindows.org/latest-tag.txt").content
|
|
||||||
$version = (Invoke-WebRequest -UseBasicParsing "https://gitforwindows.org/latest-version.txt").content
|
|
||||||
$url = "https://github.com/git-for-windows/git/releases/download/${tag}/PortableGit-${version}-64-bit.7z.exe"
|
|
||||||
(New-Object Net.WebClient).DownloadFile($url,"PortableGit.exe")
|
|
||||||
& .\PortableGit.exe -y -oartifacts\PortableGit
|
|
||||||
# Wait until it is unpacked
|
|
||||||
while (-not @(Remove-Item -ErrorAction SilentlyContinue PortableGit.exe; $?)) { sleep 1 }
|
|
||||||
displayName: Download & extract portable Git
|
|
||||||
- task: PublishPipelineArtifact@0
|
|
||||||
displayName: 'Publish Pipeline Artifact: MSVC test artifacts'
|
|
||||||
inputs:
|
|
||||||
artifactName: 'vs-artifacts'
|
|
||||||
targetPath: '$(Build.SourcesDirectory)\artifacts'
|
|
||||||
- powershell: |
|
|
||||||
if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
|
|
||||||
cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
|
|
||||||
}
|
|
||||||
displayName: 'Unmount test-cache'
|
|
||||||
condition: true
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
|
|
||||||
- job: vs_test
|
|
||||||
displayName: Visual Studio Test
|
|
||||||
dependsOn: vs_build
|
|
||||||
condition: succeeded()
|
|
||||||
pool:
|
|
||||||
vmImage: windows-latest
|
|
||||||
timeoutInMinutes: 240
|
|
||||||
strategy:
|
|
||||||
parallel: 10
|
|
||||||
steps:
|
|
||||||
- powershell: |
|
|
||||||
if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
|
|
||||||
net use s: \\gitfileshare.file.core.windows.net\test-cache "$GITFILESHAREPWD" /user:AZURE\gitfileshare /persistent:no
|
|
||||||
cmd /c mklink /d "$(Build.SourcesDirectory)\test-cache" S:\
|
|
||||||
}
|
|
||||||
displayName: 'Mount test-cache'
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
- task: DownloadPipelineArtifact@0
|
|
||||||
displayName: 'Download Pipeline Artifact: VS test artifacts'
|
|
||||||
inputs:
|
|
||||||
artifactName: 'vs-artifacts'
|
|
||||||
targetPath: '$(Build.SourcesDirectory)'
|
|
||||||
- powershell: |
|
|
||||||
& PortableGit\git-cmd.exe --command=usr\bin\bash.exe -lc @"
|
|
||||||
test -f artifacts.tar.gz || {
|
|
||||||
echo No test artifacts found\; skipping >&2
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
tar xf artifacts.tar.gz || exit 1
|
|
||||||
|
|
||||||
# Let Git ignore the SDK and the test-cache
|
|
||||||
printf '%s\n' /PortableGit/ /test-cache/ >>.git/info/exclude
|
|
||||||
|
|
||||||
cd t &&
|
|
||||||
PATH=\"`$PWD/helper:`$PATH\" &&
|
|
||||||
test-tool.exe run-command testsuite --jobs=10 -V -x --write-junit-xml \
|
|
||||||
`$(test-tool.exe path-utils slice-tests \
|
|
||||||
`$SYSTEM_JOBPOSITIONINPHASE `$SYSTEM_TOTALJOBSINPHASE t[0-9]*.sh)
|
|
||||||
"@
|
|
||||||
if (!$?) { exit(1) }
|
|
||||||
displayName: 'Test (parallel)'
|
|
||||||
env:
|
|
||||||
HOME: $(Build.SourcesDirectory)
|
|
||||||
MSYSTEM: MINGW64
|
|
||||||
NO_SVN_TESTS: 1
|
|
||||||
GIT_TEST_SKIP_REBASE_P: 1
|
|
||||||
- powershell: |
|
|
||||||
if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
|
|
||||||
cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
|
|
||||||
}
|
|
||||||
displayName: 'Unmount test-cache'
|
|
||||||
condition: true
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
displayName: 'Publish Test Results **/TEST-*.xml'
|
|
||||||
inputs:
|
|
||||||
mergeTestResults: true
|
|
||||||
testRunTitle: 'vs'
|
|
||||||
platform: Windows
|
|
||||||
publishRunAttachments: false
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
- task: PublishBuildArtifacts@1
|
|
||||||
displayName: 'Publish trash directories of failed tests'
|
|
||||||
condition: failed()
|
|
||||||
inputs:
|
|
||||||
PathtoPublish: t/failed-test-artifacts
|
|
||||||
ArtifactName: failed-vs-test-artifacts
|
|
||||||
|
|
||||||
- job: linux_clang
|
|
||||||
displayName: linux-clang
|
|
||||||
condition: succeeded()
|
|
||||||
pool:
|
|
||||||
vmImage: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- bash: |
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
|
|
||||||
|
|
||||||
sudo apt-get update &&
|
|
||||||
sudo apt-get -y install git gcc make libssl-dev libcurl4-openssl-dev libexpat-dev tcl tk gettext git-email zlib1g-dev apache2-bin &&
|
|
||||||
|
|
||||||
export CC=clang || exit 1
|
|
||||||
|
|
||||||
ci/install-dependencies.sh || exit 1
|
|
||||||
ci/run-build-and-tests.sh || {
|
|
||||||
ci/print-test-failures.sh
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
|
|
||||||
displayName: 'ci/run-build-and-tests.sh'
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
displayName: 'Publish Test Results **/TEST-*.xml'
|
|
||||||
inputs:
|
|
||||||
mergeTestResults: true
|
|
||||||
testRunTitle: 'linux-clang'
|
|
||||||
platform: Linux
|
|
||||||
publishRunAttachments: false
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
- task: PublishBuildArtifacts@1
|
|
||||||
displayName: 'Publish trash directories of failed tests'
|
|
||||||
condition: failed()
|
|
||||||
inputs:
|
|
||||||
PathtoPublish: t/failed-test-artifacts
|
|
||||||
ArtifactName: failed-test-artifacts
|
|
||||||
|
|
||||||
- job: linux_gcc
|
|
||||||
displayName: linux-gcc
|
|
||||||
condition: succeeded()
|
|
||||||
pool:
|
|
||||||
vmImage: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- bash: |
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
|
|
||||||
|
|
||||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test &&
|
|
||||||
sudo apt-get update &&
|
|
||||||
sudo apt-get -y install git gcc make libssl-dev libcurl4-openssl-dev libexpat-dev tcl tk gettext git-email zlib1g-dev apache2 language-pack-is git-svn gcc-8 || exit 1
|
|
||||||
|
|
||||||
ci/install-dependencies.sh || exit 1
|
|
||||||
ci/run-build-and-tests.sh || {
|
|
||||||
ci/print-test-failures.sh
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
|
|
||||||
displayName: 'ci/run-build-and-tests.sh'
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
displayName: 'Publish Test Results **/TEST-*.xml'
|
|
||||||
inputs:
|
|
||||||
mergeTestResults: true
|
|
||||||
testRunTitle: 'linux-gcc'
|
|
||||||
platform: Linux
|
|
||||||
publishRunAttachments: false
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
- task: PublishBuildArtifacts@1
|
|
||||||
displayName: 'Publish trash directories of failed tests'
|
|
||||||
condition: failed()
|
|
||||||
inputs:
|
|
||||||
PathtoPublish: t/failed-test-artifacts
|
|
||||||
ArtifactName: failed-test-artifacts
|
|
||||||
|
|
||||||
- job: osx_clang
|
|
||||||
displayName: osx-clang
|
|
||||||
condition: succeeded()
|
|
||||||
pool:
|
|
||||||
vmImage: macOS-latest
|
|
||||||
steps:
|
|
||||||
- bash: |
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
|
|
||||||
|
|
||||||
export CC=clang
|
|
||||||
|
|
||||||
ci/install-dependencies.sh || exit 1
|
|
||||||
ci/run-build-and-tests.sh || {
|
|
||||||
ci/print-test-failures.sh
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || umount "$HOME/test-cache" || exit 1
|
|
||||||
displayName: 'ci/run-build-and-tests.sh'
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
displayName: 'Publish Test Results **/TEST-*.xml'
|
|
||||||
inputs:
|
|
||||||
mergeTestResults: true
|
|
||||||
testRunTitle: 'osx-clang'
|
|
||||||
platform: macOS
|
|
||||||
publishRunAttachments: false
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
- task: PublishBuildArtifacts@1
|
|
||||||
displayName: 'Publish trash directories of failed tests'
|
|
||||||
condition: failed()
|
|
||||||
inputs:
|
|
||||||
PathtoPublish: t/failed-test-artifacts
|
|
||||||
ArtifactName: failed-test-artifacts
|
|
||||||
|
|
||||||
- job: osx_gcc
|
|
||||||
displayName: osx-gcc
|
|
||||||
condition: succeeded()
|
|
||||||
pool:
|
|
||||||
vmImage: macOS-latest
|
|
||||||
steps:
|
|
||||||
- bash: |
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
|
|
||||||
|
|
||||||
ci/install-dependencies.sh || exit 1
|
|
||||||
ci/run-build-and-tests.sh || {
|
|
||||||
ci/print-test-failures.sh
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || umount "$HOME/test-cache" || exit 1
|
|
||||||
displayName: 'ci/run-build-and-tests.sh'
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
displayName: 'Publish Test Results **/TEST-*.xml'
|
|
||||||
inputs:
|
|
||||||
mergeTestResults: true
|
|
||||||
testRunTitle: 'osx-gcc'
|
|
||||||
platform: macOS
|
|
||||||
publishRunAttachments: false
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
- task: PublishBuildArtifacts@1
|
|
||||||
displayName: 'Publish trash directories of failed tests'
|
|
||||||
condition: failed()
|
|
||||||
inputs:
|
|
||||||
PathtoPublish: t/failed-test-artifacts
|
|
||||||
ArtifactName: failed-test-artifacts
|
|
||||||
|
|
||||||
- job: gettext_poison
|
|
||||||
displayName: GETTEXT_POISON
|
|
||||||
condition: succeeded()
|
|
||||||
pool:
|
|
||||||
vmImage: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- bash: |
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
|
|
||||||
|
|
||||||
sudo apt-get update &&
|
|
||||||
sudo apt-get -y install git gcc make libssl-dev libcurl4-openssl-dev libexpat-dev tcl tk gettext git-email zlib1g-dev &&
|
|
||||||
|
|
||||||
export jobname=GETTEXT_POISON || exit 1
|
|
||||||
|
|
||||||
ci/run-build-and-tests.sh || {
|
|
||||||
ci/print-test-failures.sh
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
|
|
||||||
displayName: 'ci/run-build-and-tests.sh'
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
displayName: 'Publish Test Results **/TEST-*.xml'
|
|
||||||
inputs:
|
|
||||||
mergeTestResults: true
|
|
||||||
testRunTitle: 'gettext-poison'
|
|
||||||
platform: Linux
|
|
||||||
publishRunAttachments: false
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
- task: PublishBuildArtifacts@1
|
|
||||||
displayName: 'Publish trash directories of failed tests'
|
|
||||||
condition: failed()
|
|
||||||
inputs:
|
|
||||||
PathtoPublish: t/failed-test-artifacts
|
|
||||||
ArtifactName: failed-test-artifacts
|
|
||||||
|
|
||||||
- job: linux32
|
|
||||||
displayName: Linux32
|
|
||||||
condition: succeeded()
|
|
||||||
pool:
|
|
||||||
vmImage: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- bash: |
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
|
|
||||||
|
|
||||||
res=0
|
|
||||||
sudo AGENT_OS="$AGENT_OS" BUILD_BUILDNUMBER="$BUILD_BUILDNUMBER" BUILD_REPOSITORY_URI="$BUILD_REPOSITORY_URI" BUILD_SOURCEBRANCH="$BUILD_SOURCEBRANCH" BUILD_SOURCEVERSION="$BUILD_SOURCEVERSION" SYSTEM_PHASENAME="$SYSTEM_PHASENAME" SYSTEM_TASKDEFINITIONSURI="$SYSTEM_TASKDEFINITIONSURI" SYSTEM_TEAMPROJECT="$SYSTEM_TEAMPROJECT" CC=$CC MAKEFLAGS="$MAKEFLAGS" jobname=Linux32 bash -lxc ci/run-docker.sh || res=1
|
|
||||||
|
|
||||||
sudo chmod a+r t/out/TEST-*.xml
|
|
||||||
test ! -d t/failed-test-artifacts || sudo chmod a+r t/failed-test-artifacts
|
|
||||||
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || res=1
|
|
||||||
exit $res
|
|
||||||
displayName: 'jobname=Linux32 ci/run-docker.sh'
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
displayName: 'Publish Test Results **/TEST-*.xml'
|
|
||||||
inputs:
|
|
||||||
mergeTestResults: true
|
|
||||||
testRunTitle: 'linux32'
|
|
||||||
platform: Linux
|
|
||||||
publishRunAttachments: false
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
- task: PublishBuildArtifacts@1
|
|
||||||
displayName: 'Publish trash directories of failed tests'
|
|
||||||
condition: failed()
|
|
||||||
inputs:
|
|
||||||
PathtoPublish: t/failed-test-artifacts
|
|
||||||
ArtifactName: failed-test-artifacts
|
|
||||||
|
|
||||||
- job: static_analysis
|
|
||||||
displayName: StaticAnalysis
|
|
||||||
condition: succeeded()
|
|
||||||
pool:
|
|
||||||
vmImage: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- bash: |
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
|
|
||||||
|
|
||||||
sudo apt-get update &&
|
|
||||||
sudo apt-get install -y coccinelle libcurl4-openssl-dev libssl-dev libexpat-dev gettext &&
|
|
||||||
|
|
||||||
export jobname=StaticAnalysis &&
|
|
||||||
|
|
||||||
ci/run-static-analysis.sh || exit 1
|
|
||||||
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
|
|
||||||
displayName: 'ci/run-static-analysis.sh'
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
||||||
|
|
||||||
- job: documentation
|
|
||||||
displayName: Documentation
|
|
||||||
condition: succeeded()
|
|
||||||
pool:
|
|
||||||
vmImage: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- bash: |
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
|
|
||||||
|
|
||||||
sudo apt-get update &&
|
|
||||||
sudo apt-get install -y asciidoc xmlto asciidoctor docbook-xsl-ns &&
|
|
||||||
|
|
||||||
export ALREADY_HAVE_ASCIIDOCTOR=yes. &&
|
|
||||||
export jobname=Documentation &&
|
|
||||||
|
|
||||||
ci/test-documentation.sh || exit 1
|
|
||||||
|
|
||||||
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
|
|
||||||
displayName: 'ci/test-documentation.sh'
|
|
||||||
env:
|
|
||||||
GITFILESHAREPWD: $(gitfileshare.pwd)
|
|
16
ci/git-problem-matcher.json
Normal file
16
ci/git-problem-matcher.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"problemMatcher": [
|
||||||
|
{
|
||||||
|
"owner": "git-test-suite",
|
||||||
|
"pattern": [
|
||||||
|
{
|
||||||
|
"regexp": "^([^ :]+\\.sh):(\\d+): (error|warning|info):\\s+(.*)$",
|
||||||
|
"file": 1,
|
||||||
|
"line": 2,
|
||||||
|
"severity": 3,
|
||||||
|
"message": 4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -7,12 +7,16 @@
|
|||||||
|
|
||||||
P4WHENCE=http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION
|
P4WHENCE=http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION
|
||||||
LFSWHENCE=https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION
|
LFSWHENCE=https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION
|
||||||
|
UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl-dev libexpat-dev
|
||||||
|
tcl tk gettext zlib1g-dev perl-modules liberror-perl libauthen-sasl-perl
|
||||||
|
libemail-valid-perl libio-socket-ssl-perl libnet-smtp-ssl-perl"
|
||||||
|
|
||||||
case "$jobname" in
|
case "$jobname" in
|
||||||
linux-clang|linux-gcc)
|
linux-clang|linux-gcc)
|
||||||
sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
|
sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
|
||||||
sudo apt-get -q update
|
sudo apt-get -q update
|
||||||
sudo apt-get -q -y install language-pack-is libsvn-perl apache2
|
sudo apt-get -q -y install language-pack-is libsvn-perl apache2 \
|
||||||
|
$UBUNTU_COMMON_PKGS
|
||||||
case "$jobname" in
|
case "$jobname" in
|
||||||
linux-gcc)
|
linux-gcc)
|
||||||
sudo apt-get -q -y install gcc-8
|
sudo apt-get -q -y install gcc-8
|
||||||
@ -59,14 +63,18 @@ osx-clang|osx-gcc)
|
|||||||
StaticAnalysis)
|
StaticAnalysis)
|
||||||
sudo apt-get -q update
|
sudo apt-get -q update
|
||||||
sudo apt-get -q -y install coccinelle libcurl4-openssl-dev libssl-dev \
|
sudo apt-get -q -y install coccinelle libcurl4-openssl-dev libssl-dev \
|
||||||
libexpat-dev gettext
|
libexpat-dev gettext make
|
||||||
;;
|
;;
|
||||||
Documentation)
|
Documentation)
|
||||||
sudo apt-get -q update
|
sudo apt-get -q update
|
||||||
sudo apt-get -q -y install asciidoc xmlto docbook-xsl-ns
|
sudo apt-get -q -y install asciidoc xmlto docbook-xsl-ns make
|
||||||
|
|
||||||
test -n "$ALREADY_HAVE_ASCIIDOCTOR" ||
|
test -n "$ALREADY_HAVE_ASCIIDOCTOR" ||
|
||||||
gem install --version 1.5.8 asciidoctor
|
sudo gem install --version 1.5.8 asciidoctor
|
||||||
|
;;
|
||||||
|
linux-gcc-4.8|GETTEXT_POISON)
|
||||||
|
sudo apt-get -q update
|
||||||
|
sudo apt-get -q -y install $UBUNTU_COMMON_PKGS
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
31
ci/lib.sh
31
ci/lib.sh
@ -34,7 +34,7 @@ save_good_tree () {
|
|||||||
# successfully before (e.g. because the branch got rebased, changing only
|
# successfully before (e.g. because the branch got rebased, changing only
|
||||||
# the commit messages).
|
# the commit messages).
|
||||||
skip_good_tree () {
|
skip_good_tree () {
|
||||||
if test "$TRAVIS_DEBUG_MODE" = true
|
if test "$TRAVIS_DEBUG_MODE" = true || test true = "$GITHUB_ACTIONS"
|
||||||
then
|
then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
@ -79,6 +79,9 @@ check_unignored_build_artifacts ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# GitHub Action doesn't set TERM, which is required by tput
|
||||||
|
export TERM=${TERM:-dumb}
|
||||||
|
|
||||||
# Clear MAKEFLAGS that may come from the outside world.
|
# Clear MAKEFLAGS that may come from the outside world.
|
||||||
export MAKEFLAGS=
|
export MAKEFLAGS=
|
||||||
|
|
||||||
@ -136,8 +139,32 @@ then
|
|||||||
MAKEFLAGS="$MAKEFLAGS --jobs=10"
|
MAKEFLAGS="$MAKEFLAGS --jobs=10"
|
||||||
test windows_nt != "$CI_OS_NAME" ||
|
test windows_nt != "$CI_OS_NAME" ||
|
||||||
GIT_TEST_OPTS="--no-chain-lint --no-bin-wrappers $GIT_TEST_OPTS"
|
GIT_TEST_OPTS="--no-chain-lint --no-bin-wrappers $GIT_TEST_OPTS"
|
||||||
|
elif test true = "$GITHUB_ACTIONS"
|
||||||
|
then
|
||||||
|
CI_TYPE=github-actions
|
||||||
|
CI_BRANCH="$GITHUB_REF"
|
||||||
|
CI_COMMIT="$GITHUB_SHA"
|
||||||
|
CI_OS_NAME="$(echo "$RUNNER_OS" | tr A-Z a-z)"
|
||||||
|
test macos != "$CI_OS_NAME" || CI_OS_NAME=osx
|
||||||
|
CI_REPO_SLUG="$GITHUB_REPOSITORY"
|
||||||
|
CI_JOB_ID="$GITHUB_RUN_ID"
|
||||||
|
CC="${CC:-gcc}"
|
||||||
|
|
||||||
|
cache_dir="$HOME/none"
|
||||||
|
|
||||||
|
export GIT_PROVE_OPTS="--timer --jobs 10"
|
||||||
|
export GIT_TEST_OPTS="--verbose-log -x"
|
||||||
|
MAKEFLAGS="$MAKEFLAGS --jobs=10"
|
||||||
|
test windows != "$CI_OS_NAME" ||
|
||||||
|
GIT_TEST_OPTS="--no-chain-lint --no-bin-wrappers $GIT_TEST_OPTS"
|
||||||
|
|
||||||
|
# https://github.com/actions/toolkit/blob/master/docs/commands.md#problem-matchers
|
||||||
|
echo "::add-matcher::ci/git-problem-matcher.json"
|
||||||
|
test linux-musl = "$jobname" ||
|
||||||
|
MAKEFLAGS="$MAKEFLAGS TEST_SHELL_PATH=/bin/sh"
|
||||||
else
|
else
|
||||||
echo "Could not identify CI type" >&2
|
echo "Could not identify CI type" >&2
|
||||||
|
env >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -195,7 +222,7 @@ osx-clang|osx-gcc)
|
|||||||
# Travis CI OS X
|
# Travis CI OS X
|
||||||
export GIT_SKIP_TESTS="t9810 t9816"
|
export GIT_SKIP_TESTS="t9810 t9816"
|
||||||
;;
|
;;
|
||||||
GIT_TEST_GETTEXT_POISON)
|
GETTEXT_POISON)
|
||||||
export GIT_TEST_GETTEXT_POISON=true
|
export GIT_TEST_GETTEXT_POISON=true
|
||||||
;;
|
;;
|
||||||
Linux32)
|
Linux32)
|
||||||
|
@ -46,6 +46,13 @@ do
|
|||||||
mv "$trash_dir" failed-test-artifacts
|
mv "$trash_dir" failed-test-artifacts
|
||||||
continue
|
continue
|
||||||
;;
|
;;
|
||||||
|
github-actions)
|
||||||
|
mkdir -p failed-test-artifacts
|
||||||
|
echo "::set-env name=FAILED_TEST_ARTIFACTS::t/failed-test-artifacts"
|
||||||
|
cp "${TEST_EXIT%.exit}.out" failed-test-artifacts/
|
||||||
|
tar czf failed-test-artifacts/"$test_name".trash.tar.gz "$trash_dir"
|
||||||
|
continue
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unhandled CI type: $CI_TYPE" >&2
|
echo "Unhandled CI type: $CI_TYPE" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -675,6 +675,18 @@ die () {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
file_lineno () {
|
||||||
|
test -z "$GIT_TEST_FRAMEWORK_SELFTEST" && test -n "$BASH" || return 0
|
||||||
|
local i
|
||||||
|
for i in ${!BASH_SOURCE[*]}
|
||||||
|
do
|
||||||
|
case $i,"${BASH_SOURCE[$i]##*/}" in
|
||||||
|
0,t[0-9]*.sh) echo "t/${BASH_SOURCE[$i]}:$LINENO: ${1+$1: }"; return;;
|
||||||
|
*,t[0-9]*.sh) echo "t/${BASH_SOURCE[$i]}:${BASH_LINENO[$(($i-1))]}: ${1+$1: }"; return;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
GIT_EXIT_OK=
|
GIT_EXIT_OK=
|
||||||
trap 'die' EXIT
|
trap 'die' EXIT
|
||||||
# Disable '-x' tracing, because with some shells, notably dash, it
|
# Disable '-x' tracing, because with some shells, notably dash, it
|
||||||
@ -720,7 +732,7 @@ test_failure_ () {
|
|||||||
write_junit_xml_testcase "$1" " $junit_insert"
|
write_junit_xml_testcase "$1" " $junit_insert"
|
||||||
fi
|
fi
|
||||||
test_failure=$(($test_failure + 1))
|
test_failure=$(($test_failure + 1))
|
||||||
say_color error "not ok $test_count - $1"
|
say_color error "$(file_lineno error)not ok $test_count - $1"
|
||||||
shift
|
shift
|
||||||
printf '%s\n' "$*" | sed -e 's/^/# /'
|
printf '%s\n' "$*" | sed -e 's/^/# /'
|
||||||
test "$immediate" = "" || { finalize_junit_xml; GIT_EXIT_OK=t; exit 1; }
|
test "$immediate" = "" || { finalize_junit_xml; GIT_EXIT_OK=t; exit 1; }
|
||||||
|
Loading…
Reference in New Issue
Block a user