name: Docker-Compose Build and Test Migration on: pull_request: paths: - "src/main/resources/changelog/**" - "src/main/java/me/kavin/piped/utils/obj/db/**" jobs: build-new: uses: ./.github/workflows/fat-build.yml build-old: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.base.sha }} - name: set up JDK 21 uses: actions/setup-java@v4 with: java-version: 21 distribution: zulu cache: "gradle" - name: Run Build run: ./gradlew shadowJar - run: mv build/libs/piped-*-all.jar piped.jar - uses: actions/upload-artifact@v4 with: name: piped-old.jar path: piped.jar docker-build-test: needs: [ build-new, build-old ] runs-on: ubuntu-latest strategy: matrix: docker-compose-file: - docker-compose.yml - testing/docker-compose.cockroachdb.yml - testing/docker-compose.yugabytedb.yml dockerfile: - Dockerfile.azul.ci include: - sleep: 20 - docker-compose-file: testing/docker-compose.cockroachdb.yml sleep: 30 - docker-compose-file: testing/docker-compose.yugabytedb.yml sleep: 120 fail-fast: false steps: - uses: actions/checkout@v4 - run: echo "unknown" > VERSION - uses: actions/download-artifact@v4 with: name: piped-old.jar - name: Build Old Image Locally uses: docker/build-push-action@v6 with: context: . load: true file: ${{ matrix.dockerfile }} tags: 1337kavin/piped:latest - name: Start Docker-Compose services run: docker compose -f ${{ matrix.docker-compose-file }} up -d && sleep ${{ matrix.sleep }} - run: rm piped.jar - uses: actions/download-artifact@v4 with: name: piped.jar - name: Build New Image Locally uses: docker/build-push-action@v6 with: context: . load: true file: ${{ matrix.dockerfile }} tags: 1337kavin/piped:latest - name: Start Docker-Compose services run: docker compose -f ${{ matrix.docker-compose-file }} up -d && sleep ${{ matrix.sleep }} - name: Run tests run: ./testing/api-test.sh - name: Collect services logs if: failure() run: docker compose -f ${{ matrix.docker-compose-file }} logs