name: Check artifact names branding: icon: check-square color: green description: Check generated artifact names. author: Patrick Lehmann (@Paebbels) inputs: prefix: description: type: string required: true generated-names: description: type: string required: true runs: using: composite steps: - name: Install dependencies shell: bash run: pip install --disable-pip-version-check --break-system-packages pyTooling - name: Check artifact names id: check shell: python run: | from json import loads as json_loads from sys import exit from pyTooling.Common import zipdicts actualArtifactNames = json_loads("""${{ inputs.generated-names }}""".replace("'", '"')) expectedName = "${{ inputs.prefix }}" expectedArtifacts = { "unittesting_xml": f"{expectedName}-UnitTestReportSummary-XML", "unittesting_html": f"{expectedName}-UnitTestReportSummary-HTML", "perftesting_xml": f"{expectedName}-PerformanceTestReportSummary-XML", "benchtesting_xml": f"{expectedName}-BenchmarkTestReportSummary-XML", "apptesting_xml": f"{expectedName}-ApplicationTestReportSummary-XML", "codecoverage_sqlite": f"{expectedName}-CodeCoverage-SQLite", "codecoverage_xml": f"{expectedName}-CodeCoverage-XML", "codecoverage_json": f"{expectedName}-CodeCoverage-JSON", "codecoverage_html": f"{expectedName}-CodeCoverage-HTML", "statictyping_cobertura": f"{expectedName}-StaticTyping-Cobertura-XML", "statictyping_junit": f"{expectedName}-StaticTyping-JUnit-XML", "statictyping_html": f"{expectedName}-StaticTyping-HTML", "package_all": f"{expectedName}-Packages", "documentation_html": f"{expectedName}-Documentation-HTML", "documentation_latex": f"{expectedName}-Documentation-LaTeX", "documentation_pdf": f"{expectedName}-Documentation-PDF", } errors = 0 if len(actualArtifactNames) != len(expectedArtifacts): print(f"❌ Number of 'artifact_names' does not match: {len(actualArtifactNames)} != {len(expectedArtifacts)}.") errors += 1 else: print("✅ Number of 'artifact_names' as expected.") print("Checking artifact names ...") for key, actual, expected in zipdicts(actualArtifactNames, expectedArtifacts): if actual != expected: print(f" ❌ Artifact name '{key}' does not match: {actual} != {expected}.") errors += 1 else: print(f" ☑ Artifact name as expected: {key} ⇢ {actual}.") if errors == 0: print("✅ All checks PASSED.") else: print(f"❌ Counted {errors} errors.") exit(errors)