diff --git a/.github/workflows/automated-end-to-end-api.yaml b/.github/workflows/automated-end-to-end-api.yaml index 0dae5e191..5f6402d5f 100644 --- a/.github/workflows/automated-end-to-end-api.yaml +++ b/.github/workflows/automated-end-to-end-api.yaml @@ -3,19 +3,30 @@ name: Automated API tests on: push: paths-ignore: - - 'webroot/**' - 'web/**' - + pull_request: + paths-ignore: + - 'web/**' + jobs: - api: + test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v3 + - uses: earthly/actions-setup@v1 with: - stable: 'false' - go-version: '1.17.2' - - name: Run API tests - run: cd test/automated/api && ./run.sh + version: 'latest' # or pin to an specific version, e.g. "v0.6.10" - \ No newline at end of file + - name: Earthly version + run: earthly --version + + - name: Set up QEMU + id: qemu + uses: docker/setup-qemu-action@v2 + with: + image: tonistiigi/binfmt:latest + platforms: all + + - uses: actions/checkout@v3 + + - name: Run API tests + run: earthly +api-tests diff --git a/Earthfile b/Earthfile index ad1d08c7d..4fe5a4709 100644 --- a/Earthfile +++ b/Earthfile @@ -25,7 +25,7 @@ crosscompiler: code: FROM --platform=linux/amd64 +crosscompiler COPY . /build - # GIT CLONE --branch=$version git@github.com:owncast/owncast.git /build + #GIT CLONE --branch=$version git@github.com:owncast/owncast.git /build build: ARG EARTHLY_GIT_HASH # provided by Earthly @@ -127,5 +127,6 @@ api-tests: FROM --platform=linux/amd64 bdwyertech/go-crosscompile RUN apk add ffmpeg npm COPY . /build - WORKDIR /build - RUN cd test/automated/api && ./run.sh + WORKDIR /build/test/automated/api + RUN npm install + RUN ./run.sh diff --git a/test/automated/api/package-lock.json b/test/automated/api/package-lock.json index d49498048..affec8d25 100644 --- a/test/automated/api/package-lock.json +++ b/test/automated/api/package-lock.json @@ -1302,6 +1302,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.2.tgz", "integrity": "sha512-AtnG3W6M8B2n4xDQ5R+70EXvOpnXsFYg/AK2yTZd+HQ/oxAdz+GI+DvjmhBw3L0ole+LJ0ngqY4JMbDzkfNzhA==", + "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.2.0" } @@ -5679,6 +5680,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.3.tgz", "integrity": "sha512-jtJM6fpGv8C1SoH4PtG22pGto6x+Y8uPprW0tw3//gGFhDDTiuksgradgFN6yRayDP4SyZZa6ZMGHLIa17+M8A==", + "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.2.0" } diff --git a/test/automated/api/run.sh b/test/automated/api/run.sh index fde189604..22c4d3a8a 100755 --- a/test/automated/api/run.sh +++ b/test/automated/api/run.sh @@ -3,26 +3,26 @@ TEMP_DB=$(mktemp) # Install the node test framework -npm install --silent > /dev/null +npm install #--silent >/dev/null # Download a specific version of ffmpeg if [ ! -d "ffmpeg" ]; then - mkdir ffmpeg - pushd ffmpeg > /dev/null - curl -sL https://github.com/vot/ffbinaries-prebuilt/releases/download/v4.2.1/ffmpeg-4.2.1-linux-64.zip --output ffmpeg.zip > /dev/null - unzip -o ffmpeg.zip > /dev/null - PATH=$PATH:$(pwd) - popd > /dev/null + mkdir ffmpeg + pushd ffmpeg >/dev/null + curl -sL https://github.com/vot/ffbinaries-prebuilt/releases/download/v4.2.1/ffmpeg-4.2.1-linux-64.zip --output ffmpeg.zip >/dev/null + unzip -o ffmpeg.zip >/dev/null + PATH=$PATH:$(pwd) + popd >/dev/null fi -pushd ../../.. > /dev/null +pushd ../../.. >/dev/null # Build and run owncast from source -go build -race -o owncast main.go +go build -o owncast main.go ./owncast -database $TEMP_DB & SERVER_PID=$! -popd > /dev/null +popd >/dev/null sleep 5 # Start streaming the test file over RTMP to @@ -31,8 +31,8 @@ ffmpeg -hide_banner -loglevel panic -stream_loop -1 -re -i ../test.mp4 -vcodec l FFMPEG_PID=$! function finish { - rm $TEMP_DB - kill $SERVER_PID $FFMPEG_PID + rm $TEMP_DB + kill $SERVER_PID $FFMPEG_PID } trap finish EXIT