name: Test Docker images (on PR) on: pull_request: paths: # Run only when DockerFile files are modified - "docker/*/Dockerfile" permissions: {} jobs: get_changed_files: name: "Build all modified docker images" runs-on: ubuntu-latest outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - name: Check out code uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - name: Get changed files id: changed-files uses: tj-actions/changed-files@9426d40962ed5378910ee2e21d5f8c6fcbf2dd96 # v47.0.6 with: files: docker/*/Dockerfile json: "true" - name: Run step if only the files listed above change if: steps.changed-files.outputs.any_changed == 'true' id: set-matrix env: CHANGED_FILES: "${{ steps.changed-files.outputs.all_changed_files }}" run: | echo "matrix=$(echo ${CHANGED_FILES} | sed -e 's/\\\"/\"/g')" >> $GITHUB_OUTPUT build_modified_files: needs: get_changed_files name: Build Docker images on modified files runs-on: ubuntu-latest if: ${{ needs.get_changed_files.outputs.matrix != '[]' }} strategy: fail-fast: false matrix: docker-file: ${{ fromJson(needs.get_changed_files.outputs.matrix) }} steps: - name: Cleanup disk run: | sudo ls -l /usr/local/lib/ sudo ls -l /usr/share/ sudo du -sh /usr/local/lib/ sudo du -sh /usr/share/ sudo rm -rf /usr/local/lib/android sudo rm -rf /usr/share/dotnet sudo du -sh /usr/local/lib/ sudo du -sh /usr/share/ - name: Set up Docker Buildx uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 - name: Check out code uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - name: Build Docker image uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 with: file: ${{ matrix.docker-file }} context: . push: False