From 35f21e6da20e69420bc8763fd5a4a84f192fbc87 Mon Sep 17 00:00:00 2001 From: Stanley Yuen <102275989+stanleyyconsensys@users.noreply.github.com> Date: Thu, 20 Jun 2024 18:30:57 +0800 Subject: [PATCH] fix: resolve issue in cicd pipeline (#258) * chore: update deployment * chore: add cd validation * chore: update deploy * chore: update deploy * chore: update * chore: update * chore: update * chore: update * chore: restore cache * Revert "chore: restore cache" This reverts commit 844fa6cffb373df6369a40b7cdd8d9c3fc64fc9e. * chore: fix typo * chore: update get-starknet build process --- .github/workflows/deploy.yml | 74 +++++++++++++------ packages/get-starknet/package.json | 4 +- packages/get-starknet/webpack.config.build.js | 5 ++ packages/get-starknet/webpack.config.local.js | 18 +---- packages/get-starknet/webpack.serve.config.js | 36 --------- 5 files changed, 62 insertions(+), 75 deletions(-) delete mode 100644 packages/get-starknet/webpack.serve.config.js diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 064ddefc..d71bd62e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -8,7 +8,7 @@ on: type: environment required: true jobs: - perpare-deployment: + prepare-deployment: environment: ${{ inputs.environment }} permissions: contents: write @@ -28,6 +28,14 @@ jobs: HASH=$(git rev-parse --short HEAD) DATE=$(date +%Y%m%d) ENV=${{ inputs.environment }} + + { + echo "AWS_CLOUDFRONT_DISTRIBUTIONS_ID=${{ vars.AWS_CLOUDFRONT_DISTRIBUTIONS_ID }}" + echo "AWS_S3_GET_STARKNET_URL=${{ vars.AWS_S3_GET_STARKNET_URL }}" + echo "AWS_S3_URL=${{ vars.AWS_S3_URL }}" + echo "GET_STARKNET_PUBLIC_PATH=${{ vars.GET_STARKNET_PUBLIC_PATH }}" + } >> "$GITHUB_OUTPUT" + if [[ $ENV == "dev" ]]; then { echo "VERSION=${BASE}-dev-${HASH}-${DATE}" @@ -54,10 +62,14 @@ jobs: VERSION: ${{ steps.prepare_parameters.outputs.VERSION }} TAG: ${{ steps.prepare_parameters.outputs.TAG }} ENV: ${{ steps.prepare_parameters.outputs.ENV }} + AWS_S3_GET_STARKNET_URL: ${{ steps.prepare_parameters.outputs.AWS_S3_GET_STARKNET_URL }} + AWS_CLOUDFRONT_DISTRIBUTIONS_ID: ${{ steps.prepare_parameters.outputs.AWS_CLOUDFRONT_DISTRIBUTIONS_ID }} + AWS_S3_URL: ${{ steps.prepare_parameters.outputs.AWS_S3_URL }} + GET_STARKNET_PUBLIC_PATH: ${{ steps.prepare_parameters.outputs.GET_STARKNET_PUBLIC_PATH }} install-build: needs: - - perpare-deployment + - prepare-deployment permissions: contents: write runs-on: ubuntu-latest @@ -75,6 +87,8 @@ jobs: yarn allow-scripts - name: Build Snap run: | + echo "Building Snap with version $VERSION" + npm --prefix ./packages/starknet-snap version --new-version "$VERSION" --no-git-tag-version --allow-same-version yarn workspace @consensys/starknet-snap build @@ -85,20 +99,20 @@ jobs: echo "Version mismatch" exit 1 fi + + echo "Building UI with version $VERSION" + + REACT_APP_SNAP_VERSION="$VERSION" yarn workspace wallet-ui build + + echo "Building Get Starknet with GET_STARKNET_PUBLIC_PATH=$GET_STARKNET_PUBLIC_PATH" + + GET_STARKNET_PUBLIC_PATH=$GET_STARKNET_PUBLIC_PATH yarn workspace @consensys/get-starknet build env: - SNAP_ENV: ${{ needs.perpare-deployment.outputs.ENV }} - VERSION: ${{ needs.perpare-deployment.outputs.VERSION }} + SNAP_ENV: ${{ needs.prepare-deployment.outputs.ENV }} + VERSION: ${{ needs.prepare-deployment.outputs.VERSION }} VOYAGER_API_KEY: ${{ secrets.VOYAGER_API_KEY }} ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }} - - name: Build UI - run: | - REACT_APP_SNAP_VERSION="$VERSION" yarn workspace wallet-ui build - env: - VERSION: ${{ needs.perpare-deployment.outputs.VERSION }} - - name: Build Get Starknet Package - run: GET_STARKNET_PUBLIC_PATH=$GET_STARKNET_PUBLIC_PATH yarn workspace @consensys/get-starknet build - env: - GET_STARKNET_PUBLIC_PATH: ${{ vars.GET_STARKNET_PUBLIC_PATH }} + GET_STARKNET_PUBLIC_PATH: ${{ needs.prepare-deployment.outputs.GET_STARKNET_PUBLIC_PATH }} - name: Cache Build uses: actions/cache@v3 id: restore-build @@ -106,6 +120,7 @@ jobs: path: | ./packages/get-starknet/dist/webpack ./packages/wallet-ui/build + ./packages/starknet-snap/package.json ./packages/starknet-snap/dist ./packages/starknet-snap/snap.manifest.json ./node_modules/.yarn-state.yml @@ -114,7 +129,7 @@ jobs: publish-npm-dry-run: runs-on: ubuntu-latest needs: - - perpare-deployment + - prepare-deployment - install-build steps: - uses: actions/checkout@v3 @@ -130,6 +145,9 @@ jobs: with: # add /packages/snap/snap.manifest.json to include an updated shasum from build due to version update in auto PR path: | + ./packages/get-starknet/dist/webpack + ./packages/wallet-ui/build + ./packages/starknet-snap/package.json ./packages/starknet-snap/dist ./packages/starknet-snap/snap.manifest.json ./node_modules/.yarn-state.yml @@ -138,13 +156,13 @@ jobs: run: | npm pack ./packages/starknet-snap --tag "$TAG" --access public env: - TAG: ${{ needs.perpare-deployment.outputs.TAG }} + TAG: ${{ needs.prepare-deployment.outputs.TAG }} publish-npm: runs-on: ubuntu-latest needs: - publish-npm-dry-run - - perpare-deployment + - prepare-deployment steps: - uses: actions/checkout@v3 with: @@ -159,6 +177,9 @@ jobs: with: # add /packages/snap/snap.manifest.json to include an updated shasum from build due to version update in auto PR path: | + ./packages/get-starknet/dist/webpack + ./packages/wallet-ui/build + ./packages/starknet-snap/package.json ./packages/starknet-snap/dist ./packages/starknet-snap/snap.manifest.json ./node_modules/.yarn-state.yml @@ -168,12 +189,12 @@ jobs: npm publish ./packages/starknet-snap --tag "$TAG" --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - TAG: ${{ needs.perpare-deployment.outputs.TAG }} + TAG: ${{ needs.prepare-deployment.outputs.TAG }} deploy-wallet-ui: runs-on: ubuntu-latest needs: - - perpare-deployment + - prepare-deployment - publish-npm steps: - name: Configure AWS credentials @@ -190,7 +211,11 @@ jobs: id: restore-build with: path: | + ./packages/get-starknet/dist/webpack ./packages/wallet-ui/build + ./packages/starknet-snap/package.json + ./packages/starknet-snap/dist + ./packages/starknet-snap/snap.manifest.json ./node_modules/.yarn-state.yml key: ${{ github.sha }} - name: Deploy to AWS @@ -198,12 +223,12 @@ jobs: echo "Deployed Dapp to : $AWS_S3_URL" aws s3 sync ./packages/wallet-ui/build "$AWS_S3_URL" env: - AWS_S3_URL: ${{ vars.AWS_S3_URL }} + AWS_S3_URL: ${{ needs.prepare-deployment.outputs.AWS_S3_URL }} deploy-get-starknet: runs-on: ubuntu-latest needs: - - perpare-deployment + - prepare-deployment - install-build steps: - name: Configure AWS credentials @@ -221,6 +246,10 @@ jobs: with: path: | ./packages/get-starknet/dist/webpack + ./packages/wallet-ui/build + ./packages/starknet-snap/package.json + ./packages/starknet-snap/dist + ./packages/starknet-snap/snap.manifest.json ./node_modules/.yarn-state.yml key: ${{ github.sha }} - name: Deploy to AWS @@ -228,13 +257,14 @@ jobs: echo "Deployed get Starknet to : $AWS_S3_GET_STARKNET_URL" aws s3 sync ./packages/get-starknet/dist/webpack "$AWS_S3_GET_STARKNET_URL" env: - AWS_S3_GET_STARKNET_URL: ${{ vars.AWS_S3_GET_STARKNET_URL }} + AWS_S3_GET_STARKNET_URL: ${{ needs.prepare-deployment.outputs.AWS_S3_GET_STARKNET_URL }} invalid-aws-cdn-cache: runs-on: ubuntu-latest needs: - deploy-wallet-ui - deploy-get-starknet + - prepare-deployment steps: - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 @@ -254,4 +284,4 @@ jobs: echo "Invalidation $INVALIDED_ID completed" done env: - AWS_CLOUDFRONT_DISTRIBUTIONS_ID: ${{ vars.AWS_CLOUDFRONT_DISTRIBUTIONS_ID }} \ No newline at end of file + AWS_CLOUDFRONT_DISTRIBUTIONS_ID: ${{ needs.prepare-deployment.outputs.AWS_CLOUDFRONT_DISTRIBUTIONS_ID }} \ No newline at end of file diff --git a/packages/get-starknet/package.json b/packages/get-starknet/package.json index 2d0b1454..0d55a758 100644 --- a/packages/get-starknet/package.json +++ b/packages/get-starknet/package.json @@ -12,11 +12,9 @@ "url": "https://github.com/ConsenSys/starknet-snap.git" }, "scripts": { - "start": "webpack-cli serve --config webpack.serve.config.js", + "start": "GET_STARKNET_PUBLIC_PATH=http://localhost:8082/ SNAP_ID=local:http://localhost:8081 yarn build && webpack-cli serve --config webpack.config.local.js", "clean": "rimraf dist", - "setup": "yarn install --no-immutable", "build": "webpack --config webpack.config.build.js", - "serve:local": "GET_STARKNET_PUBLIC_PATH=http://localhost:8082/ yarn build && SNAP_ID=local:http://localhost:8081/ webpack-cli serve --config webpack.config.local.js", "prettier": "prettier --write \"src/**/*.ts\"", "lint": "eslint 'src/*.{js,ts,tsx}' --max-warnings 0 -f json -o eslint-report.json", "lint:fix": "eslint '**/*.{js,ts,tsx}' --fix", diff --git a/packages/get-starknet/webpack.config.build.js b/packages/get-starknet/webpack.config.build.js index fbeca61f..4ed24ea8 100644 --- a/packages/get-starknet/webpack.config.build.js +++ b/packages/get-starknet/webpack.config.build.js @@ -1,4 +1,6 @@ // eslint-disable-next-line @typescript-eslint/no-var-requires +const webpack = require('webpack'); +// eslint-disable-next-line @typescript-eslint/no-var-requires const dotenv = require( "dotenv"); // eslint-disable-next-line @typescript-eslint/no-var-requires const { merge } = require('webpack-merge'); @@ -16,6 +18,9 @@ module.exports = (env) => merge(common, { publicPath: process.env.GET_STARKNET_PUBLIC_PATH ?? 'https://snaps.consensys.io/starknet/get-starknet/v1/', }, plugins: [ + new webpack.DefinePlugin({ + 'process.env.SNAP_ID': JSON.stringify(process.env.SNAP_ID ?? 'npm:@consensys/starknet-snap') + }), new ModuleFederationPlugin({ name: 'MetaMaskStarknetSnapWallet', filename: 'remoteEntry.js', diff --git a/packages/get-starknet/webpack.config.local.js b/packages/get-starknet/webpack.config.local.js index bd9f9079..ce25a4b7 100644 --- a/packages/get-starknet/webpack.config.local.js +++ b/packages/get-starknet/webpack.config.local.js @@ -1,12 +1,7 @@ // eslint-disable-next-line @typescript-eslint/no-var-requires -const webpack = require('webpack'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { merge } = require('webpack-merge'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const common = require('./webpack.common.js'); -// eslint-disable-next-line @typescript-eslint/no-var-requires const path = require('path'); -module.exports = merge(common, { + +module.exports = { mode: 'development', output: { publicPath: process.env.GET_STARKNET_PUBLIC_PATH ?? 'http://localhost:8082/', // Adjust the development publicPath as needed @@ -15,10 +10,5 @@ module.exports = merge(common, { static: path.join(__dirname, 'dist/webpack'), compress: true, port: 8082, - }, - plugins: [ - new webpack.DefinePlugin({ - 'process.env.SNAP_ID': JSON.stringify(process.env.SNAP_ID ?? 'http://localhost:8081/') - }) - ] -}); + } +}; diff --git a/packages/get-starknet/webpack.serve.config.js b/packages/get-starknet/webpack.serve.config.js deleted file mode 100644 index 0efd44a7..00000000 --- a/packages/get-starknet/webpack.serve.config.js +++ /dev/null @@ -1,36 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const HtmlWebpackPlugin = require('html-webpack-plugin'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const path = require('path'); - -module.exports = { - entry: './test-fed', - mode: 'development', - target: 'web', - devServer: { - static: { - directory: path.join(__dirname, 'dist'), - }, - port: 3001, - }, - output: { - publicPath: 'auto', - }, - resolve: { - extensions: ['.ts', '.tsx', '.js'], - }, - module: { - rules: [ - { - test: /\.tsx?$/, - use: 'ts-loader', - exclude: /node_modules/, - }, - ], - }, - plugins: [ - new HtmlWebpackPlugin({ - template: './public/index.html', - }), - ], -}; \ No newline at end of file