From fd2d2e90d41c1f1bc3ecfa3558f02b092688ecf1 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Fri, 27 Dec 2024 08:34:17 +0100 Subject: [PATCH] workflow refactor WIP --- common/processWorkflows.js | 42 +++++ workflow-templates/build-app-beta.yaml | 133 ++++++++++++++++ workflow-templates/build-app-pro-beta.yaml | 160 +++++++++++++++++++ workflow-templates/build-app-pro.yaml | 153 ++++++++++++++++++ workflow-templates/build-app.yaml | 175 +++++++++++++++++++++ workflow-templates/build-aws-pro-beta.yaml | 148 +++++++++++++++++ workflow-templates/build-docker-pro.yaml | 110 +++++++++++++ workflow-templates/build-docker.tpl.yaml | 132 ++++++++++++++++ workflow-templates/build-docker.yaml | 106 +++++++++++++ workflow-templates/build-npm-pro.yaml | 119 ++++++++++++++ workflow-templates/build-npm.yaml | 156 ++++++++++++++++++ workflow-templates/includes.tpl.yaml | 22 +++ workflow-templates/run-tests.yaml | 104 ++++++++++++ 13 files changed, 1560 insertions(+) create mode 100644 common/processWorkflows.js create mode 100644 workflow-templates/build-app-beta.yaml create mode 100644 workflow-templates/build-app-pro-beta.yaml create mode 100644 workflow-templates/build-app-pro.yaml create mode 100644 workflow-templates/build-app.yaml create mode 100644 workflow-templates/build-aws-pro-beta.yaml create mode 100644 workflow-templates/build-docker-pro.yaml create mode 100644 workflow-templates/build-docker.tpl.yaml create mode 100644 workflow-templates/build-docker.yaml create mode 100644 workflow-templates/build-npm-pro.yaml create mode 100644 workflow-templates/build-npm.yaml create mode 100644 workflow-templates/includes.tpl.yaml create mode 100644 workflow-templates/run-tests.yaml diff --git a/common/processWorkflows.js b/common/processWorkflows.js new file mode 100644 index 000000000..8fc2c7350 --- /dev/null +++ b/common/processWorkflows.js @@ -0,0 +1,42 @@ +const fs = require('fs'); +const path = require('path'); +const yaml = require('js-yaml'); + +const indir = path.resolve(path.join(__dirname, '..', 'workflow-templates')); +const outdir = path.resolve(path.join(__dirname, '..', 'workflow-templates')); + +const includes = {}; + +for (const file of fs.readdirSync(indir)) { + const text = fs.readFileSync(path.join(indir, file), { encoding: 'utf-8' }); + const json = yaml.load(text); + if (json._module) { + for (const key in json) { + if (key === '_module') { + continue; + } + includes[key] = json[key]; + } + } +} + +for (const file of fs.readdirSync(indir)) { + const text = fs.readFileSync(path.join(indir, file), { encoding: 'utf-8' }); + const json = yaml.load(text); + + if (json._module) { + continue; + } + + if (json._templates) { + for (const template of json._templates) { + const outfile = template.file; + const text = template.text; + const json = template.json; + const out = path.join(outdir, name); + fs.writeFileSync(out, text); + } + + + } +} diff --git a/workflow-templates/build-app-beta.yaml b/workflow-templates/build-app-beta.yaml new file mode 100644 index 000000000..7b7fd078c --- /dev/null +++ b/workflow-templates/build-app-beta.yaml @@ -0,0 +1,133 @@ +name: Electron app BETA + +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+' + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: [macos-14, windows-2022, ubuntu-22.04] + # os: [macOS-10.15] + + steps: + - name: Install python 3.11 (MacOS) + if: matrix.os == 'macos-14' + run: | + brew install python@3.11 + echo "PYTHON=/opt/homebrew/bin/python3.11" >> $GITHUB_ENV + - name: Context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - uses: actions/checkout@v2 + with: + fetch-depth: 1 + - name: Use Node.js 22.x + uses: actions/setup-node@v1 + with: + node-version: 22.x + - name: adjustPackageJson + run: | + node adjustPackageJson --community + - name: setUpdaterChannel beta + run: | + node setUpdaterChannel beta + - name: yarn set timeout + run: | + yarn config set network-timeout 100000 + - name: yarn install + run: | + yarn install + - name: setCurrentVersion + run: | + yarn setCurrentVersion + - name: printSecrets + run: | + yarn printSecrets + env: + GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + - name: fillPackagedPlugins + run: | + yarn fillPackagedPlugins + - name: Install Snapcraft + if: matrix.os == 'ubuntu-22.04' + uses: samuelmeuli/action-snapcraft@v1 + - name: Publish + run: | + yarn run build:app + env: + GH_TOKEN: ${{ secrets.GH_TOKEN }} # token for electron publish + + WIN_CSC_LINK: ${{ secrets.WINCERT_2025 }} + WIN_CSC_KEY_PASSWORD: ${{ secrets.WINCERT_2025_PASSWORD }} + # WIN_CSC_LINK: ${{ secrets.WINCERT_CERTIFICATE }} + # WIN_CSC_KEY_PASSWORD: ${{ secrets.WINCERT_PASSWORD }} + + CSC_LINK: ${{ secrets.APPLECERT_CERTIFICATE }} + CSC_KEY_PASSWORD: ${{ secrets.APPLECERT_PASSWORD }} + + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + + SNAPCRAFT_STORE_CREDENTIALS: ${{secrets.SNAPCRAFT_LOGIN}} + APPLE_APP_SPECIFIC_PASSWORD: ${{secrets.APPLE_APP_SPECIFIC_PASSWORD}} + + # - name: publishSnap + # if: matrix.os == 'ubuntu-22.04' + # run: | + # snapcraft upload --release=beta app/dist/*.snap + # env: + # SNAPCRAFT_STORE_CREDENTIALS: ${{secrets.SNAPCRAFT_LOGIN}} + + - name: Copy artifacts + run: | + mkdir artifacts + + cp app/dist/*.deb artifacts/dbgate-beta.deb || true + cp app/dist/*x86*.AppImage artifacts/dbgate-beta.AppImage || true + cp app/dist/*arm64*.AppImage artifacts/dbgate-beta-arm64.AppImage || true + cp app/dist/*armv7l*.AppImage artifacts/dbgate-beta-armv7l.AppImage || true + cp app/dist/*win*.exe artifacts/dbgate-beta.exe || true + cp app/dist/*win_x64.zip artifacts/dbgate-windows-beta.zip || true + cp app/dist/*win_arm64.zip artifacts/dbgate-windows-beta-arm64.zip || true + cp app/dist/*-mac_x64.dmg artifacts/dbgate-beta.dmg || true + cp app/dist/*-mac_arm64.dmg artifacts/dbgate-beta-arm64.dmg || true + + mv app/dist/*.exe artifacts/ || true + mv app/dist/*.zip artifacts/ || true + mv app/dist/*.tar.gz artifacts/ || true + mv app/dist/*.AppImage artifacts/ || true + mv app/dist/*.deb artifacts/ || true + mv app/dist/*.snap artifacts/ || true + mv app/dist/*.dmg artifacts/ || true + mv app/dist/*.blockmap artifacts/ || true + + mv app/dist/*.yml artifacts/ || true + rm artifacts/builder-debug.yml + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.os }} + path: artifacts + + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: 'artifacts/**' + prerelease: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Print content of notarization-error.log + if: failure() && matrix.os == 'macos-14' + run: | + find . -type f -name "notarization-error.log" -exec echo "=== Start of {} ===" \; -exec cat {} \; -exec echo "=== End of {} ===" \; diff --git a/workflow-templates/build-app-pro-beta.yaml b/workflow-templates/build-app-pro-beta.yaml new file mode 100644 index 000000000..6c88962e0 --- /dev/null +++ b/workflow-templates/build-app-pro-beta.yaml @@ -0,0 +1,160 @@ +name: Electron app PREMIUM BETA + +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+-premium-beta.[0-9]+' + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + # os: [windows-2022] + # os: [ubuntu-22.04] + # os: [windows-2022, ubuntu-22.04] + os: [macos-14, windows-2022, ubuntu-22.04] + # os: [macOS-10.15] + + steps: + - name: Install python 3.11 (MacOS) + if: matrix.os == 'macos-14' + run: | + brew install python@3.11 + echo "PYTHON=/opt/homebrew/bin/python3.11" >> $GITHUB_ENV + - name: Context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - uses: actions/checkout@v2 + with: + fetch-depth: 1 + - name: Use Node.js 22.x + uses: actions/setup-node@v1 + with: + node-version: 22.x + + - name: Checkout dbgate/dbgate-pro + uses: actions/checkout@v2 + with: + repository: dbgate/dbgate-pro + token: ${{ secrets.GH_TOKEN }} + path: dbgate-pro + + - name: Merge dbgate/dbgate-pro + run: | + mkdir ../dbgate-pro + mv dbgate-pro/* ../dbgate-pro/ + cd .. + mkdir dbgate-merged + cd dbgate-pro + cd sync + yarn + node sync.js --nowatch + cd .. + + - name: adjustPackageJson + run: | + cd .. + cd dbgate-merged + node adjustPackageJson --premium + - name: setUpdaterChannel premium-beta + run: | + cd .. + cd dbgate-merged + node setUpdaterChannel premium-beta + - name: yarn set timeout + run: | + cd .. + cd dbgate-merged + yarn config set network-timeout 100000 + - name: yarn install + run: | + cd .. + cd dbgate-merged + yarn install + - name: setCurrentVersion + run: | + cd .. + cd dbgate-merged + yarn setCurrentVersion + - name: printSecrets + run: | + cd .. + cd dbgate-merged + yarn printSecrets + env: + GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + - name: fillPackagedPlugins + run: | + cd .. + cd dbgate-merged + yarn fillPackagedPlugins + - name: Publish + run: | + cd .. + cd dbgate-merged + yarn run build:app + env: + GH_TOKEN: ${{ secrets.GH_TOKEN }} # token for electron publish + + WIN_CSC_LINK: ${{ secrets.WINCERT_2025 }} + WIN_CSC_KEY_PASSWORD: ${{ secrets.WINCERT_2025_PASSWORD }} + # WIN_CSC_LINK: ${{ secrets.WINCERT_CERTIFICATE }} + # WIN_CSC_KEY_PASSWORD: ${{ secrets.WINCERT_PASSWORD }} + + CSC_LINK: ${{ secrets.APPLECERT_CERTIFICATE }} + CSC_KEY_PASSWORD: ${{ secrets.APPLECERT_PASSWORD }} + + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + + APPLE_APP_SPECIFIC_PASSWORD: ${{secrets.APPLE_APP_SPECIFIC_PASSWORD}} + + # DEBUG: electron-builder, electron-notarize, notarytool + + + - name: Copy artifacts + run: | + mkdir artifacts + + cp ../dbgate-merged/app/dist/*x86*.AppImage artifacts/dbgate-premium-beta.AppImage || true + cp ../dbgate-merged/app/dist/*win*.exe artifacts/dbgate-premium-beta.exe || true + cp ../dbgate-merged/app/dist/*-mac_x64.dmg artifacts/dbgate-premium-beta.dmg || true + + mv ../dbgate-merged/app/dist/*.exe artifacts/ || true + mv ../dbgate-merged/app/dist/*.zip artifacts/ || true + mv ../dbgate-merged/app/dist/*.tar.gz artifacts/ || true + mv ../dbgate-merged/app/dist/*.AppImage artifacts/ || true + mv ../dbgate-merged/app/dist/*.deb artifacts/ || true + mv ../dbgate-merged/app/dist/*.snap artifacts/ || true + mv ../dbgate-merged/app/dist/*.dmg artifacts/ || true + mv ../dbgate-merged/app/dist/*.blockmap artifacts/ || true + + mv ../dbgate-merged/app/dist/*.yml artifacts/ || true + rm artifacts/builder-debug.yml + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.os }} + path: artifacts + + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: 'artifacts/**' + prerelease: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Print content of notarization-error.log + if: failure() && matrix.os == 'macos-14' + run: | + cd .. + cd dbgate-merged + find . -type f -name "notarization-error.log" -exec echo "=== Start of {} ===" \; -exec cat {} \; -exec echo "=== End of {} ===" \; diff --git a/workflow-templates/build-app-pro.yaml b/workflow-templates/build-app-pro.yaml new file mode 100644 index 000000000..50f1f0feb --- /dev/null +++ b/workflow-templates/build-app-pro.yaml @@ -0,0 +1,153 @@ +name: Electron app PREMIUM + +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + # - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 + + # branches: + # - production + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + # os: [ubuntu-22.04, windows-2016] + os: [macos-14, windows-2022, ubuntu-22.04] + + steps: + - name: Install python 3.11 (MacOS) + if: matrix.os == 'macos-14' + run: | + brew install python@3.11 + echo "PYTHON=/opt/homebrew/bin/python3.11" >> $GITHUB_ENV + - name: Context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - uses: actions/checkout@v2 + with: + fetch-depth: 1 + - name: Use Node.js 22.x + uses: actions/setup-node@v1 + with: + node-version: 22.x + + - name: Checkout dbgate/dbgate-pro + uses: actions/checkout@v2 + with: + repository: dbgate/dbgate-pro + token: ${{ secrets.GH_TOKEN }} + path: dbgate-pro + + - name: Merge dbgate/dbgate-pro + run: | + mkdir ../dbgate-pro + mv dbgate-pro/* ../dbgate-pro/ + cd .. + mkdir dbgate-merged + cd dbgate-pro + cd sync + yarn + node sync.js --nowatch + cd .. + + - name: adjustPackageJson + run: | + cd .. + cd dbgate-merged + node adjustPackageJson --premium + - name: setUpdaterChannel premium + run: | + cd .. + cd dbgate-merged + node setUpdaterChannel premium + - name: yarn set timeout + run: | + cd .. + cd dbgate-merged + yarn config set network-timeout 100000 + - name: yarn install + run: | + cd .. + cd dbgate-merged + yarn install + - name: setCurrentVersion + run: | + cd .. + cd dbgate-merged + yarn setCurrentVersion + - name: printSecrets + run: | + cd .. + cd dbgate-merged + yarn printSecrets + env: + GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + - name: fillPackagedPlugins + run: | + cd .. + cd dbgate-merged + yarn fillPackagedPlugins + - name: Publish + run: | + cd .. + cd dbgate-merged + yarn run build:app + env: + GH_TOKEN: ${{ secrets.GH_TOKEN }} # token for electron publish + + WIN_CSC_LINK: ${{ secrets.WINCERT_2025 }} + WIN_CSC_KEY_PASSWORD: ${{ secrets.WINCERT_2025_PASSWORD }} + # WIN_CSC_LINK: ${{ secrets.WINCERT_CERTIFICATE }} + # WIN_CSC_KEY_PASSWORD: ${{ secrets.WINCERT_PASSWORD }} + + CSC_LINK: ${{ secrets.APPLECERT_CERTIFICATE }} + CSC_KEY_PASSWORD: ${{ secrets.APPLECERT_PASSWORD }} + + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + + APPLE_APP_SPECIFIC_PASSWORD: ${{secrets.APPLE_APP_SPECIFIC_PASSWORD}} + + - name: Copy artifacts + run: | + mkdir artifacts + + cp ../dbgate-merged/app/dist/*x86*.AppImage artifacts/dbgate-premium-latest.AppImage || true + cp ../dbgate-merged/app/dist/*.exe artifacts/dbgate-premium-latest.exe || true + cp ../dbgate-merged/app/dist/*win_x64.zip artifacts/dbgate-premium-windows-latest.zip || true + cp ../dbgate-merged/app/dist/*win_arm64.zip artifacts/dbgate-premium-windows-latest-arm64.zip || true + cp ../dbgate-merged/app/dist/*-mac_universal.dmg artifacts/dbgate-premium-latest.dmg || true + cp ../dbgate-merged/app/dist/*-mac_x64.dmg artifacts/dbgate-premium-latest-x64.dmg || true + cp ../dbgate-merged/app/dist/*-mac_arm64.dmg artifacts/dbgate-premium-latest-arm64.dmg || true + + mv ../dbgate-merged/app/dist/*.exe artifacts/ || true + mv ../dbgate-merged/app/dist/*.zip artifacts/ || true + mv ../dbgate-merged/app/dist/*.tar.gz artifacts/ || true + mv ../dbgate-merged/app/dist/*.AppImage artifacts/ || true + mv ../dbgate-merged/app/dist/*.deb artifacts/ || true + mv ../dbgate-merged/app/dist/*.dmg artifacts/ || true + mv ../dbgate-merged/app/dist/*.blockmap artifacts/ || true + + mv ../dbgate-merged/app/dist/*.yml artifacts/ || true + rm artifacts/builder-debug.yml + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.os }} + path: artifacts + + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: 'artifacts/**' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/workflow-templates/build-app.yaml b/workflow-templates/build-app.yaml new file mode 100644 index 000000000..208911397 --- /dev/null +++ b/workflow-templates/build-app.yaml @@ -0,0 +1,175 @@ +name: Electron app + +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + # - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 + + # branches: + # - production + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + # os: [ubuntu-22.04, windows-2016] + os: [macos-14, windows-2022, ubuntu-22.04] + + steps: + - name: Install python 3.11 (MacOS) + if: matrix.os == 'macos-14' + run: | + brew install python@3.11 + echo "PYTHON=/opt/homebrew/bin/python3.11" >> $GITHUB_ENV + - name: Context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - uses: actions/checkout@v2 + with: + fetch-depth: 1 + - name: Use Node.js 22.x + uses: actions/setup-node@v1 + with: + node-version: 22.x + - name: adjustPackageJson + run: | + node adjustPackageJson --community + - name: yarn set timeout + run: | + yarn config set network-timeout 100000 + - name: yarn install + run: | + # yarn --version + # yarn config set network-timeout 300000 + yarn install + - name: setCurrentVersion + run: | + yarn setCurrentVersion + - name: printSecrets + run: | + yarn printSecrets + env: + GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + - name: fillPackagedPlugins + run: | + yarn fillPackagedPlugins + - name: Install Snapcraft + if: matrix.os == 'ubuntu-22.04' + uses: samuelmeuli/action-snapcraft@v1 + - name: Publish + run: | + yarn run build:app + env: + GH_TOKEN: ${{ secrets.GH_TOKEN }} # token for electron publish + + WIN_CSC_LINK: ${{ secrets.WINCERT_2025 }} + WIN_CSC_KEY_PASSWORD: ${{ secrets.WINCERT_2025_PASSWORD }} + # WIN_CSC_LINK: ${{ secrets.WINCERT_CERTIFICATE }} + # WIN_CSC_KEY_PASSWORD: ${{ secrets.WINCERT_PASSWORD }} + + CSC_LINK: ${{ secrets.APPLECERT_CERTIFICATE }} + CSC_KEY_PASSWORD: ${{ secrets.APPLECERT_PASSWORD }} + + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + + SNAPCRAFT_STORE_CREDENTIALS: ${{secrets.SNAPCRAFT_LOGIN}} + APPLE_APP_SPECIFIC_PASSWORD: ${{secrets.APPLE_APP_SPECIFIC_PASSWORD}} + + - name: generatePadFile + run: | + yarn generatePadFile + + # - name: publishSnap + # if: matrix.os == 'ubuntu-22.04' + # run: | + # snapcraft upload --release=stable app/dist/*.snap + # env: + # SNAPCRAFT_STORE_CREDENTIALS: ${{secrets.SNAPCRAFT_LOGIN}} + + - name: Copy artifacts + run: | + mkdir artifacts + + cp app/dist/*.deb artifacts/dbgate-latest.deb || true + cp app/dist/*x86*.AppImage artifacts/dbgate-latest.AppImage || true + cp app/dist/*arm64*.AppImage artifacts/dbgate-latest-arm64.AppImage || true + cp app/dist/*armv7l*.AppImage artifacts/dbgate-latest-armv7l.AppImage || true + cp app/dist/*.exe artifacts/dbgate-latest.exe || true + cp app/dist/*win_x64.zip artifacts/dbgate-windows-latest.zip || true + cp app/dist/*win_arm64.zip artifacts/dbgate-windows-latest-arm64.zip || true + cp app/dist/*-mac_universal.dmg artifacts/dbgate-latest.dmg || true + cp app/dist/*-mac_x64.dmg artifacts/dbgate-latest-x64.dmg || true + cp app/dist/*-mac_arm64.dmg artifacts/dbgate-latest-arm64.dmg || true + + mv app/dist/*.exe artifacts/ || true + mv app/dist/*.zip artifacts/ || true + mv app/dist/*.tar.gz artifacts/ || true + mv app/dist/*.AppImage artifacts/ || true + mv app/dist/*.deb artifacts/ || true + mv app/dist/*.dmg artifacts/ || true + mv app/dist/*.snap artifacts/dbgate-latest.snap || true + mv app/dist/*.blockmap artifacts/ || true + + mv app/dist/*.yml artifacts/ || true + rm artifacts/builder-debug.yml + + # - name: Copy artifacts Linux, MacOs + # if: matrix.os != 'windows-2016' + # run: | + # mkdir artifacts + + # cp app/dist/*.AppImage artifacts/ || true + # cp app/dist/*.dmg artifacts/ || true + # cp app/dist/*.deb artifacts/ || true + + # mv app/dist/*.deb artifacts/dbgate-linux.deb || true + # mv app/dist/*.AppImage artifacts/dbgate-linux.AppImage || true + # mv app/dist/*.dmg artifacts/dbgate-mac.dmg || true + + # - name: Copy artifacts Win + # if: matrix.os == 'windows-2016' + # run: | + # mkdir artifacts + + # cp app/dist/*.exe artifacts/ || true + + # mv app/dist/*.exe artifacts/dbgate-windows.exe + + # mv app/dist/latest.yml artifacts/latest.yml || true + + - name: Copy PAD file + if: matrix.os == 'windows-2022' + run: | + mv app/dist/dbgate-pad.xml artifacts/ || true + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.os }} + path: artifacts + + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: 'artifacts/**' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # - name: Create Release + # id: create_release + # uses: actions/create-release@v1 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # tag_name: ${{ github.ref }} + # release_name: Release ${{ github.ref }} + # draft: false + # prerelease: false diff --git a/workflow-templates/build-aws-pro-beta.yaml b/workflow-templates/build-aws-pro-beta.yaml new file mode 100644 index 000000000..1f68c1b3c --- /dev/null +++ b/workflow-templates/build-aws-pro-beta.yaml @@ -0,0 +1,148 @@ +name: AWS image PREMIUM + +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + # - 'v[0-9]+.[0-9]+.[0-9]+-premium-beta.[0-9]+' + - 'v[0-9]+.[0-9]+.[0-9]+-packer-beta.[0-9]+' + +jobs: + build: + + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-22.04] + + steps: + - name: Context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - uses: actions/checkout@v2 + with: + fetch-depth: 1 + + - name: Use Node.js 18.x + uses: actions/setup-node@v1 + with: + node-version: 18.x + + - name: Setup `packer` + uses: hashicorp/setup-packer@main + with: + version: latest + + - name: Checkout dbgate/dbgate-pro + uses: actions/checkout@v2 + with: + repository: dbgate/dbgate-pro + token: ${{ secrets.GH_TOKEN }} + path: dbgate-pro + + - name: Merge dbgate/dbgate-pro + run: | + mkdir ../dbgate-pro + mv dbgate-pro/* ../dbgate-pro/ + cd .. + mkdir dbgate-merged + cd dbgate-pro + cd sync + yarn + node sync.js --nowatch + cd .. + + - name: adjustPackageJson + run: | + cd .. + cd dbgate-merged + node adjustPackageJson --premium + + - name: yarn install + run: | + cd .. + cd dbgate-merged + yarn install + + - name: setCurrentVersion + run: | + cd .. + cd dbgate-merged + yarn setCurrentVersion + + - name: printSecrets + run: | + cd .. + cd dbgate-merged + yarn printSecrets + env: + GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + + - name: Prepare packer build + run: | + cd .. + cd dbgate-merged + yarn run prepare:packer + cd packer + zip -r cloud-build.zip build + + - name: Copy artifacts + run: | + mkdir artifacts + cp ../dbgate-merged/packer/cloud-build.zip artifacts/cloud-build.zip || true + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.os }} + path: artifacts + + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: 'artifacts/**' + prerelease: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Run `packer init` + run: | + cd ../dbgate-merged/packer + packer init ./aws-ubuntu.pkr.hcl + env: + AWS_ACCESS_KEY_ID: ${{secrets.AWS_ACCESS_KEY_ID}} + AWS_SECRET_ACCESS_KEY: ${{secrets.AWS_SECRET_ACCESS_KEY}} + AWS_DEFAULT_REGION: ${{secrets.AWS_DEFAULT_REGION}} + + - name: Run `packer build` + run: | + cd ../dbgate-merged/packer + packer build ./aws-ubuntu.pkr.hcl + env: + AWS_ACCESS_KEY_ID: ${{secrets.AWS_ACCESS_KEY_ID}} + AWS_SECRET_ACCESS_KEY: ${{secrets.AWS_SECRET_ACCESS_KEY}} + AWS_DEFAULT_REGION: ${{secrets.AWS_DEFAULT_REGION}} + + # - name: Install AWS CLI + # run: | + # curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + # unzip awscliv2.zip + # sudo ./aws/install + # sudo apt-get install jq -y + + - name: Install jq + run: | + sudo apt-get install jq -y + + - name: Delete old AMIs + run: | + cd ../dbgate-merged/packer + chmod +x delete-old-amis.sh + ./delete-old-amis.sh + env: + AWS_ACCESS_KEY_ID: ${{secrets.AWS_ACCESS_KEY_ID}} + AWS_SECRET_ACCESS_KEY: ${{secrets.AWS_SECRET_ACCESS_KEY}} + AWS_DEFAULT_REGION: ${{secrets.AWS_DEFAULT_REGION}} diff --git a/workflow-templates/build-docker-pro.yaml b/workflow-templates/build-docker-pro.yaml new file mode 100644 index 000000000..146b20246 --- /dev/null +++ b/workflow-templates/build-docker-pro.yaml @@ -0,0 +1,110 @@ +name: Docker image PREMIUM + +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + - 'v[0-9]+.[0-9]+.[0-9]+-premium-beta.[0-9]+' + +jobs: + build: + + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-22.04] + + steps: + - name: Context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - uses: actions/checkout@v2 + with: + fetch-depth: 1 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: | + dbgate/dbgate-premium + flavor: | + latest=false + tags: | + type=raw,value=beta,enable=${{ contains(github.ref_name, '-docker.') || contains(github.ref_name, '-beta.') }} + + type=match,pattern=\d+.\d+.\d+,enable=${{ !contains(github.ref_name, '-docker.') && !contains(github.ref_name, '-beta.') }} + type=raw,value=latest,enable=${{ !contains(github.ref_name, '-docker.') && !contains(github.ref_name, '-beta.') }} + + - name: Use Node.js 18.x + uses: actions/setup-node@v1 + with: + node-version: 18.x + + - name: Checkout dbgate/dbgate-pro + uses: actions/checkout@v2 + with: + repository: dbgate/dbgate-pro + token: ${{ secrets.GH_TOKEN }} + path: dbgate-pro + + - name: Merge dbgate/dbgate-pro + run: | + mkdir ../dbgate-pro + mv dbgate-pro/* ../dbgate-pro/ + cd .. + mkdir dbgate-merged + cd dbgate-pro + cd sync + yarn + node sync.js --nowatch + cd .. + + - name: adjustPackageJson + run: | + cd .. + cd dbgate-merged + node adjustPackageJson --premium + + - name: yarn install + run: | + cd .. + cd dbgate-merged + yarn install + + - name: setCurrentVersion + run: | + cd .. + cd dbgate-merged + yarn setCurrentVersion + + - name: printSecrets + run: | + cd .. + cd dbgate-merged + yarn printSecrets + env: + GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + - name: Prepare docker image + run: | + cd .. + cd dbgate-merged + yarn run prepare:docker + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and push + uses: docker/build-push-action@v3 + with: + push: true + context: ../dbgate-merged/docker + tags: ${{ steps.meta.outputs.tags }} + platforms: linux/amd64,linux/arm64 diff --git a/workflow-templates/build-docker.tpl.yaml b/workflow-templates/build-docker.tpl.yaml new file mode 100644 index 000000000..030b8c10e --- /dev/null +++ b/workflow-templates/build-docker.tpl.yaml @@ -0,0 +1,132 @@ +_templates: + _community: + file: build-docker.yaml + run: + - from: _cd_merged + to: [] + _premium: + file: build-docker-pro.yaml + run: + - from: _cd_merged + to: + - cd .. + - cd dbgate-merged + +name: + _community: Docker image Community + _premium: Docker image Premium + +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + - _community: 'v[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+' + _premium: - 'v[0-9]+.[0-9]+.[0-9]+-premium-beta.[0-9]+' + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-22.04] + + steps: + - name: Context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - uses: actions/checkout@v2 + with: + fetch-depth: 1 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: | + _community: dbgate/dbgate + _premium: dbgate/dbgate-premium + flavor: | + latest=false + tags: | + type=raw,value=beta,enable=${{ contains(github.ref_name, '-docker.') || contains(github.ref_name, '-beta.') }} + + type=match,pattern=\d+.\d+.\d+,enable=${{ !contains(github.ref_name, '-docker.') && !contains(github.ref_name, '-beta.') }} + type=raw,value=latest,enable=${{ !contains(github.ref_name, '-docker.') && !contains(github.ref_name, '-beta.') }} + + - name: Docker alpine meta + _if: _community + id: alpmeta + uses: docker/metadata-action@v4 + with: + images: | + dbgate/dbgate + flavor: | + latest=false + tags: | + type=raw,value=beta-alpine,enable=${{ contains(github.ref_name, '-docker.') || contains(github.ref_name, '-beta.') }} + + type=match,pattern=\d+.\d+.\d+,suffix=-alpine,enable=${{ !contains(github.ref_name, '-docker.') && !contains(github.ref_name, '-beta.') }} + type=raw,value=alpine,enable=${{ !contains(github.ref_name, '-docker.') && !contains(github.ref_name, '-beta.') }} + + - name: Use Node.js 18.x + uses: actions/setup-node@v1 + with: + node-version: 18.x + + - _include: + _name: checkout-dbgate-pro + _if: _premium + + - _include: + _name: merge-dbgate-pro + _if: _premium + + - name: adjustPackageJson + run: | + node adjustPackageJson --community + + - name: yarn install + run: | + # yarn --version + # yarn config set network-timeout 300000 + yarn install + + - name: setCurrentVersion + run: | + yarn setCurrentVersion + + - name: printSecrets + run: | + yarn printSecrets + env: + GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + - name: Prepare docker image + run: | + yarn run prepare:docker + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and push + uses: docker/build-push-action@v3 + with: + push: true + context: ./docker + tags: ${{ steps.meta.outputs.tags }} + platforms: linux/amd64,linux/arm64,linux/arm/v7 + + - name: Build and push alpine + uses: docker/build-push-action@v3 + with: + push: true + context: ./docker + file: ./docker/Dockerfile-alpine + tags: ${{ steps.alpmeta.outputs.tags }} + platforms: linux/amd64,linux/arm64,linux/arm/v7 diff --git a/workflow-templates/build-docker.yaml b/workflow-templates/build-docker.yaml new file mode 100644 index 000000000..85737fdd6 --- /dev/null +++ b/workflow-templates/build-docker.yaml @@ -0,0 +1,106 @@ +name: Docker image + +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + - 'v[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+' + +jobs: + build: + + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-22.04] + + steps: + - name: Context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - uses: actions/checkout@v2 + with: + fetch-depth: 1 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: | + dbgate/dbgate + flavor: | + latest=false + tags: | + type=raw,value=beta,enable=${{ contains(github.ref_name, '-docker.') || contains(github.ref_name, '-beta.') }} + + type=match,pattern=\d+.\d+.\d+,enable=${{ !contains(github.ref_name, '-docker.') && !contains(github.ref_name, '-beta.') }} + type=raw,value=latest,enable=${{ !contains(github.ref_name, '-docker.') && !contains(github.ref_name, '-beta.') }} + + - name: Docker alpine meta + id: alpmeta + uses: docker/metadata-action@v4 + with: + images: | + dbgate/dbgate + flavor: | + latest=false + tags: | + type=raw,value=beta-alpine,enable=${{ contains(github.ref_name, '-docker.') || contains(github.ref_name, '-beta.') }} + + type=match,pattern=\d+.\d+.\d+,suffix=-alpine,enable=${{ !contains(github.ref_name, '-docker.') && !contains(github.ref_name, '-beta.') }} + type=raw,value=alpine,enable=${{ !contains(github.ref_name, '-docker.') && !contains(github.ref_name, '-beta.') }} + + - name: Use Node.js 18.x + uses: actions/setup-node@v1 + with: + node-version: 18.x + + - name: adjustPackageJson + run: | + node adjustPackageJson --community + + - name: yarn install + run: | + # yarn --version + # yarn config set network-timeout 300000 + yarn install + + - name: setCurrentVersion + run: | + yarn setCurrentVersion + + - name: printSecrets + run: | + yarn printSecrets + env: + GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + - name: Prepare docker image + run: | + yarn run prepare:docker + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and push + uses: docker/build-push-action@v3 + with: + push: true + context: ./docker + tags: ${{ steps.meta.outputs.tags }} + platforms: linux/amd64,linux/arm64,linux/arm/v7 + + - name: Build and push alpine + uses: docker/build-push-action@v3 + with: + push: true + context: ./docker + file: ./docker/Dockerfile-alpine + tags: ${{ steps.alpmeta.outputs.tags }} + platforms: linux/amd64,linux/arm64,linux/arm/v7 diff --git a/workflow-templates/build-npm-pro.yaml b/workflow-templates/build-npm-pro.yaml new file mode 100644 index 000000000..154d661c2 --- /dev/null +++ b/workflow-templates/build-npm-pro.yaml @@ -0,0 +1,119 @@ +name: NPM packages PREMIUM + +# on: [push] + +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + - 'v[0-9]+.[0-9]+.[0-9]+-alpha.[0-9]+' + +# on: +# push: +# branches: +# - production + +jobs: + build: + + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-22.04] + + steps: + - name: Context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - uses: actions/checkout@v2 + with: + fetch-depth: 1 + - name: Use Node.js 18.x + uses: actions/setup-node@v1 + with: + node-version: 18.x + + - name: Checkout dbgate/dbgate-pro + uses: actions/checkout@v2 + with: + repository: dbgate/dbgate-pro + token: ${{ secrets.GH_TOKEN }} + path: dbgate-pro + + - name: Merge dbgate/dbgate-pro + run: | + mkdir ../dbgate-pro + mv dbgate-pro/* ../dbgate-pro/ + cd .. + mkdir dbgate-merged + cd dbgate-pro + cd sync + yarn + node sync.js --nowatch + cd .. + + - name: adjustNpmPackageJsonPremium + run: | + cd .. + cd dbgate-merged + node adjustNpmPackageJsonPremium + + - name: Configure NPM token + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: | + cd .. + cd dbgate-merged + npm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}" + + - name: Remove dbmodel - should be not published + run: | + cd .. + cd dbgate-merged + rm -rf packages/dbmodel + + - name: yarn install + run: | + cd .. + cd dbgate-merged + yarn install + + - name: setCurrentVersion + run: | + cd .. + cd dbgate-merged + yarn setCurrentVersion + + - name: printSecrets + run: | + cd .. + cd dbgate-merged + yarn printSecrets + env: + GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + + - name: Publish dbgate-api-premium + run: | + cd .. + cd dbgate-merged/packages/api + npm publish + + - name: Publish dbgate-web-premium + run: | + cd .. + cd dbgate-merged/packages/web + npm publish + + - name: Publish dbgate-serve-premium + run: | + cd .. + cd dbgate-merged/packages/serve + npm publish + + - name: Publish dbgate-plugin-cosmosdb + run: | + cd .. + cd dbgate-merged/plugins/dbgate-plugin-cosmosdb + npm publish diff --git a/workflow-templates/build-npm.yaml b/workflow-templates/build-npm.yaml new file mode 100644 index 000000000..44e5e1d6e --- /dev/null +++ b/workflow-templates/build-npm.yaml @@ -0,0 +1,156 @@ +name: NPM packages + +# on: [push] + +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + - 'v[0-9]+.[0-9]+.[0-9]+-alpha.[0-9]+' + +# on: +# push: +# branches: +# - production + +jobs: + build: + + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-22.04] + + steps: + - name: Context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - uses: actions/checkout@v2 + with: + fetch-depth: 1 + - name: Use Node.js 18.x + uses: actions/setup-node@v1 + with: + node-version: 18.x + + - name: Configure NPM token + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: | + npm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}" + + - name: yarn install + run: | + yarn install + + - name: setCurrentVersion + run: | + yarn setCurrentVersion + + - name: printSecrets + run: | + yarn printSecrets + env: + GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + + - name: Publish types + working-directory: packages/types + run: | + npm publish + + - name: Publish tools + working-directory: packages/tools + run: | + npm publish + + - name: Publish sqltree + working-directory: packages/sqltree + run: | + npm publish + + - name: Publish api + working-directory: packages/api + run: | + npm publish + + - name: Publish datalib + working-directory: packages/datalib + run: | + npm publish + + - name: Publish filterparser + working-directory: packages/filterparser + run: | + npm publish + + - name: Publish web + working-directory: packages/web + run: | + npm publish + + - name: Publish dbgate-serve + working-directory: packages/serve + run: | + npm publish + + - name: Publish dbmodel + working-directory: packages/dbmodel + run: | + npm publish + + - name: Publish dbgate-plugin-csv + working-directory: plugins/dbgate-plugin-csv + run: | + npm publish + + - name: Publish dbgate-plugin-xml + working-directory: plugins/dbgate-plugin-xml + run: | + npm publish + + - name: Publish dbgate-plugin-excel + working-directory: plugins/dbgate-plugin-excel + run: | + npm publish + + - name: Publish dbgate-plugin-mssql + working-directory: plugins/dbgate-plugin-mssql + run: | + npm publish + + - name: Publish dbgate-plugin-mysql + working-directory: plugins/dbgate-plugin-mysql + run: | + npm publish + + - name: Publish dbgate-plugin-mongo + working-directory: plugins/dbgate-plugin-mongo + run: | + npm publish + + - name: Publish dbgate-plugin-postgres + working-directory: plugins/dbgate-plugin-postgres + run: | + npm publish + + - name: Publish dbgate-plugin-sqlite + working-directory: plugins/dbgate-plugin-sqlite + run: | + npm publish + + - name: Publish dbgate-plugin-redis + working-directory: plugins/dbgate-plugin-redis + run: | + npm publish + + - name: Publish dbgate-plugin-oracle + working-directory: plugins/dbgate-plugin-oracle + run: | + npm publish + + - name: Publish dbgate-plugin-clickhouse + working-directory: plugins/dbgate-plugin-clickhouse + run: | + npm publish diff --git a/workflow-templates/includes.tpl.yaml b/workflow-templates/includes.tpl.yaml new file mode 100644 index 000000000..8261f2dab --- /dev/null +++ b/workflow-templates/includes.tpl.yaml @@ -0,0 +1,22 @@ +_module: true + +checkout-dbgate-pro: + - name: Checkout dbgate/dbgate-pro + uses: actions/checkout@v2 + with: + repository: dbgate/dbgate-pro + token: ${{ secrets.GH_TOKEN }} + path: dbgate-pro + +merge-dbgate-pro: + - name: Merge dbgate/dbgate-pro + run: | + mkdir ../dbgate-pro + mv dbgate-pro/* ../dbgate-pro/ + cd .. + mkdir dbgate-merged + cd dbgate-pro + cd sync + yarn + node sync.js --nowatch + cd .. diff --git a/workflow-templates/run-tests.yaml b/workflow-templates/run-tests.yaml new file mode 100644 index 000000000..c813d251e --- /dev/null +++ b/workflow-templates/run-tests.yaml @@ -0,0 +1,104 @@ +name: Run tests +on: + push: + branches: + - master + - develop + - 'feature/**' + +jobs: + test-runner: + runs-on: ubuntu-latest + container: node:18 + + steps: + - name: Install dependencies for cypress + run: | + apt-get update + apt-get install -y xvfb libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 + - uses: actions/checkout@v2 + with: + fetch-depth: 1 + - name: yarn install + run: | + yarn install + - name: Build packer dist for cypress + run: | + yarn prepare:packer + - name: yarn install cypress + run: | + cd e2e-tests + yarn install + - name: Run Cypress tests + run: | + cd e2e-tests + yarn test:ci + - name: Integration tests + run: | + cd integration-tests + yarn test:ci +# yarn wait:ci + - name: Filter parser tests + if: always() + run: | + cd packages/filterparser + yarn test:ci + - name: Datalib (perspective) tests + if: always() + run: | + cd packages/datalib + yarn test:ci + - uses: tanmen/jest-reporter@v1 + if: always() + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + result-file: integration-tests/result.json + action-name: Integration tests + - uses: tanmen/jest-reporter@v1 + if: always() + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + result-file: packages/filterparser/result.json + action-name: Filter parser test results + - uses: tanmen/jest-reporter@v1 + if: always() + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + result-file: packages/datalib/result.json + action-name: Datalib (perspectives) test results + + services: + postgres: + image: postgres + env: + POSTGRES_PASSWORD: Pwd2020Db + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + mysql: + image: mysql:8.0.18 + env: + MYSQL_ROOT_PASSWORD: Pwd2020Db + + mssql: + image: mcr.microsoft.com/mssql/server + env: + ACCEPT_EULA: Y + SA_PASSWORD: Pwd2020Db + MSSQL_PID: Express + + clickhouse: + image: bitnami/clickhouse:24.8.4 + env: + CLICKHOUSE_ADMIN_PASSWORD: Pwd2020Db + + oracle: + image: gvenzl/oracle-xe:21-slim + env: + ORACLE_PASSWORD: Pwd2020Db + + # cockroachdb: + # image: cockroachdb/cockroach