diff --git a/.github/workflows/build-app-beta.yaml b/.github/workflows/build-app-beta.yaml index 7b7fd078c..9d10bdeda 100644 --- a/.github/workflows/build-app-beta.yaml +++ b/.github/workflows/build-app-beta.yaml @@ -1,20 +1,21 @@ +# -------------------------------------------------------------------------------------------- +# This file is generated. Do not edit manually +# -------------------------------------------------------------------------------------------- name: Electron app BETA - -on: +'on': push: tags: - 'v[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+' - jobs: build: - runs-on: ${{ matrix.os }} - + runs-on: '${{ matrix.os }}' strategy: fail-fast: false matrix: - os: [macos-14, windows-2022, ubuntu-22.04] - # os: [macOS-10.15] - + os: + - macos-14 + - windows-2022 + - ubuntu-22.04 steps: - name: Install python 3.11 (MacOS) if: matrix.os == 'macos-14' @@ -23,7 +24,7 @@ jobs: echo "PYTHON=/opt/homebrew/bin/python3.11" >> $GITHUB_ENV - name: Context env: - GITHUB_CONTEXT: ${{ toJson(github) }} + GITHUB_CONTEXT: '${{ toJson(github) }}' run: echo "$GITHUB_CONTEXT" - uses: actions/checkout@v2 with: @@ -34,58 +35,52 @@ jobs: 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 + + yarn printSecrets env: - GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + 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}} - + GH_TOKEN: '${{ secrets.GH_TOKEN }}' + WIN_CSC_LINK: '${{ secrets.WINCERT_2025 }}' + WIN_CSC_KEY_PASSWORD: '${{ secrets.WINCERT_2025_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: Copy artifacts run: | mkdir artifacts @@ -97,8 +92,10 @@ jobs: 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_universal.dmg artifacts/dbgate-beta.dmg || true + cp app/dist/*-mac_x64.dmg artifacts/dbgate-beta-x64.dmg || true cp app/dist/*-mac_arm64.dmg artifacts/dbgate-beta-arm64.dmg || true + mv app/dist/*.snap artifacts/dbgate-beta.snap || true mv app/dist/*.exe artifacts/ || true mv app/dist/*.zip artifacts/ || true @@ -111,23 +108,21 @@ jobs: mv app/dist/*.yml artifacts/ || true rm artifacts/builder-debug.yml - - name: Upload artifacts uses: actions/upload-artifact@v4 with: - name: ${{ matrix.os }} + name: '${{ matrix.os }}' path: artifacts - - name: Release uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') + if: 'startsWith(github.ref, ''refs/tags/'')' with: - files: 'artifacts/**' + files: artifacts/** prerelease: true env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - + 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/.github/workflows/build-app-pro-beta.yaml b/.github/workflows/build-app-pro-beta.yaml index 6c88962e0..5285c9be9 100644 --- a/.github/workflows/build-app-pro-beta.yaml +++ b/.github/workflows/build-app-pro-beta.yaml @@ -1,23 +1,21 @@ +# -------------------------------------------------------------------------------------------- +# This file is generated. Do not edit manually +# -------------------------------------------------------------------------------------------- name: Electron app PREMIUM BETA - -on: +'on': push: tags: - 'v[0-9]+.[0-9]+.[0-9]+-premium-beta.[0-9]+' - jobs: build: - runs-on: ${{ matrix.os }} - + 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] - + os: + - macos-14 + - windows-2022 + - ubuntu-22.04 steps: - name: Install python 3.11 (MacOS) if: matrix.os == 'macos-14' @@ -26,7 +24,7 @@ jobs: echo "PYTHON=/opt/homebrew/bin/python3.11" >> $GITHUB_ENV - name: Context env: - GITHUB_CONTEXT: ${{ toJson(github) }} + GITHUB_CONTEXT: '${{ toJson(github) }}' run: echo "$GITHUB_CONTEXT" - uses: actions/checkout@v2 with: @@ -35,14 +33,12 @@ jobs: 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 }} + token: '${{ secrets.GH_TOKEN }}' path: dbgate-pro - - name: Merge dbgate/dbgate-pro run: | mkdir ../dbgate-pro @@ -54,76 +50,82 @@ jobs: 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 + + yarn printSecrets env: - GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + 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 - - + GH_TOKEN: '${{ secrets.GH_TOKEN }}' + WIN_CSC_LINK: '${{ secrets.WINCERT_2025 }}' + WIN_CSC_KEY_PASSWORD: '${{ secrets.WINCERT_2025_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: Copy artifacts run: | mkdir artifacts + cp ../dbgate-merged/app/dist/*.deb artifacts/dbgate-premium-beta.deb || true cp ../dbgate-merged/app/dist/*x86*.AppImage artifacts/dbgate-premium-beta.AppImage || true + cp ../dbgate-merged/app/dist/*arm64*.AppImage artifacts/dbgate-premium-beta-arm64.AppImage || true + cp ../dbgate-merged/app/dist/*armv7l*.AppImage artifacts/dbgate-premium-beta-armv7l.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 + cp ../dbgate-merged/app/dist/*win_x64.zip artifacts/dbgate-windows-premium-beta.zip || true + cp ../dbgate-merged/app/dist/*win_arm64.zip artifacts/dbgate-windows-premium-beta-arm64.zip || true + cp ../dbgate-merged/app/dist/*-mac_universal.dmg artifacts/dbgate-premium-beta.dmg || true + cp ../dbgate-merged/app/dist/*-mac_x64.dmg artifacts/dbgate-premium-beta-x64.dmg || true + cp ../dbgate-merged/app/dist/*-mac_arm64.dmg artifacts/dbgate-premium-beta-arm64.dmg || true + mv ../dbgate-merged/app/dist/*.snap artifacts/dbgate-premium-beta.snap || true mv ../dbgate-merged/app/dist/*.exe artifacts/ || true mv ../dbgate-merged/app/dist/*.zip artifacts/ || true @@ -136,25 +138,23 @@ jobs: 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 }} + name: '${{ matrix.os }}' path: artifacts - - name: Release uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') + if: 'startsWith(github.ref, ''refs/tags/'')' with: - files: 'artifacts/**' + files: artifacts/** prerelease: true env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - + 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/.github/workflows/build-app-pro.yaml b/.github/workflows/build-app-pro.yaml index 50f1f0feb..7529f45b0 100644 --- a/.github/workflows/build-app-pro.yaml +++ b/.github/workflows/build-app-pro.yaml @@ -1,24 +1,21 @@ +# -------------------------------------------------------------------------------------------- +# This file is generated. Do not edit manually +# -------------------------------------------------------------------------------------------- name: Electron app PREMIUM - -on: +'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 }} - + runs-on: '${{ matrix.os }}' strategy: fail-fast: false matrix: - # os: [ubuntu-22.04, windows-2016] - os: [macos-14, windows-2022, ubuntu-22.04] - + os: + - macos-14 + - windows-2022 + - ubuntu-22.04 steps: - name: Install python 3.11 (MacOS) if: matrix.os == 'macos-14' @@ -27,7 +24,7 @@ jobs: echo "PYTHON=/opt/homebrew/bin/python3.11" >> $GITHUB_ENV - name: Context env: - GITHUB_CONTEXT: ${{ toJson(github) }} + GITHUB_CONTEXT: '${{ toJson(github) }}' run: echo "$GITHUB_CONTEXT" - uses: actions/checkout@v2 with: @@ -36,14 +33,12 @@ jobs: 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 }} + token: '${{ secrets.GH_TOKEN }}' path: dbgate-pro - - name: Merge dbgate/dbgate-pro run: | mkdir ../dbgate-pro @@ -55,99 +50,111 @@ jobs: 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}} + 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}} - + GH_TOKEN: '${{ secrets.GH_TOKEN }}' + WIN_CSC_LINK: '${{ secrets.WINCERT_2025 }}' + WIN_CSC_KEY_PASSWORD: '${{ secrets.WINCERT_2025_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: Copy artifacts run: | mkdir artifacts + cp ../dbgate-merged/app/dist/*.deb artifacts/dbgate-premium-latest.deb || true 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/*arm64*.AppImage artifacts/dbgate-premium-latest-arm64.AppImage || true + cp ../dbgate-merged/app/dist/*armv7l*.AppImage artifacts/dbgate-premium-latest-armv7l.AppImage || true + cp ../dbgate-merged/app/dist/*win*.exe artifacts/dbgate-premium-latest.exe || true + cp ../dbgate-merged/app/dist/*win_x64.zip artifacts/dbgate-windows-premium-latest.zip || true + cp ../dbgate-merged/app/dist/*win_arm64.zip artifacts/dbgate-windows-premium-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/*.snap artifacts/dbgate-premium-latest.snap || 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 }} + name: '${{ matrix.os }}' path: artifacts - - name: Release uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') + if: 'startsWith(github.ref, ''refs/tags/'')' with: - files: 'artifacts/**' + files: artifacts/** + prerelease: false env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + 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/.github/workflows/build-app.yaml b/.github/workflows/build-app.yaml index 208911397..bc4ae305b 100644 --- a/.github/workflows/build-app.yaml +++ b/.github/workflows/build-app.yaml @@ -1,24 +1,21 @@ +# -------------------------------------------------------------------------------------------- +# This file is generated. Do not edit manually +# -------------------------------------------------------------------------------------------- name: Electron app - -on: +'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 }} - + runs-on: '${{ matrix.os }}' strategy: fail-fast: false matrix: - # os: [ubuntu-22.04, windows-2016] - os: [macos-14, windows-2022, ubuntu-22.04] - + os: + - macos-14 + - windows-2022 + - ubuntu-22.04 steps: - name: Install python 3.11 (MacOS) if: matrix.os == 'macos-14' @@ -27,7 +24,7 @@ jobs: echo "PYTHON=/opt/homebrew/bin/python3.11" >> $GITHUB_ENV - name: Context env: - GITHUB_CONTEXT: ${{ toJson(github) }} + GITHUB_CONTEXT: '${{ toJson(github) }}' run: echo "$GITHUB_CONTEXT" - uses: actions/checkout@v2 with: @@ -38,61 +35,51 @@ jobs: 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 + + yarn printSecrets env: - GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + 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}} - + GH_TOKEN: '${{ secrets.GH_TOKEN }}' + WIN_CSC_LINK: '${{ secrets.WINCERT_2025 }}' + WIN_CSC_KEY_PASSWORD: '${{ secrets.WINCERT_2025_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 @@ -101,75 +88,44 @@ jobs: 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*.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/*.snap artifacts/dbgate-latest.snap || 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/*.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 }} + name: '${{ matrix.os }}' path: artifacts - - name: Release uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') + if: 'startsWith(github.ref, ''refs/tags/'')' with: - files: 'artifacts/**' + files: artifacts/** + prerelease: false env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' + - name: Print content of notarization-error.log + if: failure() && matrix.os == 'macos-14' + run: | - # - 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 + find . -type f -name "notarization-error.log" -exec echo "=== Start of {} ===" \; -exec cat {} \; -exec echo "=== End of {} ===" \; diff --git a/.github/workflows/build-aws-pro-beta.yaml b/.github/workflows/build-aws-pro-beta.yaml index 1f68c1b3c..2d2e41fdb 100644 --- a/.github/workflows/build-aws-pro-beta.yaml +++ b/.github/workflows/build-aws-pro-beta.yaml @@ -1,47 +1,41 @@ +# -------------------------------------------------------------------------------------------- +# This file is generated. Do not edit manually +# -------------------------------------------------------------------------------------------- name: AWS image PREMIUM - -on: +'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 }} - + runs-on: '${{ matrix.os }}' strategy: matrix: - os: [ubuntu-22.04] - + os: + - ubuntu-22.04 steps: - name: Context env: - GITHUB_CONTEXT: ${{ toJson(github) }} + 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 }} + token: '${{ secrets.GH_TOKEN }}' path: dbgate-pro - - name: Merge dbgate/dbgate-pro run: | mkdir ../dbgate-pro @@ -53,33 +47,28 @@ jobs: 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}} - + GIST_UPLOAD_SECRET: '${{secrets.GIST_UPLOAD_SECRET}}' - name: Prepare packer build run: | cd .. @@ -87,62 +76,48 @@ jobs: 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 }} + name: '${{ matrix.os }}' path: artifacts - - name: Release uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') + if: 'startsWith(github.ref, ''refs/tags/'')' with: - files: 'artifacts/**' + files: artifacts/** prerelease: true env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - + 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}} - + 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 - + 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 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}} + 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/.github/workflows/build-docker-pro.yaml b/.github/workflows/build-docker-pro.yaml index 146b20246..a11f32f4e 100644 --- a/.github/workflows/build-docker-pro.yaml +++ b/.github/workflows/build-docker-pro.yaml @@ -1,35 +1,32 @@ +# -------------------------------------------------------------------------------------------- +# This file is generated. Do not edit manually +# -------------------------------------------------------------------------------------------- name: Docker image PREMIUM - -on: +'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 }} - + runs-on: '${{ matrix.os }}' strategy: matrix: - os: [ubuntu-22.04] - + os: + - ubuntu-22.04 steps: - name: Context env: - GITHUB_CONTEXT: ${{ toJson(github) }} + 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 + images: dbgate/dbgate-premium flavor: | latest=false tags: | @@ -37,19 +34,16 @@ jobs: 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 }} + token: '${{ secrets.GH_TOKEN }}' path: dbgate-pro - - name: Merge dbgate/dbgate-pro run: | mkdir ../dbgate-pro @@ -61,50 +55,51 @@ jobs: yarn node sync.js --nowatch cd .. - - name: adjustPackageJson run: | cd .. cd dbgate-merged - node adjustPackageJson --premium + node adjustPackageJson --premium - name: yarn install run: | cd .. cd dbgate-merged - yarn install + # yarn --version + # yarn config set network-timeout 300000 + yarn install - name: setCurrentVersion run: | cd .. cd dbgate-merged + yarn setCurrentVersion - - name: printSecrets run: | cd .. cd dbgate-merged - yarn printSecrets + + yarn printSecrets env: - GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + GIST_UPLOAD_SECRET: '${{secrets.GIST_UPLOAD_SECRET}}' - name: Prepare docker image run: | cd .. cd dbgate-merged - yarn run prepare:docker + 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 }} - + 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 + tags: '${{ steps.meta.outputs.tags }}' + platforms: 'linux/amd64,linux/arm64' diff --git a/.github/workflows/build-docker.yaml b/.github/workflows/build-docker.yaml index 85737fdd6..c6a793945 100644 --- a/.github/workflows/build-docker.yaml +++ b/.github/workflows/build-docker.yaml @@ -1,35 +1,32 @@ -name: Docker image - -on: +# -------------------------------------------------------------------------------------------- +# This file is generated. Do not edit manually +# -------------------------------------------------------------------------------------------- +name: Docker image Community +'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 }} - + runs-on: '${{ matrix.os }}' strategy: matrix: - os: [ubuntu-22.04] - + os: + - ubuntu-22.04 steps: - name: Context env: - GITHUB_CONTEXT: ${{ toJson(github) }} + 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 + images: dbgate/dbgate flavor: | latest=false tags: | @@ -37,7 +34,6 @@ jobs: 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 @@ -51,56 +47,53 @@ jobs: 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 + 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 + + yarn printSecrets env: - GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} + GIST_UPLOAD_SECRET: '${{secrets.GIST_UPLOAD_SECRET}}' - name: Prepare docker image run: | - yarn run prepare:docker + 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 }} - + 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 - + 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 + tags: '${{ steps.alpmeta.outputs.tags }}' + platforms: 'linux/amd64,linux/arm64,linux/arm/v7' diff --git a/.github/workflows/build-npm-pro.yaml b/.github/workflows/build-npm-pro.yaml index 154d661c2..53b982a59 100644 --- a/.github/workflows/build-npm-pro.yaml +++ b/.github/workflows/build-npm-pro.yaml @@ -1,31 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# This file is generated. Do not edit manually +# -------------------------------------------------------------------------------------------- name: NPM packages PREMIUM - -# on: [push] - -on: +'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 }} - + runs-on: '${{ matrix.os }}' strategy: matrix: - os: [ubuntu-22.04] - + os: + - ubuntu-22.04 steps: - name: Context env: - GITHUB_CONTEXT: ${{ toJson(github) }} + GITHUB_CONTEXT: '${{ toJson(github) }}' run: echo "$GITHUB_CONTEXT" - uses: actions/checkout@v2 with: @@ -34,14 +26,12 @@ jobs: 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 }} + token: '${{ secrets.GH_TOKEN }}' path: dbgate-pro - - name: Merge dbgate/dbgate-pro run: | mkdir ../dbgate-pro @@ -53,65 +43,55 @@ jobs: 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 }} + 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}} - + 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 .. diff --git a/.github/workflows/build-npm.yaml b/.github/workflows/build-npm.yaml index 44e5e1d6e..6ec677d51 100644 --- a/.github/workflows/build-npm.yaml +++ b/.github/workflows/build-npm.yaml @@ -1,31 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# This file is generated. Do not edit manually +# -------------------------------------------------------------------------------------------- name: NPM packages - -# on: [push] - -on: +'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 }} - + runs-on: '${{ matrix.os }}' strategy: matrix: - os: [ubuntu-22.04] - + os: + - ubuntu-22.04 steps: - name: Context env: - GITHUB_CONTEXT: ${{ toJson(github) }} + GITHUB_CONTEXT: '${{ toJson(github) }}' run: echo "$GITHUB_CONTEXT" - uses: actions/checkout@v2 with: @@ -34,37 +26,30 @@ jobs: uses: actions/setup-node@v1 with: node-version: 18.x - - name: Configure NPM token env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + 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 + yarn printSecrets env: - GIST_UPLOAD_SECRET : ${{secrets.GIST_UPLOAD_SECRET}} - + 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: | @@ -74,82 +59,66 @@ jobs: 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: | diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index c813d251e..4c7d96b03 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -1,16 +1,17 @@ +# -------------------------------------------------------------------------------------------- +# This file is generated. Do not edit manually +# -------------------------------------------------------------------------------------------- name: Run tests -on: +'on': push: branches: - master - develop - - 'feature/**' - + - feature/** jobs: test-runner: runs-on: ubuntu-latest - container: node:18 - + container: 'node:18' steps: - name: Install dependencies for cypress run: | @@ -37,7 +38,6 @@ jobs: run: | cd integration-tests yarn test:ci -# yarn wait:ci - name: Filter parser tests if: always() run: | @@ -51,54 +51,42 @@ jobs: - uses: tanmen/jest-reporter@v1 if: always() with: - github-token: ${{ secrets.GITHUB_TOKEN }} + 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 }} + 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 }} + 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 - + options: '--health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5' mysql: - image: mysql:8.0.18 + image: 'mysql:8.0.18' env: MYSQL_ROOT_PASSWORD: Pwd2020Db - mssql: image: mcr.microsoft.com/mssql/server env: - ACCEPT_EULA: Y + ACCEPT_EULA: 'Y' SA_PASSWORD: Pwd2020Db MSSQL_PID: Express - clickhouse: - image: bitnami/clickhouse:24.8.4 + image: 'bitnami/clickhouse:24.8.4' env: CLICKHOUSE_ADMIN_PASSWORD: Pwd2020Db - oracle: - image: gvenzl/oracle-xe:21-slim + image: 'gvenzl/oracle-xe:21-slim' env: ORACLE_PASSWORD: Pwd2020Db - - # cockroachdb: - # image: cockroachdb/cockroach diff --git a/common/processWorkflows.js b/common/processWorkflows.js new file mode 100644 index 000000000..5e7c24b35 --- /dev/null +++ b/common/processWorkflows.js @@ -0,0 +1,174 @@ +const fs = require('fs'); +const path = require('path'); +const yaml = require('js-yaml'); +const _ = require('lodash'); + +const indir = path.resolve(path.join(__dirname, '..', 'workflow-templates')); +const outdir = path.resolve(path.join(__dirname, '..', '.github', 'workflows')); + +const includes = {}; + +const HEADER = `# -------------------------------------------------------------------------------------------- +# This file is generated. Do not edit manually +# -------------------------------------------------------------------------------------------- +`; + +function readIncludes() { + 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]; + } + } + } +} + +let modified = false; + +function conditionMatch(condition, args) { + if (_.isString(condition)) { + return args.defs.includes(condition); + } + return false; +} + +function processJsonStep(json, args) { + return _.cloneDeepWith(json, value => { + if (_.isArray(value)) { + const res = []; + let arrayModified = false; + for (const item of value) { + if (item._if) { + modified = true; + arrayModified = true; + if (conditionMatch(item._if, args)) { + res.push(_.omit(item, ['_if'])); + } + } else if (item._replace || item._include) { + const replaceWith = item._replace ? args.replace?.[item._replace] : includes[item._include]; + if (replaceWith) { + modified = true; + arrayModified = true; + if (_.isArray(replaceWith)) { + res.push(...replaceWith); + } else { + res.push(replaceWith); + } + } else { + res.push(item); + } + } else { + res.push(item); + } + } + if (arrayModified) { + return res; + } + return undefined; + } + + if (_.isPlainObject(value)) { + if (_.intersection(args.allDefs ?? [], Object.keys(value))?.length > 0) { + modified = true; + for (const key in value) { + if (args.defs.includes(key)) { + return value[key]; + } + } + return undefined; + } + } + + if (_.isString(value)) { + let stringModified = false; + for (const key of Object.keys(args.stringReplace ?? {})) { + if (value.includes(key)) { + modified = true; + stringModified = true; + value = value.replaceAll(key, args.stringReplace[key]); + } + } + if (stringModified) { + return value; + } + return undefined; + } + + if (value?._include) { + modified = true; + return includes[value?._include]; + } + + if (value?._replace) { + modified = true; + return args?.replace[value?._replace]; + } + }); +} + +function processJson(json, args = {}) { + const MAX_STEPS = 64; + for (let i = 0; i < MAX_STEPS; i++) { + modified = false; + json = processJsonStep(json, args); + if (!modified) { + break; + } + } + return json; +} + +function processFiles() { + const dumpOptions = { + lineWidth: -1, + }; + 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) { + const allDefs = Object.keys(json._templates); + for (const key in json._templates) { + allDefs.push(...(json._templates[key].defs ?? [])); + } + + for (const key in json._templates) { + const args = { + defs: [key, ...(json._templates[key]?.defs ?? [])], + replace: json._templates[key]?.replace, + stringReplace: json._templates[key]?.['string-replace'], + allDefs, + }; + const converted = processJson(_.omit(json, ['_templates']), args); + const out = path.join(outdir, json._templates[key].file); + fs.writeFileSync(out, HEADER + yaml.dump(converted, dumpOptions)); + } + } else { + fs.writeFileSync(path.join(outdir, file), HEADER + yaml.dump(processJson(json), dumpOptions)); + } + } +} + +function deleteOldFiles() { + const files = fs.readdirSync(outdir); + for (const file of files) { + fs.unlinkSync(path.join(outdir, file)); + } +} + +function run() { + deleteOldFiles(); + readIncludes(); + processFiles(); +} + +run(); diff --git a/package.json b/package.json index 0a32e0d61..c18cf02d2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "6.1.2", + "version": "6.1.3-beta.1", "name": "dbgate-all", "workspaces": [ "packages/*", @@ -62,7 +62,8 @@ "ts:web": "yarn workspace dbgate-web ts", "ts": "yarn ts:api && yarn ts:web", "postinstall": "yarn resetPackagedPlugins && yarn build:lib && patch-package && yarn build:plugins:frontend", - "dbgate-serve": "node packages/dbgate/bin/dbgate-serve.js" + "dbgate-serve": "node packages/dbgate/bin/dbgate-serve.js", + "workflows": "node common/processWorkflows.js" }, "dependencies": { "concurrently": "^5.1.0", diff --git a/workflow-templates/build-app.tpl.yaml b/workflow-templates/build-app.tpl.yaml new file mode 100644 index 000000000..37598e53a --- /dev/null +++ b/workflow-templates/build-app.tpl.yaml @@ -0,0 +1,220 @@ +_templates: + _community_beta: + file: build-app-beta.yaml + defs: + - _community + - _beta + - _channel + string-replace: + "<>": '' + "<>": '--community' + "<>": 'app/dist' + "<>": beta + "<>": 'beta' + _community_stable: + file: build-app.yaml + defs: + - _community + - _stable + string-replace: + "<>": '' + "<>": '--community' + "<>": 'app/dist' + "<>": 'latest' + + + _premium_beta: + file: build-app-pro-beta.yaml + defs: + - _premium + - _beta + - _channel + string-replace: + "<>": | + cd .. + cd dbgate-merged + "<>": '--premium' + "<>": '../dbgate-merged/app/dist' + "<>": 'premium-beta' + "<>": 'premium-beta' + _premium_stable: + file: build-app-pro.yaml + defs: + - _premium + - _stable + - _channel + string-replace: + "<>": | + cd .. + cd dbgate-merged + "<>": '--premium' + "<>": '../dbgate-merged/app/dist' + "<>": 'premium' + "<>": 'premium-latest' + +name: + _community_beta: Electron app BETA + _community_stable: Electron app + _premium_beta: Electron app PREMIUM BETA + _premium_stable: Electron app PREMIUM + +on: + push: + tags: + - _community_beta: 'v[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+' + _premium_beta: 'v[0-9]+.[0-9]+.[0-9]+-premium-beta.[0-9]+' + _stable: '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 + + - _include: checkout-and-merge-pro + _if: _premium + + - name: adjustPackageJson + run: | + <> + node adjustPackageJson <> + - name: setUpdaterChannel <> + _if: _channel + run: | + <> + node setUpdaterChannel <> + - 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: _community + 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 + _if: _community_stable + run: | + yarn generatePadFile + + - name: Copy artifacts + run: | + mkdir artifacts + + cp <>/*.deb artifacts/dbgate-<>.deb || true + cp <>/*x86*.AppImage artifacts/dbgate-<>.AppImage || true + cp <>/*arm64*.AppImage artifacts/dbgate-<>-arm64.AppImage || true + cp <>/*armv7l*.AppImage artifacts/dbgate-<>-armv7l.AppImage || true + cp <>/*win*.exe artifacts/dbgate-<>.exe || true + cp <>/*win_x64.zip artifacts/dbgate-windows-<>.zip || true + cp <>/*win_arm64.zip artifacts/dbgate-windows-<>-arm64.zip || true + cp <>/*-mac_universal.dmg artifacts/dbgate-<>.dmg || true + cp <>/*-mac_x64.dmg artifacts/dbgate-<>-x64.dmg || true + cp <>/*-mac_arm64.dmg artifacts/dbgate-<>-arm64.dmg || true + mv <>/*.snap artifacts/dbgate-<>.snap || true + + mv <>/*.exe artifacts/ || true + mv <>/*.zip artifacts/ || true + mv <>/*.tar.gz artifacts/ || true + mv <>/*.AppImage artifacts/ || true + mv <>/*.deb artifacts/ || true + mv <>/*.snap artifacts/ || true + mv <>/*.dmg artifacts/ || true + mv <>/*.blockmap artifacts/ || true + + mv <>/*.yml artifacts/ || true + rm artifacts/builder-debug.yml + + - name: Copy PAD file + _if: _community_stable + 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/**' + prerelease: + _beta: true + _stable: false + 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-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.tpl.yaml b/workflow-templates/build-docker.tpl.yaml new file mode 100644 index 000000000..eabc1cabc --- /dev/null +++ b/workflow-templates/build-docker.tpl.yaml @@ -0,0 +1,137 @@ +_templates: + _community: + file: build-docker.yaml + string-replace: + "<>": '' + "<>": '--community' + _premium: + file: build-docker-pro.yaml + string-replace: + "<>": | + cd .. + cd dbgate-merged + "<>": '--premium' + +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: checkout-and-merge-pro + _if: _premium + + - name: adjustPackageJson + run: | + <> + node adjustPackageJson <> + + - 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: + _community: ./docker + _premium: ../dbgate-merged/docker + tags: ${{ steps.meta.outputs.tags }} + platforms: + _community: linux/amd64,linux/arm64,linux/arm/v7 + _premium: linux/amd64,linux/arm64 + + - name: Build and push alpine + uses: docker/build-push-action@v3 + _if: _community + 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..cdf9b6b5c --- /dev/null +++ b/workflow-templates/build-npm-pro.yaml @@ -0,0 +1,102 @@ +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 + + - _include: checkout-and-merge-pro + + - 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..82be38b1f --- /dev/null +++ b/workflow-templates/includes.tpl.yaml @@ -0,0 +1,20 @@ +_module: true + +checkout-and-merge-pro: + - 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 .. 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