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@xxxxxx> - [Danh: fix apply conflicts] Signed-off-by: Đoàn Trần Công Danh <congdanhqx@xxxxxxxxx> ## 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