name: "Test supported Operating Systems" on: workflow_dispatch: push: branches: - '**' pull_request: branches: - '**' jobs: generate-matrix: name: "Generate Matrix" runs-on: ubuntu-latest outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - name: "Checkout repository" uses: actions/checkout@v4 - name: "Generate Matrix" id: set-matrix run: | FILES=$(find actions/ -maxdepth 1 -type f -printf "%f\n" | sort) MATRIX="{\"include\": [" for file in $FILES; do MATRIX+="{\"file\": \"$file\"}," done MATRIX="${MATRIX%,}]}" echo "Generated Matrix: $MATRIX" echo "matrix=$MATRIX" >> $GITHUB_OUTPUT - name: "Install dependencies 📦️" run: | sudo apt-get -y update sudo apt-get -y install curl jq - name: "Display Matrix" run: | echo "Matrix:" echo "${{ steps.set-matrix.outputs.matrix }}" run-actions: name: "💿️" needs: generate-matrix runs-on: ubuntu-latest strategy: fail-fast: false matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }} steps: - name: "Checkout repository" uses: actions/checkout@v4 - name: "Checkout ${{ matrix.file }}" run: | mkdir -p results ./quickget --check ${{ matrix.file }} | tee results/${{ matrix.file }}.txt if grep -vqE '^(PASS:|SKIP:)' results/${{ matrix.file }}.txt; then grep -vE '^(PASS:|SKIP:)' results/${{ matrix.file }}.txt >> $GITHUB_STEP_SUMMARY exit 1 fi - name: "Upload Results ⬆️" if: always() uses: actions/upload-artifact@v4 with: name: ${{ matrix.file }}.txt path: results/${{ matrix.file }}.txt end: name: "finish" needs: run-actions if: always() runs-on: ubuntu-latest steps: - name: "Checkout repository" uses: actions/checkout@v4 - name: "Download results ⬇️" uses: actions/download-artifact@v4 with: path: results merge-multiple: true - name: "results" run: | for file in results/*.txt; do cat "$file" | tee -a ../results done PASSED=$(grep -c '^PASS:' results | wc -l 2>/dev/null) FAILED=$(grep -c '^FAIL:' results | wc -l 2>/dev/null) SKIPPED=$(grep -c '^SKIP:' results | wc -l 2>/dev/null) echo "$PASSED/$FAILED 🏁 / 💀" >> $GITHUB_STEP_SUMMARY echo "$SKIPPED Skipped" >> $GITHUB_STEP_SUMMARY