[PATCH v4 00/12] ci: replace our Azure Pipeline by GitHub Actions
- From
Đoàn Trần Công Danh <congdanhqx@gmail.com>
- Date
- Apr 8, 2020, 04:05 UTC
- Message-ID
- <cover.1586309211.git.congdanhqx@gmail.com>
- In-Reply-To
- <pull.743.git.git.1585658913.gitgitgadget@gmail.com>
Our Azure Pipeline has served us well over the course of the past year or so, steadily catching issues before the respective patches hit the next branch.
There is a GitHub-native CI system now, though, called "GitHub Actions" [https://github.com/features/actions] which is essentially on par with Azure Pipelines as far as our needs are concerned, and it brings a couple of advantages:
* It is substantially easier to set up than Azure Pipelines: all you need is to add the YAML-based build definition, push to your fork on GitHub, and that's it. * The syntax is a bit easier to read than Azure Pipelines'. * We get more concurrent jobs (Azure Pipelines is limited to 10 concurrent jobs).
With this change, users also no longer need to open a PR at https://github.com/git/git or at https://github.com/gitgitgadget/git just to get the benefit of a CI build.
Sample run on top of dd/ci-musl-libc with dd/test-with-busybox merged: https://github.com/sgn/git/actions/runs/73179413
Sample run when this series applied into git-for-windows https://github.com/git-for-windows/git/runs/568625109
Change from v3: - Use build matrix - All dependencies are install by scripts - stop repeating environment variables - build failure's artifacts will be uploaded
Johannes Schindelin (9):
ci/lib: if CI type is unknown, show the environment variables
ci/lib: allow running in GitHub Actions
ci: fix the `jobname` of the `GETTEXT_POISON` job
ci: run gem with sudo to install asciidoctor
README: add a build badge for the GitHub Actions runs
ci: retire the Azure Pipelines definition
tests: when run in Bash, annotate test failures with file name/line
number
ci: add a problem matcher for GitHub Actions
ci: let GitHub Actions upload failed tests' directoriesĐoàn Trần Công Danh (3): ci/lib: set TERM environment variable if not exist ci: explicit install all required packages ci: configure GitHub Actions for CI/PR
.github/workflows/main.yml | 230 +++++++++++++++ .travis.yml | 2 +- README.md | 2 +- azure-pipelines.yml | 558 ------------------------------------ ci/git-problem-matcher.json | 16 ++ ci/install-dependencies.sh | 16 +- ci/lib.sh | 31 +- ci/print-test-failures.sh | 7 + t/test-lib.sh | 14 +- 9 files changed, 310 insertions(+), 566 deletions(-) create mode 100644 .github/workflows/main.yml delete mode 100644 azure-pipelines.yml create mode 100644 ci/git-problem-matcher.json
Range-diff against v3:
1: 3f9f1c6335 = 1: 2219bf3db9 ci/lib: if CI type is unknown, show the environment variables
2: 7a4f646bc1 = 2: 2818799a4b ci/lib: allow running in GitHub Actions
3: 9a03c0844c = 3: b88586c2c5 ci/lib: set TERM environment variable if not exist
4: 7308199e24 < -: ---------- ci: configure GitHub Actions for CI/PR
-: ---------- > 4: 1df60e677c ci: fix the `jobname` of the `GETTEXT_POISON` job
-: ---------- > 5: 4f80724641 ci: explicit install all required packages
-: ---------- > 6: 795ec656c6 ci: run gem with sudo to install asciidoctor
-: ---------- > 7: ec0aa20119 ci: configure GitHub Actions for CI/PR
5: 365ba5e831 = 8: 46f2b6bce6 README: add a build badge for the GitHub Actions runs
6: 53094612d3 ! 9: 92f2623dc7 ci: retire the Azure Pipelines definition
@@ Commit message
Pipelines would be redundant, and a waste of energy.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
- [Danh: fix apply conflicts]
Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
## README.md ##
@@ azure-pipelines.yml (deleted)
- PathtoPublish: t/failed-test-artifacts
- ArtifactName: failed-test-artifacts
-
--- job: linux_musl
-- displayName: linux-musl
-- 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=linux-musl 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=linux-musl ci/run-docker.sh'
-- env:
-- GITFILESHAREPWD: $(gitfileshare.pwd)
-- - task: PublishTestResults@2
-- displayName: 'Publish Test Results **/TEST-*.xml'
-- inputs:
-- mergeTestResults: true
-- testRunTitle: 'musl'
-- 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()
-: ---------- > 10: f688fa50d3 tests: when run in Bash, annotate test failures with file name/line number
-: ---------- > 11: 715d1f732f ci: add a problem matcher for GitHub Actions
-: ---------- > 12: 0908d5ab9b ci: let GitHub Actions upload failed tests' directories-- 2.26.0.334.g6536db25bb