summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-12-03 00:37:53 +0800
committerruki <[email protected]>2025-12-03 00:37:53 +0800
commit408fd6795601df3c7b838a74fdc28efd57c476e7 (patch)
tree3ad616b1816085657b25facb4c84e66d5c4c9a30
parent1e982e47f0c1af1db9276db6fe07f9b6e8c85920 (diff)
revert ci
-rw-r--r--.github/workflows/solaris.yml49
1 files changed, 49 insertions, 0 deletions
diff --git a/.github/workflows/solaris.yml b/.github/workflows/solaris.yml
index 964532b1a..6f4dbba76 100644
--- a/.github/workflows/solaris.yml
+++ b/.github/workflows/solaris.yml
@@ -7,7 +7,56 @@ on:
types: [published]
jobs:
+ check:
+ runs-on: ubuntu-latest
+ outputs:
+ should-run: ${{ steps.check.outputs.should-run }}
+ steps:
+ - name: Random execution check
+ id: check
+ uses: actions/github-script@v7
+ with:
+ script: |
+ const fs = require('fs');
+ const outputFile = process.env.GITHUB_OUTPUT;
+
+ // Always run for release events
+ if (context.eventName === 'release') {
+ fs.appendFileSync(outputFile, `should-run=true\n`);
+ core.info('Release event detected. Will run tests.');
+ return;
+ }
+
+ // Execution probability (default 50%, can be overridden via env)
+ const probability = parseFloat(process.env.RUN_PROBABILITY || '0.5');
+
+ // Generate deterministic "random" number based on commit SHA, run ID, and current time
+ // Adding time ensures better randomness while keeping same commit/run consistent
+ const timeSeed = Math.floor(Date.now() / (1000 * 60 * 60)); // Round to hour for consistency
+ const seed = context.sha + context.runId + timeSeed;
+ let hash = 0;
+ for (let i = 0; i < seed.length; i++) {
+ const char = seed.charCodeAt(i);
+ hash = ((hash << 5) - hash) + char;
+ hash = hash | 0; // Convert to 32-bit integer
+ }
+ // Normalize to 0-1 range
+ const random = Math.abs(hash) / 2147483647;
+ const shouldRun = random < probability;
+
+ // Use environment file instead of deprecated set-output
+ fs.appendFileSync(outputFile, `should-run=${shouldRun}\n`);
+ if (shouldRun) {
+ core.info(`Random check passed (${(random * 100).toFixed(2)}% < ${(probability * 100).toFixed(0)}%). Will run tests.`);
+ } else {
+ core.info(`Random check failed (${(random * 100).toFixed(2)}% >= ${(probability * 100).toFixed(0)}%). Skipping.`);
+ }
+ env:
+ RUN_PROBABILITY: ${{ vars.SOLARIS_RUN_PROBABILITY || '0.5' }}
+
build:
+ needs: check
+ if: needs.check.outputs.should-run == 'true'
runs-on: ubuntu-latest
concurrency: