Skip to content

Commit

Permalink
Speedup test by using cache image.
Browse files Browse the repository at this point in the history
  • Loading branch information
winlinvip committed Aug 14, 2022
1 parent d4e5138 commit 1fe12b8
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 77 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,10 @@ jobs:

- name: Build SRS
run: |
cd trunk && ./configure && make
echo "pwd: $(pwd), who: $(whoami)"
docker run --rm -v $(pwd):$(pwd) -w $(pwd)/trunk ossrs/srs:ubuntu20-cache \
bash -c "./configure --jobs=2 && chmod 777 -R objs"
cd trunk && ./configure --jobs=2 && make -j2
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
71 changes: 41 additions & 30 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ on: [push, pull_request]

jobs:
build-centos7:
name: actions-test-build-centos7
name: build-centos7
runs-on: ubuntu-20.04
needs:
- multile-arch-amd64
steps:
- name: Checkout repository
uses: actions/checkout@v2
Expand All @@ -23,8 +25,10 @@ jobs:
run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target centos7-ansi-no-ffmpeg .

build-centos6:
name: actions-test-build-centos6
name: build-centos6
runs-on: ubuntu-20.04
needs:
- multile-arch-amd64
steps:
- name: Checkout repository
uses: actions/checkout@v2
Expand All @@ -34,21 +38,11 @@ jobs:
- name: Build on CentOS6, with SRT
run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target centos6-srt .

build-centos8:
name: actions-test-build-centos8
runs-on: ubuntu-20.04
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Build for CentOS 8
- name: Build on CentOS8, baseline
run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target centos8-baseline .
- name: Build on CentOS8, with SRT
run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target centos8-srt .

build-ubuntu16:
name: actions-test-build-ubuntu16
name: build-ubuntu16
runs-on: ubuntu-20.04
needs:
- multile-arch-amd64
steps:
- name: Checkout repository
uses: actions/checkout@v2
Expand All @@ -59,8 +53,10 @@ jobs:
run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu16-srt .

build-ubuntu18:
name: actions-test-build-ubuntu18
name: build-ubuntu18
runs-on: ubuntu-20.04
needs:
- multile-arch-amd64
steps:
- name: Checkout repository
uses: actions/checkout@v2
Expand All @@ -71,8 +67,10 @@ jobs:
run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu18-srt .

build-ubuntu20:
name: actions-test-build-ubuntu20
name: build-ubuntu20
runs-on: ubuntu-20.04
needs:
- multile-arch-amd64
steps:
- name: Checkout repository
uses: actions/checkout@v2
Expand All @@ -82,40 +80,51 @@ jobs:
- name: Build on Ubuntu20, with SRT
run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu20-srt .

build-cross:
name: actions-test-build-cross
build-cross-arm:
name: build-cross-arm
runs-on: ubuntu-20.04
needs:
- multile-arch-amd64
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Cross Build for ARMv7
- name: Cross Build for ARMv7 on Ubuntu16
run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu16-cross-armv7 .
- name: Cross Build for ARMv7 on Ubuntu20
run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu20-cross-armv7 .
# Cross Build for AARCH64

build-cross-aarch64:
name: build-cross-aarch64
runs-on: ubuntu-20.04
needs:
- multile-arch-amd64
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Cross Build for AARCH64 on Ubuntu16
run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu16-cross-aarch64 .
- name: Cross Build for AARCH64 on Ubuntu20
run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu20-cross-aarch64 .

build:
name: actions-test-build
name: build
needs:
- build-centos7
- build-centos6
- build-centos8
- build-ubuntu16
- build-ubuntu18
- build-ubuntu20
- build-cross
- build-cross-arm
- build-cross-aarch64
runs-on: ubuntu-20.04
steps:
- run: echo 'Build done'

utest:
name: actions-test-utest
name: utest
runs-on: ubuntu-20.04
needs:
- multile-arch-amd64
steps:
- name: Checkout repository
uses: actions/checkout@v2
Expand All @@ -130,8 +139,10 @@ jobs:
run: docker run --rm srs:test bash -c 'make && ./objs/srs -c conf/regression-test.conf && cd 3rdparty/srs-bench && make && ./objs/srs_test -test.v'

