diff --git a/.github/common-actions/install/action.yml b/.github/common-actions/install/action.yml new file mode 100644 index 000000000..dced5a264 --- /dev/null +++ b/.github/common-actions/install/action.yml @@ -0,0 +1,27 @@ +name: "Install" +description: "Sets up Node.js and runs install" + +runs: + using: composite + steps: + - name: Install dependencies + uses: pnpm/action-setup@v2.2.4 + with: + version: 8 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version-file: ".nvmrc" + registry-url: "https://registry.npmjs.org" + cache: "pnpm" + + - name: Setup Git User + shell: bash + run: | + git config --global user.email "jrgarciadev@gmail.com" + git config --global user.name "Junior Garcia" + + - name: Install dependencies + shell: bash + run: pnpm install diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml deleted file mode 100644 index bfb4e7926..000000000 --- a/.github/workflows/main.yaml +++ /dev/null @@ -1,128 +0,0 @@ -name: CI/CD - -on: - push: - branches: [main] - paths-ignore: ['**/README.md'] - pull_request: - branches: [main] - types: [opened, synchronize] - paths-ignore: ['**/README.md'] - -jobs: - avoid_reduncy: - runs-on: ubuntu-20.04 - if: ${{ github.event_name == 'push' }} - steps: - - name: Cancel Previous Redundant Builds - uses: styfle/cancel-workflow-action@0.9.1 - with: - access_token: ${{ github.token }} - - lint: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - uses: actions/setup-node@v3 - with: - cache: 'yarn' - node-version: '16' - - name: Install dependencies - run: yarn install --frozen-lockfile - - name: Lint - run: yarn lint - - build: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - uses: actions/setup-node@v3 - with: - cache: 'yarn' - node-version: '16' - - name: Install dependencies - run: yarn install --frozen-lockfile - - uses: actions/cache@v3 - with: - path: ${{ github.workspace }}/.next/cache - # Generate a new cache whenever packages or source files change. - key: ${{ runner.os }}-nextjs-${{ hashFiles('**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} - # If source files changed but packages didn't, rebuild from a prior cache. - restore-keys: | - ${{ runner.os }}-nextjs-${{ hashFiles('**/yarn.lock') }}- - - name: Build - run: yarn build - - tests: - needs: [lint, build] - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - uses: actions/setup-node@v3 - with: - cache: 'yarn' - node-version: '16' - - name: Install dependencies - run: yarn install --frozen-lockfile - - name: Test - run: yarn coverage:update - - uses: codecov/codecov-action@v2 - with: - directory: './packages/react' - - publish: - needs: [build, tests] - runs-on: ubuntu-20.04 - if: ${{ github.event_name == 'push' }} - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - cache: 'yarn' - node-version: '16' - - name: Install dependencies - run: yarn install --frozen-lockfile - - name: Pre puiblish NextUI package - run: yarn pre-publish:nextui - - uses: JS-DevTools/npm-publish@v1 - with: - token: ${{ secrets.NPM_TOKEN }} - package: './packages/react/lib/package.json' - - name: Show published version - if: steps.publish.outputs.type != 'none' - run: | - echo "Version changed: ${{ steps.publish.outputs.old-version }} => ${{ steps.publish.outputs.version }}" - - name: Tag new version - if: steps.publish.outputs.type != 'none' - uses: Klemensas/action-autotag@stable - with: - GITHUB_TOKEN: ${{ github.token }} - tag_prefix: "v" - package_root: "./packages/react" - - update_algolia_index: - needs: [publish] - runs-on: ubuntu-20.04 - if: ${{ github.event_name == 'push' }} - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - uses: actions/setup-node@v3 - with: - cache: 'yarn' - node-version: '16' - - name: Install dependencies - run: yarn install --frozen-lockfile - - name: Upload docs on Algolia - run: yarn build:docs-meta - env: - ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }} - ALGOLIA_ADMIN_API_KEY: ${{ secrets.ALGOLIA_ADMIN_API_KEY }} - ALGOLIA_SEARCH_API_KEY: ${{ secrets.ALGOLIA_SEARCH_API_KEY }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 488495407..3f252f9f1 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,17 +1,58 @@ -name: Tagged Release +name: Release on: push: - tags: - - "v*" + paths: + - ".changeset/**" + - "packages/**" + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} jobs: - tagged-release: - name: Tagged Release - runs-on: ubuntu-18.04 - + release: + name: Release + runs-on: ubuntu-latest steps: - - uses: "marvinpinto/action-automatic-releases@latest" + - name: Checkout branch + uses: actions/checkout@v3 + + - name: Install + uses: ./.github/common-actions/install + + - name: Build + run: pnpm build + + - name: Tests + run: pnpm test + + - name: Create Release Pull Request or Publish to NPM + id: changesets + uses: changesets/action@v1 with: - repo_token: "${{ github.token }}" - prerelease: false \ No newline at end of file + publish: pnpm release + commit: "ci(changesets): version packages" + setupGitUser: false + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create @dev release + if: steps.changesets.outputs.published != 'true' + run: | + git checkout main + pnpm version:dev + pnpm release:dev + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Update changelog + if: steps.changesets.outputs.published == 'true' + run: | + pnpm changelog:latest + pnpm changelog:format + pnpm changelog:commit