Unverified Commit 4f0ee02f by Edward Thomson Committed by GitHub

Merge pull request #6306 from libgit2/ethomson/ci_test

Include test results data in CI
parents 6bd024aa 3fada669
...@@ -6,7 +6,7 @@ on: ...@@ -6,7 +6,7 @@ on:
- cron: '21 3 * * 1' - cron: '21 3 * * 1'
env: env:
docker-registry: docker.pkg.github.com docker-registry: ghcr.io
jobs: jobs:
analyze: analyze:
......
...@@ -10,7 +10,7 @@ on: ...@@ -10,7 +10,7 @@ on:
workflow_dispatch: workflow_dispatch:
env: env:
docker-registry: docker.pkg.github.com docker-registry: ghcr.io
docker-config-path: source/ci/docker docker-config-path: source/ci/docker
jobs: jobs:
...@@ -69,7 +69,7 @@ jobs: ...@@ -69,7 +69,7 @@ jobs:
if [ "${{ matrix.container.base }}" != "" ]; then if [ "${{ matrix.container.base }}" != "" ]; then
BASE_ARG="--build-arg BASE=${{ matrix.container.base }}" BASE_ARG="--build-arg BASE=${{ matrix.container.base }}"
fi fi
docker build -t ${{ env.docker-registry-container-sha }} ${BASE_ARG} -f ${{ env.dockerfile }} . docker build -t ${{ env.docker-registry-container-sha }} --build-arg UID=$(id -u) --build-arg GID=$(id -g) ${BASE_ARG} -f ${{ env.dockerfile }} .
docker tag ${{ env.docker-registry-container-sha }} ${{ env.docker-registry-container-latest }} docker tag ${{ env.docker-registry-container-sha }} ${{ env.docker-registry-container-latest }}
docker push ${{ env.docker-registry-container-sha }} docker push ${{ env.docker-registry-container-sha }}
docker push ${{ env.docker-registry-container-latest }} docker push ${{ env.docker-registry-container-latest }}
...@@ -85,6 +85,7 @@ jobs: ...@@ -85,6 +85,7 @@ jobs:
matrix: matrix:
platform: platform:
- name: "Linux (Xenial, GCC, OpenSSL)" - name: "Linux (Xenial, GCC, OpenSSL)"
id: xenial-gcc-openssl
container: container:
name: xenial name: xenial
env: env:
...@@ -93,6 +94,7 @@ jobs: ...@@ -93,6 +94,7 @@ jobs:
CMAKE_OPTIONS: -DUSE_HTTPS=OpenSSL -DREGEX_BACKEND=builtin -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=ON -DDEBUG_STRICT_ALLOC=ON -DDEBUG_STRICT_OPEN=ON CMAKE_OPTIONS: -DUSE_HTTPS=OpenSSL -DREGEX_BACKEND=builtin -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=ON -DDEBUG_STRICT_ALLOC=ON -DDEBUG_STRICT_OPEN=ON
os: ubuntu-latest os: ubuntu-latest
- name: Linux (Xenial, GCC, mbedTLS) - name: Linux (Xenial, GCC, mbedTLS)
id: xenial-gcc-mbedtls
container: container:
name: xenial name: xenial
env: env:
...@@ -101,6 +103,7 @@ jobs: ...@@ -101,6 +103,7 @@ jobs:
CMAKE_OPTIONS: -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=ON CMAKE_OPTIONS: -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=ON
os: ubuntu-latest os: ubuntu-latest
- name: "Linux (Xenial, Clang, OpenSSL)" - name: "Linux (Xenial, Clang, OpenSSL)"
id: xenial-clang-openssl
container: container:
name: xenial name: xenial
env: env:
...@@ -109,6 +112,7 @@ jobs: ...@@ -109,6 +112,7 @@ jobs:
CMAKE_OPTIONS: -DUSE_HTTPS=OpenSSL -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=ON CMAKE_OPTIONS: -DUSE_HTTPS=OpenSSL -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=ON
os: ubuntu-latest os: ubuntu-latest
- name: "Linux (Xenial, Clang, mbedTLS)" - name: "Linux (Xenial, Clang, mbedTLS)"
id: xenial-clang-mbedtls
container: container:
name: xenial name: xenial
env: env:
...@@ -117,6 +121,7 @@ jobs: ...@@ -117,6 +121,7 @@ jobs:
CMAKE_GENERATOR: Ninja CMAKE_GENERATOR: Ninja
os: ubuntu-latest os: ubuntu-latest
- name: "Linux (MemorySanitizer)" - name: "Linux (MemorySanitizer)"
id: memorysanitizer
container: container:
name: focal name: focal
env: env:
...@@ -130,6 +135,7 @@ jobs: ...@@ -130,6 +135,7 @@ jobs:
UBSAN_OPTIONS: print_stacktrace=1 UBSAN_OPTIONS: print_stacktrace=1
os: ubuntu-latest os: ubuntu-latest
- name: "Linux (UndefinedBehaviorSanitizer)" - name: "Linux (UndefinedBehaviorSanitizer)"
id: ubsanitizer
container: container:
name: focal name: focal
env: env:
...@@ -143,6 +149,7 @@ jobs: ...@@ -143,6 +149,7 @@ jobs:
UBSAN_OPTIONS: print_stacktrace=1 UBSAN_OPTIONS: print_stacktrace=1
os: ubuntu-latest os: ubuntu-latest
- name: "Linux (ThreadSanitizer)" - name: "Linux (ThreadSanitizer)"
id: threadsanitizer
container: container:
name: focal name: focal
env: env:
...@@ -157,6 +164,7 @@ jobs: ...@@ -157,6 +164,7 @@ jobs:
TSAN_OPTIONS: suppressions=/home/libgit2/source/script/thread-sanitizer.supp second_deadlock_stack=1 TSAN_OPTIONS: suppressions=/home/libgit2/source/script/thread-sanitizer.supp second_deadlock_stack=1
os: ubuntu-latest os: ubuntu-latest
- name: "macOS" - name: "macOS"
id: macos
os: macos-10.15 os: macos-10.15
env: env:
CC: clang CC: clang
...@@ -166,6 +174,7 @@ jobs: ...@@ -166,6 +174,7 @@ jobs:
SKIP_NEGOTIATE_TESTS: true SKIP_NEGOTIATE_TESTS: true
setup-script: osx setup-script: osx
- name: "Windows (amd64, Visual Studio)" - name: "Windows (amd64, Visual Studio)"
id: windows-amd64-vs
os: windows-2019 os: windows-2019
env: env:
ARCH: amd64 ARCH: amd64
...@@ -174,6 +183,7 @@ jobs: ...@@ -174,6 +183,7 @@ jobs:
SKIP_SSH_TESTS: true SKIP_SSH_TESTS: true
SKIP_NEGOTIATE_TESTS: true SKIP_NEGOTIATE_TESTS: true
- name: "Windows (x86, Visual Studio)" - name: "Windows (x86, Visual Studio)"
id: windows-x86-vs
os: windows-2019 os: windows-2019
env: env:
ARCH: x86 ARCH: x86
...@@ -182,6 +192,7 @@ jobs: ...@@ -182,6 +192,7 @@ jobs:
SKIP_SSH_TESTS: true SKIP_SSH_TESTS: true
SKIP_NEGOTIATE_TESTS: true SKIP_NEGOTIATE_TESTS: true
- name: "Windows (amd64, mingw)" - name: "Windows (amd64, mingw)"
id: windows-amd64-mingw
os: windows-2019 os: windows-2019
setup-script: mingw setup-script: mingw
env: env:
...@@ -193,6 +204,7 @@ jobs: ...@@ -193,6 +204,7 @@ jobs:
SKIP_SSH_TESTS: true SKIP_SSH_TESTS: true
SKIP_NEGOTIATE_TESTS: true SKIP_NEGOTIATE_TESTS: true
- name: "Windows (x86, mingw)" - name: "Windows (x86, mingw)"
id: windows-x86-mingw
os: windows-2019 os: windows-2019
setup-script: mingw setup-script: mingw
env: env:
...@@ -237,10 +249,12 @@ jobs: ...@@ -237,10 +249,12 @@ jobs:
export GITTEST_NEGOTIATE_PASSWORD="${{ secrets.GITTEST_NEGOTIATE_PASSWORD }}" export GITTEST_NEGOTIATE_PASSWORD="${{ secrets.GITTEST_NEGOTIATE_PASSWORD }}"
if [ -n "${{ matrix.platform.container.name }}" ]; then if [ -n "${{ matrix.platform.container.name }}" ]; then
mkdir build
docker run \ docker run \
--rm \ --rm \
--user libgit2:libgit2 \ --user "$(id -u):$(id -g)" \
-v "$(pwd)/source:/home/libgit2/source" \ -v "$(pwd)/source:/home/libgit2/source" \
-v "$(pwd)/build:/home/libgit2/build" \
-w /home/libgit2 \ -w /home/libgit2 \
-e ASAN_SYMBOLIZER_PATH \ -e ASAN_SYMBOLIZER_PATH \
-e CC \ -e CC \
...@@ -255,13 +269,33 @@ jobs: ...@@ -255,13 +269,33 @@ jobs:
-e TSAN_OPTIONS \ -e TSAN_OPTIONS \
-e UBSAN_OPTIONS \ -e UBSAN_OPTIONS \
${{ env.docker-registry-container-sha }} \ ${{ env.docker-registry-container-sha }} \
/bin/bash -c "mkdir build && cd build && ../source/ci/build.sh && ../source/ci/test.sh" /bin/bash -c "cd build && ../source/ci/build.sh && ../source/ci/test.sh"
else else
mkdir build && cd build mkdir build
cd build
../source/ci/build.sh ../source/ci/build.sh
../source/ci/test.sh ../source/ci/test.sh
fi fi
shell: bash shell: bash
- name: Upload test results
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-${{ matrix.platform.id }}
path: build/results_*.xml
test_results:
name: Test results
needs: [ build ]
runs-on: ubuntu-latest
steps:
- name: Download test results
uses: actions/download-artifact@v3
- name: Generate test summary
uses: test-summary/action@v1
with:
paths: 'test-results-*/*.xml'
# Generate documentation using docurium. We'll upload the documentation # Generate documentation using docurium. We'll upload the documentation
# as a build artifact so that it can be reviewed as part of a pull # as a build artifact so that it can be reviewed as part of a pull
...@@ -271,6 +305,7 @@ jobs: ...@@ -271,6 +305,7 @@ jobs:
documentation: documentation:
name: Generate documentation name: Generate documentation
needs: [ containers ] needs: [ containers ]
if: success() || failure()
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out repository - name: Check out repository
......
...@@ -7,7 +7,7 @@ on: ...@@ -7,7 +7,7 @@ on:
- cron: '15 1 * * *' - cron: '15 1 * * *'
env: env:
docker-registry: docker.pkg.github.com docker-registry: ghcr.io
docker-config-path: source/ci/docker docker-config-path: source/ci/docker
jobs: jobs:
......
...@@ -38,7 +38,12 @@ RUN cd /tmp && \ ...@@ -38,7 +38,12 @@ RUN cd /tmp && \
rm -rf mbedtls-2.16.2 rm -rf mbedtls-2.16.2
FROM mbedtls AS adduser FROM mbedtls AS adduser
RUN useradd --shell /bin/bash libgit2 --create-home ARG UID=""
ARG GID=""
RUN if [ "${UID}" != "" ]; then USER_ARG="--uid ${UID}"; fi && \
if [ "${GID}" != "" ]; then GROUP_ARG="--gid ${GID}"; fi && \
groupadd ${GROUP_ARG} libgit2 && \
useradd ${USER_ARG} --gid libgit2 --shell /bin/bash --create-home libgit2
FROM adduser AS configure FROM adduser AS configure
RUN mkdir /var/run/sshd RUN mkdir /var/run/sshd
...@@ -48,7 +48,12 @@ RUN cd /tmp && \ ...@@ -48,7 +48,12 @@ RUN cd /tmp && \
rm -rf cmake-3.21.1 rm -rf cmake-3.21.1
FROM cmake AS adduser FROM cmake AS adduser
RUN useradd --shell /bin/bash libgit2 --create-home ARG UID=""
ARG GID=""
RUN if [ "${UID}" != "" ]; then USER_ARG="--uid ${UID}"; fi && \
if [ "${GID}" != "" ]; then GROUP_ARG="--gid ${GID}"; fi && \
groupadd ${GROUP_ARG} libgit2 && \
useradd ${USER_ARG} --gid libgit2 --shell /bin/bash --create-home libgit2
FROM adduser AS configure FROM adduser AS configure
ENV PKG_CONFIG_PATH /usr/local/lib/pkgconfig ENV PKG_CONFIG_PATH /usr/local/lib/pkgconfig
......
ARG BASE=centos:8 ARG BASE=centos:8
FROM ${BASE} AS yum FROM ${BASE} AS stream
RUN dnf -y --disablerepo '*' --enablerepo=extras swap centos-linux-repos centos-stream-repos && \
dnf -y distro-sync
FROM stream AS yum
RUN yum install -y \ RUN yum install -y \
which \ which \
bzip2 \ bzip2 \
...@@ -40,7 +44,12 @@ RUN cd /tmp && \ ...@@ -40,7 +44,12 @@ RUN cd /tmp && \
rm -rf valgrind-3.15.0 rm -rf valgrind-3.15.0
FROM valgrind AS adduser FROM valgrind AS adduser
RUN useradd --shell /bin/bash libgit2 --create-home ARG UID=""
ARG GID=""
RUN if [ "${UID}" != "" ]; then USER_ARG="--uid ${UID}"; fi && \
if [ "${GID}" != "" ]; then GROUP_ARG="--gid ${GID}"; fi && \
groupadd ${GROUP_ARG} libgit2 && \
useradd ${USER_ARG} --gid libgit2 --shell /bin/bash --create-home libgit2
FROM adduser AS configure FROM adduser AS configure
ENV PKG_CONFIG_PATH /usr/local/lib/pkgconfig ENV PKG_CONFIG_PATH /usr/local/lib/pkgconfig
......
...@@ -73,7 +73,13 @@ RUN cd /tmp && \ ...@@ -73,7 +73,13 @@ RUN cd /tmp && \
rm -rf valgrind-3.15.0 rm -rf valgrind-3.15.0
FROM valgrind AS adduser FROM valgrind AS adduser
RUN useradd --shell /bin/bash libgit2 --create-home ARG UID=""
ARG GID=""
RUN if [ "${UID}" != "" ]; then USER_ARG="--uid ${UID}"; fi && \
if [ "${GID}" != "" ]; then GROUP_ARG="--gid ${GID}"; fi && \
groupadd ${GROUP_ARG} libgit2 && \
useradd ${USER_ARG} --gid libgit2 --shell /bin/bash --create-home libgit2
FROM adduser AS configure FROM adduser AS configure
RUN mkdir /var/run/sshd RUN mkdir /var/run/sshd
...@@ -60,7 +60,13 @@ RUN cd /tmp && \ ...@@ -60,7 +60,13 @@ RUN cd /tmp && \
rm -rf valgrind-3.15.0 rm -rf valgrind-3.15.0
FROM valgrind AS adduser FROM valgrind AS adduser
RUN useradd --shell /bin/bash libgit2 --create-home ARG UID=""
ARG GID=""
RUN if [ "${UID}" != "" ]; then USER_ARG="--uid ${UID}"; fi && \
if [ "${GID}" != "" ]; then GROUP_ARG="--gid ${GID}"; fi && \
groupadd ${GROUP_ARG} libgit2 && \
useradd ${USER_ARG} --gid libgit2 --shell /bin/bash --create-home libgit2
FROM adduser AS configure FROM adduser AS configure
RUN mkdir /var/run/sshd RUN mkdir /var/run/sshd
...@@ -37,9 +37,13 @@ DOCKER_REGISTRY_CONTAINER_SHA="${DOCKER_REGISTRY_CONTAINER}:${DOCKER_SHA}" ...@@ -37,9 +37,13 @@ DOCKER_REGISTRY_CONTAINER_SHA="${DOCKER_REGISTRY_CONTAINER}:${DOCKER_SHA}"
echo "docker-registry-container-sha=${DOCKER_REGISTRY_CONTAINER_SHA}" >> $GITHUB_ENV echo "docker-registry-container-sha=${DOCKER_REGISTRY_CONTAINER_SHA}" >> $GITHUB_ENV
echo "docker-registry-container-latest=${DOCKER_REGISTRY_CONTAINER}:latest" >> $GITHUB_ENV echo "docker-registry-container-latest=${DOCKER_REGISTRY_CONTAINER}:latest" >> $GITHUB_ENV
echo "::: logging in to ${DOCKER_REGISTRY} as ${GITHUB_ACTOR}"
exists="true" exists="true"
docker login https://${DOCKER_REGISTRY} -u ${GITHUB_ACTOR} -p ${GITHUB_TOKEN} || exists="false" docker login https://${DOCKER_REGISTRY} -u ${GITHUB_ACTOR} -p ${GITHUB_TOKEN} || exists="false"
echo "::: pulling ${DOCKER_REGISTRY_CONTAINER_SHA}"
if [ "${exists}" != "false" ]; then if [ "${exists}" != "false" ]; then
docker pull ${DOCKER_REGISTRY_CONTAINER_SHA} || exists="false" docker pull ${DOCKER_REGISTRY_CONTAINER_SHA} || exists="false"
fi fi
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment