| CARVIEW |
Select Language
HTTP/2 200
date: Fri, 26 Dec 2025 11:20:58 GMT
content-type: text/html; charset=utf-8
cache-control: max-age=0, private, must-revalidate
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com github.githubassets.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com github.githubassets.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
link: ; rel=preload; as=fetch; crossorigin=use-credentials
referrer-policy: no-referrer-when-downgrade
server-timing: issue_layout-fragment;desc="issue_layout fragment";dur=326.659788,issue_conversation_content-fragment;desc="issue_conversation_content fragment";dur=965.15658,nginx;desc="NGINX";dur=1.488931,glb;desc="GLB";dur=95.829919
strict-transport-security: max-age=31536000; includeSubdomains; preload
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With, Accept,Accept-Encoding, Accept, X-Requested-With
x-content-type-options: nosniff
x-frame-options: deny
x-voltron-version: aab62e3
x-xss-protection: 0
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=8tND8ZExUcIrlPbXug4C918UDngtp697bR9YXWCsNGLgA72uOzo412aMgk1XeEA7fhwfxlHCXS6ksHYTc%2FDZ5CKSvGfQINDEikdmHVQjbpp%2FeSMYwrbUvGzRdZgibQbNLiF4qSRZ1fyVoridsrV6q2ptC604E%2Bo7YGLq9ZXDkLnOjCOdyP972GBeW5F%2FGK50PPC6tQPKS42FHwSRkhfwqTtzULhut6DuFoB33bCL2%2B5109d4aQRlSUZ7zMWO2T%2FeuXeAFKkpV4cLw43mBMnJ%2FQ%3D%3D--YojtedNJZjcjoPf9--EM0rFl1EFFUvxHdv%2BfpvCA%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.1267951444.1766748057; Path=/; Domain=github.com; Expires=Sat, 26 Dec 2026 11:20:57 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Sat, 26 Dec 2026 11:20:57 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: D85E:329234:372211E:41FBBB0:694E6F99
[ci] Improve Github Actions Workflows · Issue #4328 · pmd/pmd · GitHub
No typeNo projectsNone yetNo branches or pull requests
Skip to content
Navigation Menu
{{ message }}
-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Closed
Labels
an:enhancementAn improvement on existing features / rulesAn improvement on existing features / rulesgithub_actionsPull requests that update Github_actions codePull requests that update Github_actions codein:pmd-internalsAffects PMD's internalsAffects PMD's internals
Milestone
Description
Problem description:
Currently we have one big job, that does all the things. If something goes wrong, one needs to drill down to the logs to figure out when and what exactly has failed.
Also the big job runs very long, which means we get slow feedback.
Thoughts on improvements
- Have a first job, that just builds, to make the workflow fail fast. No need to run the workflows on other operating systems, if it fails already.
- Avoid to rebuild over and over again by using artifacts to exchange data between different jobs.
- The "regression tester run" should be a separate job. It should produce an artifact with the report, that can be downloaded from the run.
- The "dogfood run" should be a separate job.
- The pull request workflow should be restructured, so that we can make use of the full permissions. Currently we don't have access to the secrets, so we can do only limited things and basically need a public pmd-bot account, that comments the PR for us.
- As described here: https://stackoverflow.com/questions/69499645/how-to-securely-allow-github-actions-to-check-pr-and-post-results-in-comment/71366152#71366152
- The PR workflow would build PMD with that changes and trigger a QA workflow
- The QA workflow would then run regression tester and upload the results and record the result as a PR check (and not just a comment)
- The current CI solution is heavily using bash scripts from build-tools. Maybe this can be simplified. Ideally we are still able to run a build/create release even if github is down (beware of vendor lock in).
- For the release task, maybe skip the tests? The tests have been executed anyway before, the only change would be the version change...
- For every job, that builds PMD, publish the artifacts from pmd-dist as build outputs, so that one can download the PMD version with that change included - that could make it easier to test, etc.
- Ideally, the jobs are idempotent and can be run again without doing harm. E.g. it should be easy to rerun a release build, if e.g. some external service failed. Ideally only the parts, that weren't executed yet would be executed again.
- Get rid of the extra https://github.com/pmd-bot account
- These are only some vague ideas that need to be fleshed out in detail
Constraints:
- when changing the workflows, we need to make sure we are still able to release a new version and also release a bugfix version from a maintenance branch. This might mean, that we need to backport/cherry-pick the change into the maintenance branch (when needed).
Tasks:
- [ci] New optimized workflow for pull requests #5524
- [ci] New workflow "Publish Results from Pull Requests" #5556
- Publish artifacts from pull request builds
- Applying best practices from secure access to secrets: https://stackoverflow.com/questions/69499645/how-to-securely-allow-github-actions-to-check-pr-and-post-results-in-comment/71366152#71366152
- Get rid of public pmd-bot/pmd-test account
- Using workflow trigger to upload to some hosting platform
- Especially useful for documentation and regression tester report
- [ci] Improvements for "Publish Pull Requests" #5728
- Refactor GitHub Actions Workflows build-tools#68
- Refactor GitHub Actions Workflows pmd-designer#168
- Refactor GitHub Action Workflows pmd-eclipse-plugin#271
- Refactor GitHub Actions Workflows pmd-regression-tester#131
- [ci] New workflow "Publish Snapshot" #5584
- Improvements via reuseable workflow
- [ci] Refactor git-repo-sync #5730
- [ci] New "Publish Release" workflow #5745
- New optimized workflow for RELEASE builds from tags
- do everything, what is currently done, plus:
- api-docs - provide a stable latest symlink on release, e.g. https://docs.pmd-code.org/apidocs/pmd-core/LATEST/
- Upload pmd-regression-tester baselines to sourceforge for archiving
- Maybe don't use a cache for local maven repository, ensuring we don't use a stale dependencies on release. If there is something wrong with the dependencies, the release should fail
- Consider idempotency - if some part fails for external reasons (network unavailable...), we want to redo it, if possible
- Maybe start off with a copy of publish-snapshot
- [ci] Create a pre-release for snapshot builds #5909
- [ci] New nightly build workflow to publish a pre-release
- that's an extension to publish-snapshot
- Get rid of the extra https://github.com/pmd-bot account
- This is not needed anymore. It was needed to push branch gh-pages in pmd/pmd. But that is now handled via custom GitHub App "PMD Actions Helper".
- Cleanup/delete old scripts and keys
- e.g. from pmd/build-tools and pmd/pmd:.ci/README.md
- in all repos ".ci/build.sh" etc.
- pmd/pmd: already done: [ci] New "Publish Release" workflow #5745
- pmd/eclipse-plugin: already done: pmd/pmd-eclipse-plugin@cee1d21
- pmd/pmd-designer: [ci] Cleanup old scripts pmd-designer#207
- pmd/build-tools: [ci] Cleanup old release scripts build-tools#86
Related issues:
Metadata
Metadata
Assignees
Labels
an:enhancementAn improvement on existing features / rulesAn improvement on existing features / rulesgithub_actionsPull requests that update Github_actions codePull requests that update Github_actions codein:pmd-internalsAffects PMD's internalsAffects PMD's internals
Type
Projects
Milestone
Relationships
Development
Issue actions
You can’t perform that action at this time.