diff --git a/.github/workflows/release-deploy-v2.yml b/.github/workflows/release-deploy-v2.yml index 8d05063ff8..a5e5cd1c7b 100644 --- a/.github/workflows/release-deploy-v2.yml +++ b/.github/workflows/release-deploy-v2.yml @@ -1,12 +1,12 @@ -name: 'Release and Deploy v2' +name: 'Release and Deploy v2 - DISABLED' on: # Uncomment the line below if you want to run the workflow manually # and comment out lines 7-9 - # workflow_dispatch: - push: - branches: - - main + workflow_dispatch: + # push: + # branches: + # - main concurrency: group: ${{ github.ref }} diff --git a/.github/workflows/release-deploy-v3.yml b/.github/workflows/release-deploy-v3.yml new file mode 100644 index 0000000000..7c3704fe5f --- /dev/null +++ b/.github/workflows/release-deploy-v3.yml @@ -0,0 +1,260 @@ +name: 'Release and Deploy v3' + +on: + # workflow_call: + push: + branches: + - main + +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + +jobs: + setup: + + runs-on: ubuntu-latest + + steps: + - name: Clone Sage-Lib Repo + uses: actions/checkout@v3 + with: + # pulls all commits (needed for lerna / semantic release to correctly version) + fetch-depth: "0" + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16.20.2 + + - name: Set NPM Config + run: npm config set '//npm.pkg.github.com/:_authToken' '${{ secrets.ACCESS_TOKEN }}' + + - name: Unsafe Perm set + run: npm config set unsafe-perm true + + - name: Set Bot Name + run: git config user.name "Kajabi Automation Bot" + + - name: Cache Node modules + uses: actions/cache@v3 + id: sage-lib-node-modules + env: + cache-name: sage-lib-node-modules + with: + path: '**/node_modules' + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }} + + - name: Install packages + if: steps.sage-lib-node-modules.outputs.cache-hit != true + run: yarn install --frozen-lockfile + + lint: + needs: [setup] + runs-on: ubuntu-latest + + steps: + - name: Check out latest + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16.20.2 + + - name: Restore Node modules + uses: actions/cache/restore@v3 + id: restore-sage-lib-node-modules + env: + cache-name: sage-lib-node-modules + with: + path: '**/node_modules' + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }} + + - name: Install packages + if: steps.restore-sage-lib-node-modules.outputs.cache-hit != true + run: yarn install --frozen-lockfile + + - name: Lint + run: yarn lint + + test: + needs: [setup] + runs-on: ubuntu-latest + + steps: + - name: Check out latest + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16.20.2 + + - name: Restore Node modules + uses: actions/cache/restore@v3 + id: restore-sage-lib-node-modules + env: + cache-name: sage-lib-node-modules + with: + path: '**/node_modules' + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }} + + - name: Install packages + if: steps.restore-sage-lib-node-modules.outputs.cache-hit != true + run: yarn install --frozen-lockfile + + - name: Test + run: yarn test + + build: + needs: [setup] + runs-on: ubuntu-latest + + steps: + - name: Check out latest + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16.20.2 + + - name: Restore Node modules + uses: actions/cache/restore@v3 + id: restore-sage-lib-node-modules + env: + cache-name: sage-lib-node-modules + with: + path: '**/node_modules' + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }} + + - name: Install packages + if: steps.restore-sage-lib-node-modules.outputs.cache-hit != true + run: yarn install --frozen-lockfile + + - name: Build + run: yarn build + + - name: Cache build assets + uses: actions/cache/save@v3 + id: sage-lib-build-assets + env: + cache-name: sage-lib-build-assets + with: + path: | + 'packages/**' + 'docs/**' + key: ${{ runner.os }}-build-${{ env.cache-name }} + + + publish: + needs: [lint, test, build] + runs-on: ubuntu-latest + + steps: + - name: Check out latest + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '2.7.7' + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16.20.2 + + - name: Restore Node modules + uses: actions/cache/restore@v3 + id: restore-sage-lib-node-modules + env: + cache-name: sage-lib-node-modules + with: + path: '**/node_modules' + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }} + + - name: Check cache hit + if: steps.restore-sage-lib-node-modules.outputs.cache-hit != 'true' + run: exit 1 + + - name: Set Bot Email + run: git config user.email "dev+github-bot@kajabi.com" + + - name: Set Bot Name + run: git config user.name "Kajabi Automation Bot" + + - name: Set NPM Config + run: npm config set '//npm.pkg.github.com/:_authToken' '${{ secrets.ACCESS_TOKEN }}' + + - name: Unsafe Perm set + run: npm config set unsafe-perm true + + - name: Restore Build assets + uses: actions/cache/restore@v3 + id: restore-sage-lib-build-assets + env: + cache-name: sage-lib-build-assets + with: + path: | + 'packages/**' + 'docs/**' + key: ${{ runner.os }}-build-${{ env.cache-name }} + + - name: Check Build Assets cache hit + if: steps.restore-sage-lib-build-assets.outputs.cache-hit != 'true' + continue-on-error: true + run: yarn build + + - name: Lerna Boostrap + run: npx lerna bootstrap --ci + + - name: Lerna Publish + run: npx lerna publish from-package --no-push --registry github --yes + + deploy-sites: + needs: publish + runs-on: ubuntu-latest + + steps: + - name: Check out latest + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '2.7.7' + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16.20.2 + + - name: Deploy Documentation Site + env: + HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} + HEROKU_DOCS_APP_NAME: ${{ secrets.HEROKU_DOCS_APP_NAME }} + run: yarn docs:deploy + + - name: Deploy Storybook Site + env: + HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} + HEROKU_STORYBOOK_APP_NAME: ${{ secrets.HEROKU_STORYBOOK_APP_NAME }} + run: yarn storybook:deploy + + - name: SassDocs Site Deploy + env: + HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} + HEROKU_SASSDOCS_APP_NAME: ${{ secrets.HEROKU_SASSDOCS_APP_NAME }} + run: yarn sassdocs:deploy diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 0000000000..d0e6b52838 --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,37 @@ +name: release-please + +on: + push: + branches: + - develop + +permissions: + contents: write + pull-requests: write + +jobs: + release-please: + runs-on: ubuntu-latest + outputs: + paths_released: ${{ steps.manifest-release.outputs.paths_released }} + steps: + - uses: google-github-actions/release-please-action@v3 + id: manifest-release + with: + command: manifest + monorepo-tags: true + default-branch: main + changelog-types: '[{"type":"feat","section":"Features","hidden":false},{"type":"fix","section":"Bug Fixes","hidden":false},{"type":"docs", "section": "Documentation Updates","hidden":false}]' + + - name: Show output from Release-Please + if: ${{ steps.manifest-release.outputs.releases_created }} + run: | + echo "releases_created: ${{ steps.manifest-release.outputs.releases_created }}" + echo "upload_url: ${{ steps.manifest-release.outputs.upload_url }}" + echo "html_url: ${{ steps.manifest-release.outputs.html_url }}" + echo "tag_name: ${{ steps.manifest-release.outputs.tag_name }}" + echo "major: ${{ steps.manifest-release.outputs.major }}" + echo "minor: ${{ steps.manifest-release.outputs.minor }}" + echo "patch: ${{ steps.manifest-release.outputs.patch }}" + echo "sha: ${{ steps.manifest-release.outputs.sha }}" + echo "pr: ${{ steps.manifest-release.outputs.pr }}" diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000000..edae66748e --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,9 @@ +{ + ".": "0.0.0", + "docs": "5.18.3", + "packages/sage-assets": "1.12.3", + "packages/sage-packs": "1.0.49", + "packages/sage-react": "1.17.3", + "packages/sage-system": "1.2.14" + +} diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000000..2dffcd004b --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,31 @@ +{ + "bootstrap-sha": "42ddac26b10cdb21dfcd547308fb6a29f9b8c6ef", + "bump-minor-pre-major": false, + "bump-patch-for-minor-pre-major": false, + "include-v-in-tag": false, + "include-component-in-tag": true, + "packages": { + "docs":{ + "package-name": "@kajabi/sage" + }, + "packages/sage-assets": { + "package-name": "@kajabi/sage-assets" + + }, + "packages/sage-packs": { + "package-name": "@kajabi/sage-packs" + + }, + "packages/sage-react": { + "package-name": "@kajabi/sage-react" + + }, + "packages/sage-system": { + "package-name": "@kajabi/sage-system" + } + }, + "plugins": [ + "sentence-case" + ], + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json" +}