From f438e6afbc80b704fc6e4bbc6ddc45ed5c178b64 Mon Sep 17 00:00:00 2001 From: Jakub Kubacki Date: Thu, 10 Jul 2025 15:21:23 +0200 Subject: [PATCH 1/3] Add workflows --- ...deploy-docs.yml => __old__deploy-docs.yml} | 0 ...npm-publish.yml => __old__npm-publish.yml} | 0 .github/workflows/deploy-develop.yml | 37 +++++++++++ .github/workflows/deploy-production.yml | 63 +++++++++++++++++++ .github/workflows/validate-pr.yml | 51 +++++++++++++++ 5 files changed, 151 insertions(+) rename .github/workflows/{deploy-docs.yml => __old__deploy-docs.yml} (100%) rename .github/workflows/{npm-publish.yml => __old__npm-publish.yml} (100%) create mode 100644 .github/workflows/deploy-develop.yml create mode 100644 .github/workflows/deploy-production.yml create mode 100644 .github/workflows/validate-pr.yml diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/__old__deploy-docs.yml similarity index 100% rename from .github/workflows/deploy-docs.yml rename to .github/workflows/__old__deploy-docs.yml diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/__old__npm-publish.yml similarity index 100% rename from .github/workflows/npm-publish.yml rename to .github/workflows/__old__npm-publish.yml diff --git a/.github/workflows/deploy-develop.yml b/.github/workflows/deploy-develop.yml new file mode 100644 index 0000000..d6bd0c8 --- /dev/null +++ b/.github/workflows/deploy-develop.yml @@ -0,0 +1,37 @@ +name: Deploy Develop + +env: + APP_LOCATION: '' + OUTPUT_LOCATION: 'packages/website/build' + +on: + push: + branches: [main] + +permissions: + contents: read + +jobs: + deploy-dev: + runs-on: ubuntu-latest + name: Deploy to Dev Environment + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: true + + - name: Deploy to Development + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_DEV_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + output_location: ${{ env.OUTPUT_LOCATION }} + app_location: ${{ env.APP_LOCATION }} + app_build_command: 'pnpm website build' + action: 'upload' + skip_api_build: true + env: + CUSTOM_BUILD_COMMAND: corepack enable && corepack prepare pnpm@10.9.0 --activate && pnpm install --frozen-lockfile && pnpm ui build && pnpm website build + ENABLE_NODE_MONOREPO_BUILD: true + NODE_VERSION: 22 \ No newline at end of file diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml new file mode 100644 index 0000000..c583bf2 --- /dev/null +++ b/.github/workflows/deploy-production.yml @@ -0,0 +1,63 @@ +name: Deploy Production + +env: + APP_LOCATION: '' + OUTPUT_LOCATION: 'packages/website/build' + +on: + push: + branches: ['release/*'] + +permissions: + contents: read + +jobs: + deploy-production: + runs-on: ubuntu-latest + name: Deploy to Production + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: true + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + registry-url: 'https://registry.npmjs.org' + + - name: Enable Corepack + run: corepack enable + + - name: Install pnpm + run: corepack prepare pnpm@10.9.0 --activate + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build UI Package + run: pnpm ui build + + - name: Build Documentation + run: pnpm website build + + - name: Publish NPM Package + run: pnpm publish --access public + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + - name: Deploy Documentation to Production + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_PROD_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + output_location: ${{ env.OUTPUT_LOCATION }} + app_location: ${{ env.APP_LOCATION }} + app_build_command: 'pnpm website build' + action: 'upload' + skip_api_build: true + env: + CUSTOM_BUILD_COMMAND: corepack enable && corepack prepare pnpm@10.9.0 --activate && pnpm install --frozen-lockfile && pnpm ui build && pnpm website build + ENABLE_NODE_MONOREPO_BUILD: true + NODE_VERSION: 22 \ No newline at end of file diff --git a/.github/workflows/validate-pr.yml b/.github/workflows/validate-pr.yml new file mode 100644 index 0000000..6f28622 --- /dev/null +++ b/.github/workflows/validate-pr.yml @@ -0,0 +1,51 @@ +name: Validate PR + +env: + APP_LOCATION: '' + OUTPUT_LOCATION: 'packages/website/build' + +on: + pull_request: + branches: [main, 'release/*'] + +permissions: + contents: read + pull-requests: write + +jobs: + validate: + runs-on: ubuntu-latest + name: Validate PR + env: + ENABLE_NODE_MONOREPO_BUILD: true + NODE_VERSION: 22 + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Enable Corepack + run: corepack enable + + - name: Install pnpm + run: corepack prepare pnpm@10.9.0 --activate + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build UI Package + run: pnpm ui build + + - name: Build Documentation + run: pnpm website build + + - name: Run Quality Checks + run: | + pnpm lint:fix + pnpm format + pnpm typecheck + pnpm file-lint \ No newline at end of file From bb813ccf97e5bd853b2be7f76e62b6c2f628719a Mon Sep 17 00:00:00 2001 From: Jakub Kubacki Date: Thu, 10 Jul 2025 15:29:03 +0200 Subject: [PATCH 2/3] Add missing npm publish --- .github/workflows/__old__deploy-docs.yml | 77 ------------------------ .github/workflows/__old__npm-publish.yml | 68 --------------------- .github/workflows/deploy-develop.yml | 1 + .github/workflows/deploy-production.yml | 17 ++++++ 4 files changed, 18 insertions(+), 145 deletions(-) delete mode 100644 .github/workflows/__old__deploy-docs.yml delete mode 100644 .github/workflows/__old__npm-publish.yml diff --git a/.github/workflows/__old__deploy-docs.yml b/.github/workflows/__old__deploy-docs.yml deleted file mode 100644 index b64cb03..0000000 --- a/.github/workflows/__old__deploy-docs.yml +++ /dev/null @@ -1,77 +0,0 @@ -name: Docs Deployment - -env: - APP_LOCATION: '' - OUTPUT_LOCATION: 'packages/website/build' - -on: - push: - branches: - - main - pull_request: - branches: - - main - -permissions: - issues: write - contents: read - pull-requests: write - -jobs: - check_for_pr: - if: github.event_name == 'pull_request' - runs-on: ubuntu-latest - name: Check for PR - env: - ENABLE_NODE_MONOREPO_BUILD: true - NODE_VERSION: 22 - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - - - name: Enable Corepack - run: corepack enable - - - name: Install pnpm - run: corepack prepare pnpm@10.9.0 --activate - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Build UI - run: pnpm ui build - - - name: Build Website - run: pnpm website build - - - name: Run lint, format, typecheck, file-lint - run: pnpm lint:fix && pnpm format && pnpm typecheck && pnpm file-lint - - build_and_deploy: - if: github.event_name == 'push' - runs-on: ubuntu-latest - name: Build and Deploy - steps: - - uses: actions/checkout@85e6279cec87321a52edac9c87bce653a07cf6c2 - with: - submodules: true - - - name: Deploy - uses: Azure/static-web-apps-deploy@4d27395796ac319302594769cfe812bd207490b1 - with: - azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} - repo_token: ${{ secrets.GITHUB_TOKEN }} - output_location: ${{ env.OUTPUT_LOCATION }} - app_location: ${{ env.APP_LOCATION }} - app_build_command: 'pnpm website build' - action: 'upload' - skip_api_build: true - env: - CUSTOM_BUILD_COMMAND: corepack enable && corepack prepare pnpm@10.9.0 --activate && pnpm install --frozen-lockfile && pnpm ui build && pnpm website build - ENABLE_NODE_MONOREPO_BUILD: true - NODE_VERSION: 22 diff --git a/.github/workflows/__old__npm-publish.yml b/.github/workflows/__old__npm-publish.yml deleted file mode 100644 index 73c3fe4..0000000 --- a/.github/workflows/__old__npm-publish.yml +++ /dev/null @@ -1,68 +0,0 @@ -name: Publish @synergycodes/axiom package to NPM - -on: - push: - branches: - - main - -jobs: - publish: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [22] - permissions: - contents: read - packages: write - - steps: - - name: Checkout repo - uses: actions/checkout@v4 - with: - fetch-depth: 2 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - cache: 'pnpm' - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Read versions - id: version-check - run: | - OLD=$(git show HEAD~1:packages/ui/package.json | jq -r .version) - NEW=$(jq -r .version packages/ui/package.json) - echo "old=$OLD" >> $GITHUB_OUTPUT - echo "new=$NEW" >> $GITHUB_OUTPUT - - - name: Conditionally build & publish - run: | - echo "Old version: ${{ steps.version-check.outputs.old }}" - echo "New version: ${{ steps.version-check.outputs.new }}" - - if [ "${{ steps.version-check.outputs.new }}" != "${{ steps.version-check.outputs.old }}" ]; then - echo "Versions differ. Proceeding with build and publish." - - pnpm ui build - - echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc - - cd packages/ui - echo "Publishing @synergycodes/axiom@${{ steps.version-check.outputs.new }} with 'beta' tag…" - pnpm publish --access public --tag beta --no-git-checks - - echo "Adding 'latest' dist-tag to @synergycodes/axiom@${{ steps.version-check.outputs.new }}…" - pnpm dist-tag add @synergycodes/axiom@${{ steps.version-check.outputs.new }} latest - - rm -f ~/.npmrc - else - echo "Version unchanged. Skipping build and publish." - fi - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/deploy-develop.yml b/.github/workflows/deploy-develop.yml index d6bd0c8..1df0f1a 100644 --- a/.github/workflows/deploy-develop.yml +++ b/.github/workflows/deploy-develop.yml @@ -31,6 +31,7 @@ jobs: app_build_command: 'pnpm website build' action: 'upload' skip_api_build: true + deployment_environment: 'dev' env: CUSTOM_BUILD_COMMAND: corepack enable && corepack prepare pnpm@10.9.0 --activate && pnpm install --frozen-lockfile && pnpm ui build && pnpm website build ENABLE_NODE_MONOREPO_BUILD: true diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml index c583bf2..8b28e67 100644 --- a/.github/workflows/deploy-production.yml +++ b/.github/workflows/deploy-production.yml @@ -42,7 +42,23 @@ jobs: - name: Build Documentation run: pnpm website build + - name: Check if version changed + id: version-check + run: | + CURRENT_VERSION=$(node -p "require('./package.json').version") + PUBLISHED_VERSION=$(npm view @axiomhq/axiom-ui-components version 2>/dev/null || echo "0.0.0") + echo "current-version=$CURRENT_VERSION" >> $GITHUB_OUTPUT + echo "published-version=$PUBLISHED_VERSION" >> $GITHUB_OUTPUT + if [ "$CURRENT_VERSION" != "$PUBLISHED_VERSION" ]; then + echo "version-changed=true" >> $GITHUB_OUTPUT + echo "Version changed from $PUBLISHED_VERSION to $CURRENT_VERSION" + else + echo "version-changed=false" >> $GITHUB_OUTPUT + echo "Version unchanged: $CURRENT_VERSION" + fi + - name: Publish NPM Package + if: steps.version-check.outputs.version-changed == 'true' run: pnpm publish --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} @@ -57,6 +73,7 @@ jobs: app_build_command: 'pnpm website build' action: 'upload' skip_api_build: true + deployment_environment: 'release' env: CUSTOM_BUILD_COMMAND: corepack enable && corepack prepare pnpm@10.9.0 --activate && pnpm install --frozen-lockfile && pnpm ui build && pnpm website build ENABLE_NODE_MONOREPO_BUILD: true From bda30e0d79084cdcf95952b86a925a11023a68f1 Mon Sep 17 00:00:00 2001 From: Jakub Kubacki Date: Mon, 14 Jul 2025 09:11:52 +0200 Subject: [PATCH 3/3] Add some fixes --- .github/workflows/deploy-develop.yml | 2 +- .github/workflows/deploy-production.yml | 47 ++++++++++++++++--------- .github/workflows/validate-pr.yml | 4 +-- 3 files changed, 33 insertions(+), 20 deletions(-) diff --git a/.github/workflows/deploy-develop.yml b/.github/workflows/deploy-develop.yml index 1df0f1a..e1e1fc5 100644 --- a/.github/workflows/deploy-develop.yml +++ b/.github/workflows/deploy-develop.yml @@ -33,6 +33,6 @@ jobs: skip_api_build: true deployment_environment: 'dev' env: - CUSTOM_BUILD_COMMAND: corepack enable && corepack prepare pnpm@10.9.0 --activate && pnpm install --frozen-lockfile && pnpm ui build && pnpm website build + CUSTOM_BUILD_COMMAND: npm i -g corepack@latest && corepack prepare && pnpm install --frozen-lockfile && pnpm ui build && pnpm website build ENABLE_NODE_MONOREPO_BUILD: true NODE_VERSION: 22 \ No newline at end of file diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml index 8b28e67..15205bd 100644 --- a/.github/workflows/deploy-production.yml +++ b/.github/workflows/deploy-production.yml @@ -28,10 +28,10 @@ jobs: registry-url: 'https://registry.npmjs.org' - name: Enable Corepack - run: corepack enable + run: npm i -g corepack@latest - name: Install pnpm - run: corepack prepare pnpm@10.9.0 --activate + run: corepack prepare - name: Install dependencies run: pnpm install --frozen-lockfile @@ -42,26 +42,39 @@ jobs: - name: Build Documentation run: pnpm website build - - name: Check if version changed + - name: Read versions id: version-check run: | - CURRENT_VERSION=$(node -p "require('./package.json').version") - PUBLISHED_VERSION=$(npm view @axiomhq/axiom-ui-components version 2>/dev/null || echo "0.0.0") - echo "current-version=$CURRENT_VERSION" >> $GITHUB_OUTPUT - echo "published-version=$PUBLISHED_VERSION" >> $GITHUB_OUTPUT - if [ "$CURRENT_VERSION" != "$PUBLISHED_VERSION" ]; then - echo "version-changed=true" >> $GITHUB_OUTPUT - echo "Version changed from $PUBLISHED_VERSION to $CURRENT_VERSION" + OLD=$(git show HEAD~1:packages/ui/package.json | jq -r .version) + NEW=$(jq -r .version packages/ui/package.json) + echo "old=$OLD" >> $GITHUB_OUTPUT + echo "new=$NEW" >> $GITHUB_OUTPUT + + - name: Conditionally build & publish + run: | + echo "Old version: ${{ steps.version-check.outputs.old }}" + echo "New version: ${{ steps.version-check.outputs.new }}" + + if [ "${{ steps.version-check.outputs.new }}" != "${{ steps.version-check.outputs.old }}" ]; then + echo "Versions differ. Proceeding with build and publish." + + pnpm ui build + + echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc + + cd packages/ui + echo "Publishing @synergycodes/axiom@${{ steps.version-check.outputs.new }} with 'beta' tag…" + pnpm publish --access public --tag beta --no-git-checks + + echo "Adding 'latest' dist-tag to @synergycodes/axiom@${{ steps.version-check.outputs.new }}…" + pnpm dist-tag add @synergycodes/axiom@${{ steps.version-check.outputs.new }} latest + + rm -f ~/.npmrc else - echo "version-changed=false" >> $GITHUB_OUTPUT - echo "Version unchanged: $CURRENT_VERSION" + echo "Version unchanged. Skipping build and publish." fi - - - name: Publish NPM Package - if: steps.version-check.outputs.version-changed == 'true' - run: pnpm publish --access public env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Deploy Documentation to Production uses: Azure/static-web-apps-deploy@v1 diff --git a/.github/workflows/validate-pr.yml b/.github/workflows/validate-pr.yml index 6f28622..00494d1 100644 --- a/.github/workflows/validate-pr.yml +++ b/.github/workflows/validate-pr.yml @@ -29,10 +29,10 @@ jobs: node-version: ${{ env.NODE_VERSION }} - name: Enable Corepack - run: corepack enable + run: npm i -g corepack@latest - name: Install pnpm - run: corepack prepare pnpm@10.9.0 --activate + run: corepack prepare - name: Install dependencies run: pnpm install --frozen-lockfile