Skip to content

chore: Increase test coverage #445

chore: Increase test coverage

chore: Increase test coverage #445

Workflow file for this run

name: general
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test-compile:
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Setup Pnpm
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
cache: pnpm
node-version-file: package.json
- name: Install Dependencies
run: pnpm install:ci
- name: Build Packages
run: pnpm build
- name: Compile Binaries
run: pnpm compile
- name: Upload Binaries
uses: actions/upload-artifact@v4
with:
name: binaries
path: terminal/compile/binaries/*.zip
test-linux:
needs: [test-compile]
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Setup Pnpm
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
cache: pnpm
node-version-file: package.json
- name: Install Dependencies
run: pnpm install:ci
- name: Build Packages
run: pnpm build
- name: Test Packages
run: pnpm test
env:
DPKIT_MYSQL_URL: mysql://test:test@localhost:3306/test
DPKIT_POSTGRESQL_URL: postgresql://test:test@localhost:5432/test
- name: Upload Coverage
uses: codecov/codecov-action@v5
with:
slug: datisthq/dpkit
token: ${{ secrets.CODECOV_TOKEN }}
- name: Download Binaries
uses: actions/download-artifact@v5
with:
name: binaries
path: terminal/compile/binaries
- name: Test Binaries
working-directory: terminal/compile/binaries
run: unzip -j *linux-x64.zip && ./dpkit --version
services:
postgres:
image: postgres:16
env:
POSTGRES_PASSWORD: test
POSTGRES_USER: test
POSTGRES_DB: test
ports:
- 5432:5432
mysql:
image: mysql:8
env:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: test
ports:
- 3306:3306
test-macos:
needs: [test-compile]
runs-on: macos-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Setup Pnpm
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
cache: pnpm
node-version-file: package.json
- name: Install Dependencies
run: pnpm install:ci
- name: Build Packages
run: pnpm build
- name: Test Packages
run: pnpm test
- name: Download Binaries
uses: actions/download-artifact@v5
with:
name: binaries
path: terminal/compile/binaries
- name: Test Binaries
working-directory: terminal/compile/binaries
run: unzip -j *macos-arm64.zip && ./dpkit --version
test-windows:
needs: [test-compile]
runs-on: windows-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Setup Pnpm
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
cache: pnpm
node-version-file: package.json
- name: Install Dependencies
run: pnpm install:ci
- name: Build Packages
run: pnpm build
- name: Test Packages
run: pnpm test:win
- name: Download Binaries
uses: actions/download-artifact@v5
with:
name: binaries
path: terminal/compile/binaries
- name: Test Binaries
shell: bash
working-directory: terminal/compile/binaries
run: unzip -j *windows-x64.zip && ./dpkit.exe --version
# We have to split the release step because for some reason
# using semantic-release before compilation inflates the binary sizes
release-draft:
needs: [test-linux, test-macos, test-windows]
if: github.event_name == 'push'
runs-on: ubuntu-latest
permissions:
contents: write
issues: write
pull-requests: write
outputs:
created: ${{ steps.draft.outputs.new_release_published }}
version: ${{ steps.draft.outputs.new_release_version }}
steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Setup Pnpm
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
cache: pnpm
node-version-file: package.json
- name: Install Dependencies
run: pnpm install:ci
- name: Draft Release
id: draft
uses: cycjimmy/semantic-release-action@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
release-publish:
needs: [release-draft]
if: needs.release-draft.outputs.created == 'true'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Setup Pnpm
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
cache: pnpm
node-version-file: package.json
- name: Install Dependencies
run: pnpm install:ci
- name: Set Version
run: pnpm version:ci ${{ needs.release-draft.outputs.version }}
- name: Build Packages
run: pnpm build
- name: Compile Packages
run: pnpm compile
- name: Login Publisher
run: pnpm login:ci
- name: Publish Packages
run: pnpm publish:ci
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish Release
uses: softprops/action-gh-release@v2
with:
draft: false
files: terminal/compile/binaries/*.zip
tag_name: v${{ needs.release-draft.outputs.version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}