Skip to content
Merged
Show file tree
Hide file tree
Changes from 136 commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
3cebaa1
feat(nx-cloud): setup nx cloud workspace
bunsenstraat Oct 18, 2025
56c55af
feat: integrate NX Cloud with CircleCI
Oct 18, 2025
2d841fb
fix: upgrade Node.js to 20.19.0 in CircleCI
Oct 18, 2025
57e5231
fix: use existing build commands with NX Cloud caching
Oct 18, 2025
1995ea2
rm persistance
Oct 18, 2025
5cf0c05
fix: Use runtime config instead of compile-time env vars for compiler…
Oct 18, 2025
be3ae14
refactor: Remove unsupported env var inputs from project.json
Oct 18, 2025
92d66bf
feat: Add GitHub Actions workflows for build caching and on-demand E2…
Oct 18, 2025
e35ffd2
debug: Enable NX_VERBOSE_LOGGING to diagnose cache issues
Oct 18, 2025
1462c75
temp: Add push trigger to register E2E workflow
Oct 18, 2025
50f78f6
filter
Oct 18, 2025
f68bc27
ten jobs
Oct 18, 2025
5afaba0
another attempt at simpe
Oct 18, 2025
ec838d3
again
Oct 18, 2025
ff6ad23
services
Oct 18, 2025
82bb5ba
try again
Oct 18, 2025
8b7440f
cache
Oct 18, 2025
e8c8d7c
old approach
Oct 18, 2025
9050c9b
retry
Oct 18, 2025
5daab3e
innject
Oct 18, 2025
f3bf840
cache script
Oct 18, 2025
4751161
20
Oct 18, 2025
4dbcfb1
dont persist
Oct 18, 2025
2694601
reduce verbose logging
Oct 18, 2025
0c464b3
hide output
Oct 18, 2025
3c73d3f
debug nx
Oct 18, 2025
eef6f1d
no retry
Oct 18, 2025
da6bab9
feat(nx-cloud): setup nx cloud workspace
bunsenstraat Oct 18, 2025
1b5dcaf
ci change
Oct 18, 2025
7038151
Merge branch 'feat/nx-cloud/setup' of https://github.com/remix-projec…
Oct 18, 2025
face1bf
force token
Oct 18, 2025
2d0eb7b
chore(ci): hoist app deps to root so CI root install satisfies apps; …
Oct 18, 2025
79680ad
deps
Oct 18, 2025
b73bd71
ci(nx-cloud): persist NX_CLOUD_ACCESS_TOKEN correctly via (fix quoti…
Oct 18, 2025
20df021
update yml
Oct 18, 2025
a41bfe9
token
Oct 18, 2025
5b210d1
simple
Oct 19, 2025
04bd7ff
nvm
Oct 19, 2025
adb3d3a
buikd
Oct 19, 2025
79a63a3
rm monaco
Oct 19, 2025
dc81a41
random change
Oct 19, 2025
fc53b7f
another change
Oct 19, 2025
73093d1
set to small
Oct 19, 2025
0507e09
rm e2e install
Oct 19, 2025
e64c5c9
optimize
Oct 19, 2025
47cd05d
error fix
Oct 19, 2025
46601c0
rm github script
Oct 19, 2025
3533a22
rm hardhat
Oct 19, 2025
796d814
lint
Oct 19, 2025
da84c7f
lint
Oct 19, 2025
027c941
chrome install
Oct 19, 2025
94e028e
deploy builds
Oct 19, 2025
3fc38f3
chore: revert lockfile and root package.json to master to avoid depen…
Oct 19, 2025
8f8cd82
revert
Oct 19, 2025
4bff2c5
medium+
Oct 19, 2025
ebb265b
sa test
Oct 19, 2025
e81ec32
screenshot
Oct 19, 2025
3cc4a85
fix test
Oct 19, 2025
b76f348
slither install
Oct 19, 2025
bc4556d
back to persist
Oct 19, 2025
d668f5f
new split
Oct 19, 2025
0df4981
disable remixd test
Oct 19, 2025
03a5e1f
fix python
Oct 19, 2025
1c557aa
run without pythone
Oct 19, 2025
cf5a59a
set to 20
Oct 19, 2025
e29e7a0
timing script
Oct 20, 2025
38b0fc8
self splitting
Oct 20, 2025
8eab1bf
plan shards
Oct 21, 2025
9249990
config
Oct 21, 2025
4c7585f
more stats
Oct 21, 2025
cde2101
no injnect
Oct 21, 2025
e6932bb
new calc
Oct 21, 2025
c2fec9a
no retry
Oct 21, 2025
b935562
vertical
Oct 21, 2025
d999310
vertical runs
Oct 21, 2025
87316d2
small
Oct 21, 2025
5e2c204
failed test run
Oct 21, 2025
db91858
build first
Oct 21, 2025
887142b
use build job
Oct 21, 2025
a1c36ad
5 runs back
Oct 21, 2025
6daf6d6
add param
Oct 21, 2025
b28b57e
enum
Oct 21, 2025
cbab6d3
perms
Oct 21, 2025
ed756ef
failed tasks script
Oct 22, 2025
9d25fef
test reports
Oct 22, 2025
d56620e
fix report
Oct 22, 2025
17bff5c
token rename
Oct 22, 2025
3ae95f8
wait for jobs
Oct 22, 2025
0c2aadd
use bot for comments
Oct 22, 2025
35efd25
md script
Oct 22, 2025
002393f
NODE_PATH
Oct 23, 2025
e80939f
file test
Oct 23, 2025
06da1ac
lock file
Oct 23, 2025
7eb49d1
sort
Oct 23, 2025
3267d26
reporter
Oct 23, 2025
95002b7
make mistake
Oct 23, 2025
86b5739
pem key
Oct 23, 2025
fe1c581
Add debug logging to post-pr-report for auth method detection
Oct 23, 2025
6241da2
rerun
Oct 23, 2025
2e9966b
logging
Oct 23, 2025
fc67dc5
fallback
Oct 23, 2025
85e8256
fix rerun
Oct 23, 2025
1858879
reurn
Oct 24, 2025
98e70c1
rerun
Oct 24, 2025
d132548
rerun
Oct 24, 2025
b4ed8b8
fix script
Oct 24, 2025
d54963a
more fix
Oct 24, 2025
3189415
fix reports
Oct 24, 2025
c332ee1
do it again
Oct 24, 2025
6b0db56
Delete pembot.txt
bunsenstraat Oct 24, 2025
8835b14
fix build
Oct 25, 2025
2e2d91c
fallback
Oct 25, 2025
c55d93f
restore stuff
Oct 25, 2025
994f324
add libs to build tar
Oct 25, 2025
62cdaeb
pip3
Oct 25, 2025
06565c8
chore(ci): remove unused Travis scripts and duplicate browser_tests.s…
Oct 25, 2025
140d8d9
rm travis ref
Oct 25, 2025
36f0f8b
ci(e2e): add setup_slither_if_needed.sh helper and invoke it across a…
Oct 25, 2025
34e824c
chore(ci): fix CI directory permissions and mark all CI scripts execu…
Oct 25, 2025
8a85007
order tasks
Oct 25, 2025
f6fb21b
revert: restore eslint config files to master state (unrelated to PR …
Oct 25, 2025
d6b15d0
libs test
Oct 25, 2025
8a77f54
runs libs medium
Oct 25, 2025
506d889
fallback
Oct 25, 2025
5725363
Merge remote-tracking branch 'origin/master' into feat/nx-cloud/setup
Oct 25, 2025
e06f339
fixes
Oct 25, 2025
a76c583
add runtime report
Oct 25, 2025
68cd4f0
config
Oct 25, 2025
7dfa504
fix enum
Oct 25, 2025
000c847
config
Oct 25, 2025
1cca109
test again
Oct 25, 2025
55e9392
fixed
Oct 25, 2025
772c225
reset app
Oct 25, 2025
3376db6
mv script
Oct 26, 2025
864d639
Merge branch 'master' into feat/nx-cloud/setup
bunsenstraat Oct 28, 2025
f08a566
Merge branch 'master' into feat/nx-cloud/setup
bunsenstraat Oct 28, 2025
bed590f
get started sticky
bunsenstraat Oct 28, 2025
f240438
fix
bunsenstraat Oct 28, 2025
71970ae
fix
bunsenstraat Oct 28, 2025
7a14547
add started
bunsenstraat Oct 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
699 changes: 461 additions & 238 deletions .circleci/config.yml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v20
v20.19.0
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,15 @@ yarn run serve:production
```
Production build will be served by default to `http://localhost:8080/` or `http://127.0.0.1:8080/`

## Nx Cloud caching

This repo uses Nx Cloud to speed up builds and keep CI deterministic via remote caching.

- Configuration: `nx.json` uses the Nx Cloud runner and reads the token from the `NX_CLOUD_ACCESS_TOKEN` environment variable.
- CI: CircleCI jobs automatically use `--cloud` when the token is present; for forked PRs (no secrets), they fall back to local-only caching. Build logs are stored under `logs/nx-build.log`.
- Verifying locally: run the same target twice; the second run should print “Nx read the output from the cache”. Example: `nx run remix-ide:build` and run it again.
- Insights: View cache analytics and run details at https://nx.app (links appear in Nx output when the token is configured).

## Docker:

Prerequisites:
Expand Down
6 changes: 3 additions & 3 deletions apps/contract-verification/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ module.exports = composePlugins(withNx(), (config) => {
// add public path
config.output.publicPath = '/'

// set filename
config.output.filename = `[name].plugin-contract-verification.${versionData.timestamp}.js`
config.output.chunkFilename = `[name].plugin-contract-verification.${versionData.timestamp}.js`
// set deterministic filenames for better caching
config.output.filename = `[name].plugin-contract-verification.[contenthash].js`
config.output.chunkFilename = `[name].plugin-contract-verification.[contenthash].js`

// add copy & provide plugin
config.plugins.push(
Expand Down
2 changes: 1 addition & 1 deletion apps/quick-dapp/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
"executor": "@nrwl/webpack:webpack",
"outputs": ["{options.outputPath}"],
"defaultConfiguration": "development",
"dependsOn": ["install"],
"options": {
"compiler": "babel",
"outputPath": "dist/apps/quick-dapp",
Expand Down Expand Up @@ -40,6 +39,7 @@
},
"install": {
"executor": "nx:run-commands",
"cache": false,
"options": {
"commands": [
"cd apps/quick-dapp && yarn"
Expand Down
2 changes: 1 addition & 1 deletion apps/remix-dapp/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
"executor": "@nrwl/webpack:webpack",
"outputs": ["{options.outputPath}"],
"defaultConfiguration": "development",
"dependsOn": ["install"],
"options": {
"compiler": "babel",
"outputPath": "dist/apps/remix-dapp",
Expand Down Expand Up @@ -39,6 +38,7 @@
},
"install": {
"executor": "nx:run-commands",
"cache": false,
"options": {
"commands": [
"cd apps/remix-dapp && yarn"
Expand Down
7 changes: 5 additions & 2 deletions apps/remix-ide-e2e/src/tests/staticAnalysis.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ module.exports = {
.click('*[data-id="treeViewLitreeViewItemcontracts/2_Owner.sol"]')
.clickLaunchIcon('solidity')
.click('*[id="compileBtn"]')
.saveScreenshot('./reports/screenshots/compile2_Owner.png')
.pause(10000)
.clickLaunchIcon('solidityStaticAnalysis')
.useXpath()
Expand All @@ -57,10 +58,12 @@ module.exports = {
.pause(1000)
.waitForElementVisible('span#ssaRemixtab')
.click('span#ssaRemixtab')
.assert.containsText('span#ssaRemixtab > *[data-id="RemixStaticAnalysisErrorCount', '388')
.waitForElementContainsText('span#ssaRemixtab > *[data-id="RemixStaticAnalysisErrorCount', '384')

.click('label[id="headingshowLibWarnings"]')
.pause(1000)
.assert.containsText('span#ssaRemixtab > *[data-id="RemixStaticAnalysisErrorCount', '3')
.waitForElementContainsText('span#ssaRemixtab > *[data-id="RemixStaticAnalysisErrorCount', '3')

.end()
}
}
Expand Down
37 changes: 0 additions & 37 deletions apps/remix-ide/.travis.yml

This file was deleted.

67 changes: 57 additions & 10 deletions apps/remix-ide/ci/browser_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,71 @@ set -e



BUILD_ID=${CIRCLE_BUILD_NUM:-${TRAVIS_JOB_NUMBER}}
BUILD_ID=${CIRCLE_BUILD_NUM:-local}
echo "$BUILD_ID"
TEST_EXITCODE=0
npx ganache &
npx http-server -p 9090 --cors='*' ./node_modules &
yarn run serve:production &
npx ganache > /dev/null 2>&1 &
npx http-server -p 9090 --cors='*' ./node_modules > /dev/null 2>&1 &
yarn run serve:production > /dev/null 2>&1 &
sleep 5

# grep -IRiL "@disabled" "dist/apps/remix-ide-e2e/src/tests" | grep "\.spec\|\.test" | xargs -I {} basename {} .test.js | grep -E "\b[${2}]"
# TESTFILES=$(grep -IRiL "@disabled" "dist/apps/remix-ide-e2e/src/tests" | grep "\.spec\|\.test" | xargs -I {} basename {} .test.js | grep -E "\b[$2]" | circleci tests split --split-by=timings )
node apps/remix-ide/ci/splice_tests.js $2 $3
TESTFILES=$(node apps/remix-ide/ci/splice_tests.js $2 $3 | grep -v 'metamask' | circleci tests split --split-by=timings)
PARALLEL_TOTAL=${CIRCLE_NODE_TOTAL:-1}
PARALLEL_INDEX=${CIRCLE_NODE_INDEX:-0}
SELF_SPLIT=${SELF_SPLIT:-0}
TIMINGS_JSON=${TIMINGS_JSON:-timings-current.json}
E2E_RETRIES=${E2E_RETRIES:-0} # number of retries on failure per test (0 = no retry)

# Build the list of enabled test files
BASE_FILES=$(find dist/apps/remix-ide-e2e/src/tests -type f \( -name "*.test.js" -o -name "*.spec.js" \) -print0 \
| xargs -0 grep -IL "@disabled" \
| xargs -I {} basename {} \
| sed 's/\.js$//' \
| grep -v 'metamask')

if [ "$SELF_SPLIT" = "1" ]; then
echo "==> Using self shard planner (shards=$PARALLEL_TOTAL index=$PARALLEL_INDEX)"
echo "ENV: CIRCLE_BRANCH=${CIRCLE_BRANCH:-local} CIRCLE_NODE_TOTAL=$PARALLEL_TOTAL CIRCLE_NODE_INDEX=$PARALLEL_INDEX E2E_RETRIES=$E2E_RETRIES"
mkdir -p reports/shards
TESTFILES=$(printf '%s\n' "$BASE_FILES" | node scripts/plan-shards.js --shards "$PARALLEL_TOTAL" --index "$PARALLEL_INDEX" --timings "$TIMINGS_JSON" --verbose --manifest-out reports/shards/manifest-$PARALLEL_INDEX.json)
else
echo "==> Using CircleCI timings split"
mkdir -p reports/shards
TESTFILES=$(printf '%s\n' "$BASE_FILES" | circleci tests split --split-by=timings)
fi

printf '%s\n' "$TESTFILES" > reports/shards/files-$PARALLEL_INDEX.txt
COUNT=$(printf '%s\n' "$TESTFILES" | wc -l | awk '{print $1}')
echo "==> Shard $PARALLEL_INDEX selected $COUNT test files"
echo "==> Preview (first 20):"
printf '%s\n' "$TESTFILES" | head -n 20
echo "==> Preview (last 10):"
printf '%s\n' "$TESTFILES" | tail -n 10
echo "==> Full list (for grepability):"
printf '%s\n' "$TESTFILES"

# If this batch includes remixd (slither) tests, prepare pip3/slither toolchain on-demand
printf '%s\n' "$TESTFILES" | ./apps/remix-ide/ci/setup_slither_if_needed.sh
for TESTFILE in $TESTFILES; do
if ! npx nightwatch --config dist/apps/remix-ide-e2e/nightwatch-${1}.js dist/apps/remix-ide-e2e/src/tests/${TESTFILE}.js --env=$1; then
if ! npx nightwatch --config dist/apps/remix-ide-e2e/nightwatch-${1}.js dist/apps/remix-ide-e2e/src/tests/${TESTFILE}.js --env=$1; then
echo "Running test: ${TESTFILE}.js (retries on fail: $E2E_RETRIES)"
attempt=0
while true; do
if npx nightwatch --config dist/apps/remix-ide-e2e/nightwatch-${1}.js dist/apps/remix-ide-e2e/src/tests/${TESTFILE}.js --env=$1; then
# success
break
fi
# failure
if [ "$attempt" -lt "$E2E_RETRIES" ]; then
attempt=$((attempt+1))
echo "Retrying ${TESTFILE}.js (attempt $attempt of $E2E_RETRIES)"
continue
else
TEST_EXITCODE=1
break
fi
done
# Stop the shard loop on permanent failure
if [ "$TEST_EXITCODE" -eq 1 ]; then
break
fi
done

Expand Down
4 changes: 3 additions & 1 deletion apps/remix-ide/ci/browser_test_plugin.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

set -e

BUILD_ID=${CIRCLE_BUILD_NUM:-${TRAVIS_JOB_NUMBER}}
BUILD_ID=${CIRCLE_BUILD_NUM:-local}
echo "$BUILD_ID"
TEST_EXITCODE=0

Expand All @@ -14,6 +14,8 @@ yarn run serve:production &
sleep 5

TESTFILES=$(grep -IRiL "\'@disabled\': \?true" "dist/apps/remix-ide-e2e/src/tests" | grep $1 | sort | circleci tests split )
# Prepare slither toolchain if remixd tests are present
printf '%s\n' "$TESTFILES" | ./apps/remix-ide/ci/setup_slither_if_needed.sh
for TESTFILE in $TESTFILES; do
npx nightwatch --config dist/apps/remix-ide-e2e/nightwatch-chrome.js $TESTFILE --env=chrome || TEST_EXITCODE=1
done
Expand Down
34 changes: 0 additions & 34 deletions apps/remix-ide/ci/browser_tests.sh

This file was deleted.

Binary file removed apps/remix-ide/ci/deploy_key_remix-live-alpha.enc
Binary file not shown.
Binary file removed apps/remix-ide/ci/deploy_key_remix-live.enc
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ set -e
SHA=`git rev-parse --short --verify HEAD`

# this gh action is used to deploy the build to the gh pages
mkdir dist/apps/remix-ide/.github
mkdir dist/apps/remix-ide/.github/workflows
mkdir -p dist/apps/remix-ide/.github/workflows
cp apps/remix-ide/ci/gh-actions-deploy.yml dist/apps/remix-ide/.github/workflows

cd dist/apps/remix-ide
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ set -e
SHA=`git rev-parse --short --verify HEAD`

# this gh action is used to deploy the build to the gh pages
mkdir dist/apps/remix-ide/.github
mkdir dist/apps/remix-ide/.github/workflows
mkdir -p dist/apps/remix-ide/.github/workflows
cp apps/remix-ide/ci/gh-actions-deploy.yml dist/apps/remix-ide/.github/workflows

cd dist/apps/remix-ide
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ set -e
SHA=`git rev-parse --short --verify HEAD`

# this gh action is used to deploy the build to the gh pages
mkdir dist/apps/remix-ide/.github
mkdir dist/apps/remix-ide/.github/workflows
mkdir -p dist/apps/remix-ide/.github/workflows
cp apps/remix-ide/ci/gh-actions-deploy.yml dist/apps/remix-ide/.github/workflows/gh-actions-deploy.yml

cd dist/apps/remix-ide
Expand Down
Empty file modified apps/remix-ide/ci/downloadsoljson.sh
100644 → 100755
Empty file.
5 changes: 4 additions & 1 deletion apps/remix-ide/ci/metamask.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ then
exit 0
fi

BUILD_ID=${CIRCLE_BUILD_NUM:-${TRAVIS_JOB_NUMBER}}
BUILD_ID=${CIRCLE_BUILD_NUM:-local}
echo "$BUILD_ID"
TEST_EXITCODE=0

Expand All @@ -24,6 +24,9 @@ npx http-server -p 9090 --cors='*' ./node_modules &
yarn run serve:production &
sleep 5

# Prepare slither toolchain if remixd tests are present (unlikely in metamask-only run)
printf '%s\n' "$TESTFILES" | ./apps/remix-ide/ci/setup_slither_if_needed.sh

for TESTFILE in $TESTFILES; do
echo "Running metamask test: $TESTFILE"
echo "running with env $1"
Expand Down
Loading