Merge branch 'master' into simon/clear-tx-cache
This commit is contained in:
		
						commit
						c570cc1e73
					
				
							
								
								
									
										221
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										221
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @ -63,7 +63,96 @@ jobs: | ||||
|         run: npm run build | ||||
|         working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/backend | ||||
| 
 | ||||
| 
 | ||||
|   cache: | ||||
|     name: "Cache assets for builds" | ||||
|     runs-on: "ubuntu-latest" | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           path: assets | ||||
| 
 | ||||
|       - name: Setup Node | ||||
|         uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: ${{ matrix.node }} | ||||
|           registry-url: "https://registry.npmjs.org" | ||||
| 
 | ||||
|       - name: Install (Prod dependencies only) | ||||
|         run: npm ci --omit=dev --omit=optional | ||||
|         working-directory: assets/frontend | ||||
| 
 | ||||
|       - name: Restore cached mining pool assets | ||||
|         continue-on-error: true | ||||
|         id: cache-mining-pool-restore | ||||
|         uses: actions/cache/restore@v4 | ||||
|         with: | ||||
|           path: | | ||||
|             mining-pool-assets.zip | ||||
|           key: mining-pool-assets-cache | ||||
| 
 | ||||
|       - name: Restore promo video assets | ||||
|         continue-on-error: true | ||||
|         id: cache-promo-video-restore | ||||
|         uses: actions/cache/restore@v4 | ||||
|         with: | ||||
|           path: | | ||||
|             promo-video-assets.zip | ||||
|           key: promo-video-assets-cache | ||||
| 
 | ||||
|       - name: Unzip assets before building (src/resources) | ||||
|         continue-on-error: true | ||||
|         run: unzip -o mining-pool-assets.zip -d assets/frontend/src/resources/mining-pools | ||||
| 
 | ||||
|       - name: Unzip assets before building (src/resources) | ||||
|         continue-on-error: true | ||||
|         run: unzip -o promo-video-assets.zip -d assets/frontend/src/resources/promo-video | ||||
| 
 | ||||
|       # - name: Unzip assets before building (dist) | ||||
|       #   continue-on-error: true | ||||
|       #   run: unzip assets.zip -d assets/frontend/dist/mempool/browser/resources | ||||
| 
 | ||||
|       - name: Sync-assets | ||||
|         run: npm run sync-assets-dev | ||||
|         working-directory: assets/frontend | ||||
| 
 | ||||