coverage:
name: actions-test-coverage
name: coverage
runs-on: ubuntu-20.04
needs:
- utest
steps:
- name: Checkout repository
uses: actions/checkout@v2
Expand Down Expand Up @@ -161,7 +172,7 @@ jobs:
#
multile-arch-armv7:
name: actions-test-multile-arch-armv7
name: multile-arch-armv7
runs-on: ubuntu-20.04
steps:
- name: Checkout repository
Expand All @@ -181,7 +192,7 @@ jobs:
-f trunk/Dockerfile .
multile-arch-aarch64:
name: actions-test-multile-arch-aarch64
name: multile-arch-aarch64
runs-on: ubuntu-20.04
steps:
- name: Checkout repository
Expand All @@ -201,7 +212,7 @@ jobs:
-f trunk/Dockerfile .
multile-arch-amd64:
name: actions-test-multile-arch-amd64
name: multile-arch-amd64
runs-on: ubuntu-20.04
steps:
- name: Checkout repository
Expand Down Expand Up @@ -231,7 +242,7 @@ jobs:
- run: echo 'Artifacts done'

done:
name: actions-test-done
name: done
needs:
- build
- utest
Expand Down
10 changes: 0 additions & 10 deletions trunk/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,6 @@ RUN apt-get update && apt-get install -y gcc make g++ patch unzip perl git
COPY . /srs
WORKDIR /srs/trunk

# Use srs-cache from base image.
RUN if [[ -d /usr/local/srs-cache/srs/trunk/objs ]]; then \
./configure --generate-objs=on && \
SOURCE_DIR=$(ls -d /usr/local/srs-cache/srs/trunk/objs/Platform-*) && \
TARGET_DIR=$(ls -d objs/Platform-*) && \
echo "Build from cache, source=$SOURCE_DIR, target=$TARGET_DIR" && \
rm -rf $TARGET_DIR && mv $SOURCE_DIR $TARGET_DIR && \
du -sh $TARGET_DIR && ls -lh objs; \
fi

# Build and install SRS.
# Note that SRT is enabled by default, so we configure without --srt=on.
RUN ./configure --jobs=${JOBS} && make -j${JOBS} && make install
Expand Down
55 changes: 21 additions & 34 deletions trunk/Dockerfile.builds
Original file line number Diff line number Diff line change
@@ -1,87 +1,74 @@
########################################################
FROM ossrs/srs:dev AS centos7-baseline
FROM ossrs/srs:dev-cache AS centos7-baseline
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=off && make -j2

FROM ossrs/srs:dev AS centos7-no-webrtc
FROM ossrs/srs:dev-cache AS centos7-no-webrtc
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=off --rtc=off && make -j2

FROM ossrs/srs:dev AS centos7-no-asm
FROM ossrs/srs:dev-cache AS centos7-no-asm
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=off --nasm=off --srtp-nasm=off && make -j2

FROM ossrs/srs:dev AS centos7-srt
FROM ossrs/srs:dev-cache AS centos7-srt
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=on && make -j2

FROM ossrs/srs:dev AS centos7-ansi-no-ffmpeg
FROM ossrs/srs:dev-cache AS centos7-ansi-no-ffmpeg
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=off --cxx11=off --cxx14=off --ffmpeg-fit=off && make -j2

########################################################
FROM ossrs/srs:dev6 AS centos6-baseline
FROM ossrs/srs:dev6-cache AS centos6-baseline
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=off --cxx11=off --cxx14=off && make -j2

FROM ossrs/srs:dev6 AS centos6-srt
FROM ossrs/srs:dev6-cache AS centos6-srt
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=on --cxx11=off --cxx14=off && make -j2

########################################################
FROM ossrs/srs:dev8 AS centos8-baseline
FROM ossrs/srs:ubuntu16-cache AS ubuntu16-baseline
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=off && make -j2

FROM ossrs/srs:dev8 AS centos8-srt
FROM ossrs/srs:ubuntu16-cache AS ubuntu16-srt
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=on && make -j2

########################################################
FROM ossrs/srs:ubuntu16 AS ubuntu16-baseline
FROM ossrs/srs:ubuntu18-cache AS ubuntu18-baseline
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=off && make -j2

FROM ossrs/srs:ubuntu16 AS ubuntu16-srt
FROM ossrs/srs:ubuntu18-cache AS ubuntu18-srt
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=on && make -j2

########################################################
FROM ossrs/srs:ubuntu18 AS ubuntu18-baseline
FROM ossrs/srs:ubuntu20-cache AS ubuntu20-baseline
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=off && make -j2

FROM ossrs/srs:ubuntu18 AS ubuntu18-srt
FROM ossrs/srs:ubuntu20-cache AS ubuntu20-srt
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=on && make -j2

########################################################
FROM ossrs/srs:ubuntu20 AS ubuntu20-baseline
FROM ossrs/srs:ubuntu16-cross-arm AS ubuntu16-cross-armv7
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=off && make -j2

