From 28dc9c759dd7214835722332004d85f4ed7efec4 Mon Sep 17 00:00:00 2001 From: jeremydolle Date: Tue, 27 Feb 2024 10:20:55 +0100 Subject: [PATCH] refactor(ci): simplify ci --- .github/workflows/boilerplate-checks.yml | 32 ++++++++++++++ .github/workflows/boilerplate-release.yml | 32 ++++++++++++++ .github/workflows/deps-setup.yml | 24 +++++++++++ .github/workflows/documentation-checks.yml | 38 +++++++++++++++++ .github/workflows/documentation-release.yml | 46 +++++++++++++++++++++ .github/workflows/mobile-lint.yml | 30 -------------- documentation/package.json | 4 +- documentation/yarn.lock | 2 +- 8 files changed, 175 insertions(+), 33 deletions(-) create mode 100644 .github/workflows/boilerplate-checks.yml create mode 100644 .github/workflows/boilerplate-release.yml create mode 100644 .github/workflows/deps-setup.yml create mode 100644 .github/workflows/documentation-checks.yml create mode 100644 .github/workflows/documentation-release.yml delete mode 100644 .github/workflows/mobile-lint.yml diff --git a/.github/workflows/boilerplate-checks.yml b/.github/workflows/boilerplate-checks.yml new file mode 100644 index 00000000..5ac11bfe --- /dev/null +++ b/.github/workflows/boilerplate-checks.yml @@ -0,0 +1,32 @@ +name: Eslint, Prettier and Jest tests + +on: + pull_request: + branches: [ main ] + paths: + - template/**/* + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + lint_type_test: + name: Run eslint, prettier, type check and jest tests + runs-on: ubuntu-latest + steps: + - uses: ./.github/workflows/deps-setup.yml + with: + working_directory: ./template + - name: Run Eslint + run: yarn lint + working-directory: ./template + - name: Run Typescript check + run: yarn type-check + working-directory: ./template + - name: Run Jest tests + run: yarn test + working-directory: ./template diff --git a/.github/workflows/boilerplate-release.yml b/.github/workflows/boilerplate-release.yml new file mode 100644 index 00000000..5d436c5c --- /dev/null +++ b/.github/workflows/boilerplate-release.yml @@ -0,0 +1,32 @@ +name: Release new boilerplate version + +on: + release: + types: [published] + +jobs: + publish: + if: "!github.event.release.prerelease" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.release.target_commitish }} + - uses: actions/setup-node@v4 + with: + node-version: '20.x' + registry-url: 'https://registry.npmjs.org' + - run: npm publish + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM }} + - run: | + git config --global user.name "ReactNativeBoilerplate Bot" + git config --global user.email "j.dolle.bot@thecodingmachine.com" + npm --no-git-tag-version version ${{ github.event.release.name }} + - name: Commit and push + run: | + git add . + git commit -am "bump(version): tag boilerplate to version ${{ github.event.release.name }}" + git push + env: + github-token: ${{ secrets.GITHUB }} diff --git a/.github/workflows/deps-setup.yml b/.github/workflows/deps-setup.yml new file mode 100644 index 00000000..3eb2c84c --- /dev/null +++ b/.github/workflows/deps-setup.yml @@ -0,0 +1,24 @@ +on: + workflow_call: + inputs: + working_directory: + description: 'The directory where the install command will be run' + required: true + type: string + +jobs: + setup: + name: Install dependencies with cache + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20.x' + cache: 'yarn' + cache-dependency-path: ${{ inputs.working_directory }}/yarn.lock + - name: Install dependencies + run: yarn install --frozen-lockfile + working-directory: ${{ inputs.working_directory }} diff --git a/.github/workflows/documentation-checks.yml b/.github/workflows/documentation-checks.yml new file mode 100644 index 00000000..6a094bed --- /dev/null +++ b/.github/workflows/documentation-checks.yml @@ -0,0 +1,38 @@ +name: Documentation linters and build + +on: + pull_request: + branches: [ main ] + paths: + - documentation/**/* + - template/theme/**/* + - template/package.json + - template/yarn.lock + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + lint_type_build: + name: Run eslint, prettier, type check and build tests + runs-on: ubuntu-latest + steps: + - uses: ./.github/workflows/deps-setup.yml + with: + working_directory: ./documentation + - name: Run Eslint + run: yarn lint + working-directory: ./documentation + - name: Run Typescript check + run: yarn type-check + working-directory: ./documentation + - name: Remove previous build + run: rm -rf .docusaurus/ + working-directory: ./documentation + - name: Build documentation + run: yarn build + working-directory: ./documentation diff --git a/.github/workflows/documentation-release.yml b/.github/workflows/documentation-release.yml new file mode 100644 index 00000000..4ad0019c --- /dev/null +++ b/.github/workflows/documentation-release.yml @@ -0,0 +1,46 @@ +name: Deploy Documentation to GitHub Pages + +on: + push: + branches: [ main ] + paths: + - documentation/**/* + - template/theme/**/* + - template/package.json + +jobs: + deploy_doc: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '20.x' + cache: 'yarn' + cache-dependency-path: ./documentation/yarn.lock + - name: Add key to allow access to repository + env: + SSH_AUTH_SOCK: /tmp/ssh_agent.sock + run: | + mkdir -p ~/.ssh + ssh-keyscan github.com >> ~/.ssh/known_hosts + echo "${{ secrets.GH_PAGES_DEPLOY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + cat <> ~/.ssh/config + Host github.com + HostName github.com + IdentityFile ~/.ssh/id_rsa + EOT + - name: Release to GitHub Pages + env: + USE_SSH: true + GIT_USER: git + DEPLOYMENT_BRANCH: gh-pages + run: | + git config --global user.email "actions@gihub.com" + git config --global user.name "gh-actions" + cd documentation + yarn install --frozen-lockfile + rm -rf .docusaurus/ + yarn build + yarn deploy diff --git a/.github/workflows/mobile-lint.yml b/.github/workflows/mobile-lint.yml deleted file mode 100644 index bdbea84d..00000000 --- a/.github/workflows/mobile-lint.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Eslint, Prettier and Jest tests - -on: - pull_request: - branches: [ main ] - paths: - - template/**/* - -jobs: - lint: - name: Run eslint and prettier - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'yarn' - cache-dependency-path: template/yarn.lock - - name: Install dependencies - run: cd template && yarn install --frozen-lockfile - - name: Run lint - run: yarn lint - - name: Run type check - run: yarn type-check - - name: Run tests - run: yarn test - shell: bash diff --git a/documentation/package.json b/documentation/package.json index c39bfed6..5eabdad8 100644 --- a/documentation/package.json +++ b/documentation/package.json @@ -13,7 +13,7 @@ "lint": "eslint . --ext .js,.ts,.jsx,.tsx", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", - "typecheck": "tsc" + "type-check": "tsc" }, "dependencies": { "@docusaurus/core": "3.1.1", @@ -40,7 +40,7 @@ "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.28.0", "eslint-plugin-react-hooks": "^4.3.0", - "postcss": "^8.4.21", + "postcss": "^8.4.35", "tailwindcss": "^3.2.7", "typescript": "^5.3.3" }, diff --git a/documentation/yarn.lock b/documentation/yarn.lock index 20a6c1be..381141b3 100644 --- a/documentation/yarn.lock +++ b/documentation/yarn.lock @@ -8848,7 +8848,7 @@ postcss@^8.0.9, postcss@^8.4.17, postcss@^8.4.21: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.26, postcss@^8.4.33: +postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4.35: version "8.4.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==