|       - name: Zip mining-pool assets | ||||
|         run: zip -jrq mining-pool-assets.zip assets/frontend/src/resources/mining-pools/* | ||||
| 
 | ||||
|       - name: Zip promo-video assets | ||||
|         run: zip -jrq promo-video-assets.zip assets/frontend/src/resources/promo-video/* | ||||
| 
 | ||||
|       - name: Upload mining pool assets as artifact | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           name: mining-pool-assets | ||||
|           path: mining-pool-assets.zip | ||||
| 
 | ||||
|       - name: Upload promo video assets as artifact | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           name: promo-video-assets | ||||
|           path: promo-video-assets.zip | ||||
| 
 | ||||
|       - name: Save mining pool assets cache | ||||
|         id: cache-mining-pool-save | ||||
|         uses: actions/cache/save@v4 | ||||
|         with: | ||||
|           path: | | ||||
|             mining-pool-assets.zip | ||||
|           key: mining-pool-assets-cache | ||||
| 
 | ||||
|       - name: Save promo video assets cache | ||||
|         id: cache-promo-video-save | ||||
|         uses: actions/cache/save@v4 | ||||
|         with: | ||||
|           path: | | ||||
|             promo-video-assets.zip | ||||
|           key: promo-video-assets-cache | ||||
| 
 | ||||
|   frontend: | ||||
|     needs: cache | ||||
|     if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')" | ||||
|     strategy: | ||||
|       matrix: | ||||
| @ -103,9 +192,141 @@ jobs: | ||||
|       # - name: Test | ||||
|       #   run: npm run test | ||||
| 
 | ||||
|       - name: Restore cached mining pool assets | ||||
|         continue-on-error: true | ||||
|         id: cache-mining-pool-restore | ||||
|         uses: actions/cache/restore@v4 | ||||
|         with: | ||||
|           path: | | ||||
|             mining-pool-assets.zip | ||||
|           key: mining-pool-assets-cache | ||||
| 
 | ||||
|       - name: Restore promo video assets | ||||
|         continue-on-error: true | ||||
|         id: cache-promo-video-restore | ||||
|         uses: actions/cache/restore@v4 | ||||
|         with: | ||||
|           path: | | ||||
|             promo-video-assets.zip | ||||
|           key: promo-video-assets-cache | ||||
| 
 | ||||
|       - name: Download artifact | ||||
|         uses: actions/download-artifact@v4 | ||||
|         with: | ||||
|           name: mining-pool-assets | ||||
| 
 | ||||
|       - name: Unzip assets before building (src/resources) | ||||
|         run: unzip -o mining-pool-assets.zip -d ${{ matrix.node }}/${{ matrix.flavor }}/frontend/src/resources/mining-pools | ||||
| 
 | ||||
|       - name: Download artifact | ||||
|         uses: actions/download-artifact@v4 | ||||
|         with: | ||||
|           name: promo-video-assets | ||||
| 
 | ||||
|       - name: Unzip assets before building (src/resources) | ||||
|         run: unzip -o promo-video-assets.zip -d ${{ matrix.node }}/${{ matrix.flavor }}/frontend/src/resources/promo-video | ||||
| 
 | ||||
|       # - name: Unzip assets before building (dist) | ||||
|       #   run: unzip assets.zip -d ${{ matrix.node }}/${{ matrix.flavor }}/frontend/dist/mempool/browser/resources | ||||
| 
 | ||||
|       - name: Display resulting source tree | ||||
|         run: ls -R | ||||
| 
 | ||||
|       - name: Build | ||||
|         run: npm run build | ||||
|         working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/frontend | ||||
|         env:  | ||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|    | ||||
|   e2e: | ||||
|     if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')" | ||||
|     runs-on: "ubuntu-latest" | ||||
|     needs: frontend | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         # module: ["mempool", "liquid", "bisq"] Disabling bisq support for now | ||||
|         module: ["mempool", "liquid"] | ||||
|         include: | ||||
|           - module: "mempool" | ||||
|             spec: | | ||||
|               cypress/e2e/mainnet/*.spec.ts | ||||
|               cypress/e2e/signet/*.spec.ts | ||||
|               cypress/e2e/testnet/*.spec.ts | ||||
|           - module: "liquid" | ||||
|             spec: | | ||||
|               cypress/e2e/liquid/liquid.spec.ts | ||||
|               cypress/e2e/liquidtestnet/liquidtestnet.spec.ts | ||||
|           # - module: "bisq" | ||||
|           #   spec: | | ||||
|           #     cypress/e2e/bisq/bisq.spec.ts | ||||
| 
 | ||||
|     name: E2E tests for ${{ matrix.module }} | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           path: ${{ matrix.module }} | ||||
| 
 | ||||
|       - name: Setup node | ||||
|         uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: 20 | ||||
|           cache: "npm" | ||||
|           cache-dependency-path: ${{ matrix.module }}/frontend/package-lock.json | ||||
| 
 | ||||
|       - name: Restore cached mining pool assets | ||||
|         continue-on-error: true | ||||
|         id: cache-mining-pool-restore | ||||
|         uses: actions/cache/restore@v4 | ||||
|         with: | ||||
|           path: | | ||||
|             mining-pool-assets.zip | ||||
|           key: mining-pool-assets-cache | ||||
|    | ||||
|       - name: Restore cached promo video assets | ||||
|         continue-on-error: true | ||||
|         id: cache-promo-video-restore | ||||
|         uses: actions/cache/restore@v4 | ||||
|         with: | ||||
|           path: | | ||||
|             promo-video-assets.zip | ||||
|           key: promo-video-assets-cache | ||||
| 
 | ||||
|       - name: Download artifact | ||||
|         uses: actions/download-artifact@v4 | ||||
|         with: | ||||
|           name: mining-pool-assets | ||||
| 
 | ||||
|       - name: Unzip assets before building (src/resources) | ||||
|         run: unzip -o mining-pool-assets.zip -d ${{ matrix.module }}/frontend/src/resources/mining-pools | ||||
| 
 | ||||
|       - name: Download artifact | ||||
|         uses: actions/download-artifact@v4 | ||||
|         with: | ||||
|           name: promo-video-assets | ||||
| 
 | ||||
|       - name: Unzip assets before building (src/resources) | ||||
|         run: unzip -o promo-video-assets.zip -d ${{ matrix.module }}/frontend/src/resources/promo-video | ||||
|        | ||||
|       - name: Chrome browser tests (${{ matrix.module }}) | ||||
|         uses: cypress-io/github-action@v5 | ||||
|         with: | ||||
|           tag: ${{ github.event_name }} | ||||
|           working-directory: ${{ matrix.module }}/frontend | ||||
|           build: npm run config:defaults:${{ matrix.module }} | ||||
|           start: npm run start:local-staging | ||||
|           wait-on: "http://localhost:4200" | ||||
|           wait-on-timeout: 120 | ||||
|           record: true | ||||
|           parallel: true | ||||
|           spec: ${{ matrix.spec }} | ||||
|           group: Tests on Chrome (${{ matrix.module }}) | ||||
|           browser: "chrome" | ||||
|           ci-build-id: "${{ github.sha }}-${{ github.workflow }}-${{ github.event_name }}" | ||||
|         env: | ||||
|           COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} | ||||
|           CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} | ||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|           CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }} | ||||
|          | ||||
							
								
								
									
										64
									
								
								.github/workflows/cypress.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										64
									
								
								.github/workflows/cypress.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,64 +0,0 @@ | ||||
| name: Cypress Tests | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: [master] | ||||
|   pull_request: | ||||
|     types: [opened, synchronize] | ||||
| 
 | ||||
| jobs: | ||||
|   cypress: | ||||
|     if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')" | ||||
|     runs-on: "ubuntu-latest" | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         module: ["mempool", "liquid", "bisq"] | ||||
|         include: | ||||
|           - module: "mempool" | ||||
|             spec: | | ||||
|               cypress/e2e/mainnet/*.spec.ts | ||||
|               cypress/e2e/signet/*.spec.ts | ||||
|               cypress/e2e/testnet/*.spec.ts | ||||
|           - module: "liquid" | ||||
|             spec: | | ||||
|               cypress/e2e/liquid/liquid.spec.ts | ||||
|               cypress/e2e/liquidtestnet/liquidtestnet.spec.ts | ||||
|           - module: "bisq" | ||||
|             spec: | | ||||
|               cypress/e2e/bisq/bisq.spec.ts | ||||
| 
 | ||||
|     name: E2E tests for ${{ matrix.module }} | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           path: ${{ matrix.module }} | ||||
| 
 | ||||
|       - name: Setup node | ||||
|         uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: 20 | ||||
|           cache: "npm" | ||||
|           cache-dependency-path: ${{ matrix.module }}/frontend/package-lock.json | ||||
| 
 | ||||
|       - name: Chrome browser tests (${{ matrix.module }}) | ||||
|         uses: cypress-io/github-action@v5 | ||||
|         with: | ||||
|           tag: ${{ github.event_name }} | ||||
|           working-directory: ${{ matrix.module }}/frontend | ||||
|           build: npm run config:defaults:${{ matrix.module }} | ||||
|           start: npm run start:local-staging | ||||
|           wait-on: "http://localhost:4200" | ||||
|           wait-on-timeout: 120 | ||||
|           record: true | ||||
|           parallel: true | ||||
|           spec: ${{ matrix.spec }} | ||||
|           group: Tests on Chrome (${{ matrix.module }}) | ||||
|           browser: "chrome" | ||||
|           ci-build-id: "${{ github.sha }}-${{ github.workflow }}-${{ github.event_name }}" | ||||
|         env: | ||||
|           COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} | ||||
|           CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} | ||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|           CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }} | ||||
| @ -22,7 +22,7 @@ var PATH; | ||||
| if (process.argv[2]) { | ||||
|   PATH = process.argv[2]; | ||||
|   PATH += PATH.endsWith("/") ? "" : "/" | ||||
|   PATH = path.normalize(PATH); | ||||
|   PATH = path.resolve(path.normalize(PATH)); | ||||
|   console.log(`[sync-assets] using PATH ${PATH}`); | ||||
|   if (!fs.existsSync(PATH)){ | ||||
|     console.log(`${LOG_TAG} ${PATH} does not exist, creating`); | ||||
| @ -110,7 +110,7 @@ function downloadMiningPoolLogos$() { | ||||
|           } | ||||
|           let downloadedCount = 0; | ||||
|           for (const poolLogo of poolLogos) { | ||||
|             const filePath = PATH + `mining-pools/${poolLogo.name}`; | ||||
|             const filePath = `${PATH}/mining-pools/${poolLogo.name}`; | ||||
|             if (fs.existsSync(filePath)) { | ||||
|               const localHash = getLocalHash(filePath); | ||||
|               if (verbose) { | ||||
| @ -124,7 +124,7 @@ function downloadMiningPoolLogos$() { | ||||
|               } | ||||
|             } else { | ||||
|               console.log(`${LOG_TAG} ${poolLogo.name} is missing, downloading...`); | ||||
|               const miningPoolsDir = PATH + `mining-pools/`; | ||||
|               const miningPoolsDir = `${PATH}/mining-pools/`; | ||||
|               if (!fs.existsSync(miningPoolsDir)){ | ||||
|                 fs.mkdirSync(miningPoolsDir, { recursive: true }); | ||||
|               } | ||||
| @ -179,7 +179,7 @@ function downloadPromoVideoSubtiles$() { | ||||
|           } | ||||
|           let downloadedCount = 0; | ||||
|           for (const language of videoLanguages) { | ||||
|             const filePath = PATH + `promo-video/${language.name}`; | ||||
|             const filePath = `${PATH}/promo-video/${language.name}`; | ||||
|             if (fs.existsSync(filePath)) { | ||||
|               if (verbose) { | ||||
|                 console.log(`${LOG_TAG} ${language.name} remote promo video hash ${language.sha}`); | ||||
| @ -193,7 +193,7 @@ function downloadPromoVideoSubtiles$() { | ||||
|               } | ||||
|             } else { | ||||
|               console.log(`${LOG_TAG} ${language.name} is missing, downloading`); | ||||
|               const promoVideosDir = PATH + `promo-video/`; | ||||
|               const promoVideosDir = `${PATH}/promo-video/`; | ||||
|               if (!fs.existsSync(promoVideosDir)){ | ||||
|                 fs.mkdirSync(promoVideosDir, { recursive: true }); | ||||
|               } | ||||
| @ -250,7 +250,7 @@ function downloadPromoVideo$() { | ||||
|             if (item.name !== 'promo.mp4') { | ||||
|               continue; | ||||
|             } | ||||
|             const filePath = PATH + `promo-video/mempool-promo.mp4`; | ||||
|             const filePath = `${PATH}/promo-video/mempool-promo.mp4`; | ||||
|             if (fs.existsSync(filePath)) { | ||||
|               const localHash = getLocalHash(filePath); | ||||
| 
 | ||||
| @ -288,16 +288,16 @@ if (configContent.BASE_MODULE && configContent.BASE_MODULE === 'liquid') { | ||||
|   const testnetAssetsMinimalJsonUrl = 'https://raw.githubusercontent.com/Blockstream/asset_registry_testnet_db/master/index.minimal.json'; | ||||
| 
 | ||||
|   console.log(`${LOG_TAG} Downloading assets`); | ||||
|   download(PATH + 'assets.json', assetsJsonUrl); | ||||
|   download(`${PATH}/assets.json`, assetsJsonUrl); | ||||
| 
 | ||||
|   console.log(`${LOG_TAG} Downloading assets minimal`); | ||||
|   download(PATH + 'assets.minimal.json', assetsMinimalJsonUrl); | ||||
|   download(`${PATH}/assets.minimal.json`, assetsMinimalJsonUrl); | ||||
| 
 | ||||
|   console.log(`${LOG_TAG} Downloading testnet assets`); | ||||
|   download(PATH + 'assets-testnet.json', testnetAssetsJsonUrl); | ||||
|   download(`${PATH}/assets-testnet.json`, testnetAssetsJsonUrl); | ||||
| 
 | ||||
|   console.log(`${LOG_TAG} Downloading testnet assets minimal`); | ||||
|   download(PATH + 'assets-testnet.minimal.json', testnetAssetsMinimalJsonUrl); | ||||
|   download(`${PATH}/assets-testnet.minimal.json`, testnetAssetsMinimalJsonUrl); | ||||
| } else { | ||||
|   if (verbose) { | ||||
|     console.log(`${LOG_TAG} BASE_MODULE is not set to Liquid (${configContent.BASE_MODULE}), skipping downloading assets`); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user