name: build_docker run-name: ${{ gitea.event.head_commit.message }} on: pull_request: types: - opened - synchronize push: branches: - main - gpu_support env: PADDLE_VERSION: "3.0.0" WHEEL_BASE_URL: "https://seryus.ddns.net/api/packages/unir/generic" jobs: essential: runs-on: ubuntu-latest outputs: Version: 1.0.${{ gitea.run_number }} repo: seryus.ddns.net image_cpu: seryus.ddns.net/unir/paddle-ocr-cpu image_gpu: seryus.ddns.net/unir/paddle-ocr-gpu steps: - name: Output version info run: | echo "## Build Info" >> $GITHUB_STEP_SUMMARY echo "Version: 1.0.${{ gitea.run_number }}" >> $GITHUB_STEP_SUMMARY echo "Event: ${{ gitea.event_name }}" >> $GITHUB_STEP_SUMMARY # CPU image: Matrix build for amd64 and arm64 build_cpu: runs-on: ubuntu-latest needs: essential strategy: matrix: platform: - linux/amd64 - linux/arm64 steps: - name: Checkout uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Gitea Registry uses: docker/login-action@v3 with: registry: ${{ needs.essential.outputs.repo }} username: username password: ${{ secrets.CI_READWRITE }} - name: Get arch suffix id: arch run: | if [ "${{ matrix.platform }}" = "linux/amd64" ]; then echo "suffix=amd64" >> $GITHUB_OUTPUT else echo "suffix=arm64" >> $GITHUB_OUTPUT fi - name: Download ARM64 wheel from Gitea packages if: matrix.platform == 'linux/arm64' run: | mkdir -p src/paddle_ocr/wheels curl -L -o src/paddle_ocr/wheels/paddlepaddle-${{ env.PADDLE_VERSION }}-cp311-cp311-linux_aarch64.whl \ "${{ env.WHEEL_BASE_URL }}/paddlepaddle-cpu-arm64/${{ env.PADDLE_VERSION }}/paddlepaddle-${{ env.PADDLE_VERSION }}-cp311-cp311-linux_aarch64.whl" ls -la src/paddle_ocr/wheels/ - name: Build and push CPU image (${{ matrix.platform }}) uses: docker/build-push-action@v5 with: context: src/paddle_ocr file: src/paddle_ocr/Dockerfile.cpu platforms: ${{ matrix.platform }} push: true tags: | ${{ needs.essential.outputs.image_cpu }}:${{ needs.essential.outputs.Version }}-${{ steps.arch.outputs.suffix }} ${{ needs.essential.outputs.image_cpu }}:${{ steps.arch.outputs.suffix }} # GPU image: Matrix build for amd64 and arm64 build_gpu: runs-on: ubuntu-latest needs: essential strategy: matrix: platform: - linux/amd64 - linux/arm64 steps: - name: Checkout uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Gitea Registry uses: docker/login-action@v3 with: registry: ${{ needs.essential.outputs.repo }} username: username password: ${{ secrets.CI_READWRITE }} - name: Get arch suffix id: arch run: | if [ "${{ matrix.platform }}" = "linux/amd64" ]; then echo "suffix=amd64" >> $GITHUB_OUTPUT else echo "suffix=arm64" >> $GITHUB_OUTPUT fi - name: Download ARM64 GPU wheel from Gitea packages if: matrix.platform == 'linux/arm64' run: | mkdir -p src/paddle_ocr/wheels curl -L -o src/paddle_ocr/wheels/paddlepaddle_gpu-${{ env.PADDLE_VERSION }}-cp311-cp311-linux_aarch64.whl \ "${{ env.WHEEL_BASE_URL }}/paddlepaddle-gpu-arm64/${{ env.PADDLE_VERSION }}/paddlepaddle_gpu-${{ env.PADDLE_VERSION }}-cp311-cp311-linux_aarch64.whl" ls -la src/paddle_ocr/wheels/ - name: Build and push GPU image (${{ matrix.platform }}) uses: docker/build-push-action@v5 with: context: src/paddle_ocr file: src/paddle_ocr/Dockerfile.gpu platforms: ${{ matrix.platform }} push: true tags: | ${{ needs.essential.outputs.image_gpu }}:${{ needs.essential.outputs.Version }}-${{ steps.arch.outputs.suffix }} ${{ needs.essential.outputs.image_gpu }}:${{ steps.arch.outputs.suffix }}