(feat) Add build, e2e, pre-release and release jobs (#2) #8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Mekom Solutions CI | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
release: | |
types: | |
- created | |
env: | |
ESM_NAME: "@mekomsolutions/esm-patient-medical-supply-orders-app" | |
JS_NAME: "openmrs-esm-patient-medical-supply-orders-app.js" | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
env: | |
TURBO_API: 'http://127.0.0.1:9080' | |
TURBO_TOKEN: ${{ secrets.TURBO_SERVER_TOKEN }} | |
TURBO_TEAM: ${{ github.repository_owner }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
registry-url: "https://registry.npmjs.org" | |
- name: Cache dependencies | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} | |
- name: Install dependencies | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: yarn install --immutable | |
- name: Setup local cache server for Turborepo | |
uses: felixmosh/turborepo-gh-artifacts@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
server-token: ${{ secrets.TURBO_SERVER_TOKEN }} | |
- name: Run verification | |
run: yarn verify | |
- name: Build package | |
run: yarn turbo build --color --concurrency=5 | |
- name: Upload Build Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: dist-build | |
path: dist | |
if-no-files-found: warn | |
compression-level: 6 | |
overwrite: true | |
pre_release: | |
runs-on: ubuntu-latest | |
needs: build | |
if: ${{ github.event_name == 'push' }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download Build Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: dist-build | |
path: dist | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
registry-url: "https://registry.npmjs.org" | |
- name: Cache dependencies | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} | |
- name: Install dependencies | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: yarn install --immutable | |
- name: Setup local cache server for Turborepo | |
uses: felixmosh/turborepo-gh-artifacts@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
server-token: ${{ secrets.TURBO_SERVER_TOKEN }} | |
- name: Version bump | |
run: yarn version "$(node -e "console.log(require('semver').inc(require('./package.json').version, 'patch'))")-pre.${{ github.run_number }}" | |
- name: Build package | |
run: yarn turbo build --color --concurrency=5 | |
- name: Configure Git | |
run: | | |
git config user.email "[email protected]" | |
git config user.name "Mekom Solutions CI" | |
- name: Commit version changes | |
run: | | |
git add . | |
git commit -m "Prerelease version" --no-verify | |
- name: Publish pre-release | |
run: | | |
yarn config set npmAuthToken "${NODE_AUTH_TOKEN}" | |
yarn npm publish --access public --tag next | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} | |
- name: Upload Pre-release Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: dist-prerelease | |
path: dist | |
if-no-files-found: warn | |
compression-level: 6 | |
overwrite: true | |
release: | |
runs-on: ubuntu-latest | |
needs: build | |
if: ${{ github.event_name == 'release' }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download Build Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: dist-build | |
path: dist | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
registry-url: "https://registry.npmjs.org" | |
- name: Cache dependencies | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} | |
- name: Install dependencies | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: yarn install --immutable | |
- name: Setup local cache server for Turborepo | |
uses: felixmosh/turborepo-gh-artifacts@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
server-token: ${{ secrets.TURBO_SERVER_TOKEN }} | |
- name: Publish release | |
run: | | |
yarn config set npmAuthToken "${NODE_AUTH_TOKEN}" | |
yarn npm publish --access public | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} |