FROM ossrs/srs:ubuntu20 AS ubuntu20-srt
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=on && make -j2

########################################################
FROM ossrs/srs:ubuntu16 AS ubuntu16-cross-armv7
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=off --cross-build --cc=arm-linux-gnueabihf-gcc --cxx=arm-linux-gnueabihf-g++ \
--ar=arm-linux-gnueabihf-ar --ld=arm-linux-gnueabihf-ld --randlib=arm-linux-gnueabihf-randlib && make -j2
RUN cd /srs/trunk && ./configure --jobs=2 --cross-build --cross-prefix=arm-linux-gnueabihf- && make -j2

FROM ossrs/srs:ubuntu16 AS ubuntu16-cross-aarch64
FROM ossrs/srs:ubuntu16-cross-aarch64 AS ubuntu16-cross-aarch64
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=off --cross-build --cc=aarch64-linux-gnu-gcc --cxx=aarch64-linux-gnu-g++ \
--ar=aarch64-linux-gnu-ar --ld=aarch64-linux-gnu-ld --randlib=aarch64-linux-gnu-randlib && make -j2
RUN cd /srs/trunk && ./configure --jobs=2 --cross-build --cross-prefix=aarch64-linux-gnu- && make -j2

########################################################
FROM ossrs/srs:ubuntu20 AS ubuntu20-cross-armv7
FROM ossrs/srs:ubuntu20-cross-arm AS ubuntu20-cross-armv7
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=off --cross-build --cc=arm-linux-gnueabihf-gcc --cxx=arm-linux-gnueabihf-g++ \
--ar=arm-linux-gnueabihf-ar --ld=arm-linux-gnueabihf-ld --randlib=arm-linux-gnueabihf-randlib && make -j2
RUN cd /srs/trunk && ./configure --jobs=2 --cross-build --cross-prefix=arm-linux-gnueabihf- && make -j2

FROM ossrs/srs:ubuntu20 AS ubuntu20-cross-aarch64
FROM ossrs/srs:ubuntu20-cross-aarch64 AS ubuntu20-cross-aarch64
COPY . /srs
RUN cd /srs/trunk && ./configure --jobs=2 --srt=off --cross-build --cc=aarch64-linux-gnu-gcc --cxx=aarch64-linux-gnu-g++ \
--ar=aarch64-linux-gnu-ar --ld=aarch64-linux-gnu-ld --randlib=aarch64-linux-gnu-randlib && make -j2
RUN cd /srs/trunk && ./configure --jobs=2 --cross-build --cross-prefix=aarch64-linux-gnu- && make -j2
2 changes: 1 addition & 1 deletion trunk/Dockerfile.cov
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ossrs/srs:dev-gcc7
FROM ossrs/srs:dev-gcc7-cache

# Install depends tools.
RUN yum install -y gcc make gcc-c++ patch unzip perl git
Expand Down
2 changes: 1 addition & 1 deletion trunk/Dockerfile.test
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ossrs/srs:dev-gcc7
FROM ossrs/srs:dev-gcc7-cache

# Install depends tools.
RUN yum install -y gcc make gcc-c++ patch unzip perl git
Expand Down
16 changes: 16 additions & 0 deletions trunk/auto/depends.sh
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,22 @@ if [[ $OS_IS_UBUNTU = NO && $OS_IS_CENTOS = NO && $OS_IS_OSX = NO && $SRS_CROSS_
exit 1
fi

#####################################################################################
# Try to load cache if exists /usr/local/srs-cache
#####################################################################################
# Use srs-cache from base image.
if [[ -d /usr/local/srs-cache/srs/trunk/objs && $(pwd) != "/usr/local/srs-cache/srs/trunk" ]]; then
SOURCE_DIR=$(ls -d /usr/local/srs-cache/srs/trunk/objs/Platform-* 2>/dev/null|head -n 1)
if [[ -d $SOURCE_DIR ]]; then
TARGET_DIR=${SRS_OBJS}/${SRS_PLATFORM} &&
echo "Build from cache, source=$SOURCE_DIR, target=$TARGET_DIR" &&
rm -rf $TARGET_DIR && mkdir -p ${SRS_OBJS} && cp -R $SOURCE_DIR $TARGET_DIR &&
du -sh /usr/local/srs-cache/srs/trunk/objs/Platform-* &&
du -sh objs/Platform-* &&
ls -lh objs
fi
fi

#####################################################################################
# state-threads
#####################################################################################
Expand Down

0 comments on commit 1fe12b8

Please sign in to comment.