Skip to content

✅ Tests and check for updates #24

✅ Tests and check for updates

✅ Tests and check for updates #24

Workflow file for this run

###############################################################################
# RELEASE
###############################################################################
name: ✅ Tests and check for updates
on:
pull_request:
branches:
- main
workflow_dispatch:
concurrency: ${{ github.workflow }}-${{ github.ref }}
env:
GITHUB_TOKEN: ${{ github.token }}
NPM_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }}
###############################################################################
# JOBS
###############################################################################
jobs:
checks:
runs-on: ubuntu-latest
steps:
#########################################################################
# INIT
#########################################################################
- name: ⬇️🛑 Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.12.1
- name: ⬇️🛎 Checkout
uses: actions/checkout@v4
- name: ⬇️🥡 Install pnpm
uses: pnpm/action-setup@v4
- name: ⬇️🟢 Setup node
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: 🐙😺 Check GitHub API Rate Limit
id: rate_limit
run: |
response=$(gh api rate_limit)
limit=$(echo $response | jq -r '.resources.core.limit')
remaining=$(echo $response | jq -r '.resources.core.remaining')
echo "GitHub API Rate Limit: $remaining/$limit"
if [ "$remaining" -lt 10 ]; then
exit 1
fi
env:
GH_TOKEN: ${{ env.GITHUB_TOKEN }}
- name: ⬇️📦 Install dependencies
run: pnpm install --no-frozen-lockfile
- name: ⬇️🌐 Install Playwright Browsers
run: npx playwright install --with-deps
#########################################################################
# BUILD
#########################################################################
- name: 🏗 Build packages
run: pnpm build
#########################################################################
# TEST
#########################################################################
- name: ✅ Run [e2e & unit] tests
run: pnpm test
#########################################################################
# EXIT IF IS PULL REQUEST
#########################################################################
- name: 🚪 Exit here if is pull request
if: github.event_name == 'pull_request'
run: |
echo "Pull request detected, exiting..."
exit 0
env:
GITHUB_TOKEN: ${{env.GITHUB_TOKEN }}
#########################################################################
#########################################################################
# UPDATE VERSIONS
#########################################################################
#########################################################################
- name: 📣 Create Release Pull Request or Publish to npm
id: changesets
uses: changesets/action@v1
with:
title: "chore(release): version packages 🦋"
publish: pnpm exec changeset publish
version: pnpm exec changeset version
commit: "chore(release): version packages 🦋 [skip ci]"
createGithubReleases: false
env:
GITHUB_TOKEN: ${{ env.GITHUB_TOKEN }}
NPM_TOKEN: ${{ env.NPM_TOKEN }}
- name: Get updated versions if exists
id: updated
run: |
docs_version=$(echo '${{ steps.changesets.outputs.publishedPackages }}' | jq -r '.[] | select(.name == "@backan/docs") | .version')
core_version=$(echo '${{ steps.changesets.outputs.publishedPackages }}' | jq -r 'map(select(.name == "@backan/core" or .name == "@backan/builder" or .name == "@backan/server")) | .[0].version // empty' )
core_version_major=${core_version%%.*}
echo Set changesets outputs
echo '${{ steps.changesets.outputs }}'
echo Set updated versions
echo "CORE=$core_version CORE_MAJOR=$core_version_major DOCS=$docs_version"
echo "core_version=$core_version" >> $GITHUB_OUTPUT
echo "docs_version=$docs_version" >> $GITHUB_OUTPUT
echo "core_version_major=$core_version_major" >> $GITHUB_OUTPUT
- name: Add core version TAG to Github
if: steps.updated.outputs.core_version != ''
uses: richardsimko/update-tag@v1
with:
tag_name: ${{steps.updated.outputs.core_version}}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: ℹ️➡️ Check for changes in package.json
run: |
git fetch origin main
git diff --name-only HEAD origin/main | grep 'package.json' || echo "No changes in package.json"
continue-on-error: true
id: check_package_json
#########################################################################
# CALL TO WORKFLOWS
#########################################################################
- name: ℹ️🐙😺➡️ Update repo info
if: steps.check_package_json.outputs.stdout != 'No changes in package.json'
uses: benc-uk/workflow-dispatch@v1
with:
workflow: update-repo.yml
continue-on-error: true
- name: 📚🐙😺➡️ Call to workflow for deploy Documentation
if: steps.updated.outputs.docs_version != ''
uses: benc-uk/workflow-dispatch@v1
with:
workflow: release-docs.yml
inputs: '{ "version": "${{ steps.updated.outputs.docs_version }}"}'
continue-on-error: true
# - name: 💾🐙😺➡️ Call to workflow for create lib releases
# if: steps.updated.outputs.core_version != ''
# uses: benc-uk/workflow-dispatch@v1
# with:
# workflow: release-lib.yml
# inputs: '{ "version": "${{ steps.updated.outputs.core_version }}"}'
# continue-on-error: true
###############################################################################