mirror of
https://github.com/git/git.git
synced 2024-11-23 01:46:13 +08:00
ci: create script to set up Git for Windows SDK
In order to build and test Git, we have to first set up the Git for Windows SDK, which contains various required tools and libraries. The SDK is basically a clone of [1], but that repository is quite large due to all the binaries it contains. We thus use both shallow clones and sparse checkouts to speed up the setup. To handle this complexity we use a GitHub action that is hosted externally at [2]. Unfortunately, this makes it rather hard to reuse the logic for CI platforms other than GitHub Actions. After chatting with Johannes Schindelin we came to the conclusion that it would be nice if the Git for Windows SDK would regularly publish releases that one can easily download and extract, thus moving all of the complexity into that single step. Like this, all that a CI job needs to do is to fetch and extract the resulting archive. This published release comes in the form of a new "ci-artifacts" tag that gets updated regularly [3]. Implement a new script that knows how to fetch and extract that script and convert GitHub Actions to use it. [1]: https://github.com/git-for-windows/git-sdk-64/ [2]: https://github.com/git-for-windows/setup-git-for-windows-sdk/ [3]: https://github.com/git-for-windows/git-sdk-64/releases/tag/ci-artifacts/ Helped-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
106834e34a
commit
91839a8827
16
.github/workflows/main.yml
vendored
16
.github/workflows/main.yml
vendored
@ -113,13 +113,15 @@ jobs:
|
||||
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
||||
- name: setup SDK
|
||||
shell: powershell
|
||||
run: ci/install-sdk.ps1
|
||||
- name: build
|
||||
shell: bash
|
||||
shell: powershell
|
||||
env:
|
||||
HOME: ${{runner.workspace}}
|
||||
NO_PERL: 1
|
||||
run: . /etc/profile && ci/make-test-artifacts.sh artifacts
|
||||
run: git-sdk/usr/bin/bash.exe -l -c 'ci/make-test-artifacts.sh artifacts'
|
||||
- name: zip up tracked files
|
||||
run: git archive -o artifacts/tracked.tar.gz HEAD
|
||||
- name: upload tracked files and build artifacts
|
||||
@ -147,10 +149,12 @@ jobs:
|
||||
- name: extract tracked files and build artifacts
|
||||
shell: bash
|
||||
run: tar xf artifacts.tar.gz && tar xf tracked.tar.gz
|
||||
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
||||
- name: setup SDK
|
||||
shell: powershell
|
||||
run: ci/install-sdk.ps1
|
||||
- name: test
|
||||
shell: bash
|
||||
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
|
||||
shell: powershell
|
||||
run: git-sdk/usr/bin/bash.exe -l -c 'ci/run-test-slice.sh ${{matrix.nr}} 10'
|
||||
- name: print test failures
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
shell: bash
|
||||
|
12
ci/install-sdk.ps1
Executable file
12
ci/install-sdk.ps1
Executable file
@ -0,0 +1,12 @@
|
||||
param(
|
||||
[string]$directory='git-sdk',
|
||||
[string]$url='https://github.com/git-for-windows/git-sdk-64/releases/download/ci-artifacts/git-sdk-x86_64-minimal.zip'
|
||||
)
|
||||
|
||||
Invoke-WebRequest "$url" -OutFile git-sdk.zip
|
||||
Expand-Archive -LiteralPath git-sdk.zip -DestinationPath "$directory"
|
||||
Remove-Item -Path git-sdk.zip
|
||||
|
||||
New-Item -Path .git/info -ItemType Directory -Force
|
||||
New-Item -Path .git/info/exclude -ItemType File -Force
|
||||
Add-Content -Path .git/info/exclude -Value "/$directory"
|
Loading…
Reference in New Issue
Block a user