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