chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,238 @@
|
||||
name: Release DoltgreSQL
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: 'SemVer format release tag, i.e. 0.2.4'
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
format-version:
|
||||
runs-on: ubuntu-22.04
|
||||
outputs:
|
||||
version: ${{ steps.format_version.outputs.version }}
|
||||
steps:
|
||||
- name: Format Input
|
||||
id: format_version
|
||||
run: |
|
||||
version="${{ github.event.inputs.version }}"
|
||||
if [[ $version == v* ]];
|
||||
then
|
||||
version="${version:1}"
|
||||
fi
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
windows-extension-support:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN || secrets.REPO_ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
- name: Build SQL Syntax
|
||||
run: ./build.sh
|
||||
working-directory: ./postgres/parser
|
||||
shell: bash
|
||||
- name: Upload Extension Artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows-extension-artifacts
|
||||
path: |
|
||||
./core/extensions/pg_extension/output/pg_extension.dll
|
||||
./core/extensions/pg_extension/output/postgres.exe
|
||||
if-no-files-found: error
|
||||
retention-days: 1
|
||||
|
||||
create-release:
|
||||
needs: [format-version, windows-extension-support]
|
||||
name: Create release
|
||||
runs-on: ubuntu-22.04
|
||||
outputs:
|
||||
release_id: ${{ steps.create_release.outputs.id }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN || secrets.REPO_ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
- name: Build SQL Syntax
|
||||
run: ./build.sh
|
||||
working-directory: ./postgres/parser
|
||||
shell: bash
|
||||
- name: Update Doltgres version command
|
||||
run: sed -i -e 's/Version\s*=\s*".*"/Version = "'"$NEW_VERSION"'"/' "$FILE"
|
||||
env:
|
||||
FILE: ${{ format('{0}/server/server.go', github.workspace) }}
|
||||
NEW_VERSION: ${{ needs.format-version.outputs.version }}
|
||||
- name: Set minver TBD to version
|
||||
run: sed -i -e 's/minver:"TBD"/minver:"'"$NEW_VERSION"'"/' "$FILE"
|
||||
env:
|
||||
FILE: ${{ format('{0}/servercfg/config.go', github.workspace) }}
|
||||
NEW_VERSION: ${{ needs.format-version.outputs.version }}
|
||||
- name: update minver_validation.txt
|
||||
working-directory: ./
|
||||
run: go run -mod=readonly ./utils/genminver_validation/ $FILE
|
||||
env:
|
||||
FILE: ${{ format('{0}/servercfg/cfgdetails/testdata/minver_validation.txt', github.workspace) }}
|
||||
- uses: EndBug/add-and-commit@v9.1.1
|
||||
with:
|
||||
message: ${{ format('Update DoltgreSQL version to {0}', needs.format-version.outputs.version) }}
|
||||
add: ${{ format('["{0}/server/server.go", "{0}/servercfg/config.go", "{0}/servercfg/cfgdetails/testdata/minver_validation.txt"]', github.workspace) }}
|
||||
cwd: "."
|
||||
new_branch: cd-release
|
||||
push: 'origin cd-release --set-upstream --force'
|
||||
- name: Create Pull Request
|
||||
run: gh pr create --base main --head "cd-release" --title "[no-release-notes] Release v${{ needs.format-version.outputs.version }}" --body "Created by the Release workflow to update DoltgreSQL's version"
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN || secrets.REPO_ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
- name: Enable Pull Request Auto-Merge
|
||||
run: gh pr merge --merge --auto "cd-release"
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN || secrets.REPO_ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
- name: Download Extension Artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: windows-extension-artifacts
|
||||
path: ./core/extensions/pg_extension/output
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version-file: go.mod
|
||||
- name: Free up disk space
|
||||
shell: bash
|
||||
run: |
|
||||
sudo find /opt -maxdepth 1 -mindepth 1 \
|
||||
! -path /opt/containerd \
|
||||
! -path /opt/actionarchivecache \
|
||||
! -path /opt/runner \
|
||||
! -path /opt/runner-cache \
|
||||
-exec rm -rf {} \;
|
||||
- name: Build Binaries
|
||||
id: build_binaries
|
||||
shell: bash -ex {0}
|
||||
run: |
|
||||
latest=$(git rev-parse HEAD)
|
||||
echo "commitish=$latest" >> $GITHUB_OUTPUT
|
||||
GO_BUILD_VERSION=1.26 scripts/build_all_binaries.sh
|
||||
- name: Fix ownership of build artifacts
|
||||
run: sudo chown -R "$USER:$USER" out
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: dolthub/create-release@v2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: v${{ needs.format-version.outputs.version }}
|
||||
release_name: ${{ needs.format-version.outputs.version }}
|
||||
draft: false
|
||||
prerelease: true
|
||||
commitish: ${{ steps.build_binaries.outputs.commitish }}
|
||||
- name: Create install script
|
||||
id: create-install-script
|
||||
shell: bash
|
||||
run: scripts/build_install_script.sh
|
||||
env:
|
||||
DOLTGRES_VERSION: ${{ needs.format-version.outputs.version }}
|
||||
- name: Upload Linux AMD64 Distro
|
||||
id: upload-linux-amd64-distro
|
||||
uses: dolthub/upload-release-asset@v2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: out/doltgresql-linux-amd64.tar.gz
|
||||
asset_name: doltgresql-linux-amd64.tar.gz
|
||||
asset_content_type: application/zip
|
||||
- name: Upload Linux ARM64 Distro
|
||||
id: upload-linux-arm64-distro
|
||||
uses: dolthub/upload-release-asset@v2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: out/doltgresql-linux-arm64.tar.gz
|
||||
asset_name: doltgresql-linux-arm64.tar.gz
|
||||
asset_content_type: application/zip
|
||||
- name: Upload OSX AMD64 Distro
|
||||
id: upload-osx-amd64-distro
|
||||
uses: dolthub/upload-release-asset@v2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: out/doltgresql-darwin-amd64.tar.gz
|
||||
asset_name: doltgresql-darwin-amd64.tar.gz
|
||||
asset_content_type: application/zip
|
||||
- name: Upload OSX ARM64 Distro
|
||||
id: upload-osx-arm64-distro
|
||||
uses: dolthub/upload-release-asset@v2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: out/doltgresql-darwin-arm64.tar.gz
|
||||
asset_name: doltgresql-darwin-arm64.tar.gz
|
||||
asset_content_type: application/zip
|
||||
- name: Upload Windows Distro
|
||||
id: upload-windows-distro
|
||||
uses: dolthub/upload-release-asset@v2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: out/doltgresql-windows-amd64.zip
|
||||
asset_name: doltgresql-windows-amd64.zip
|
||||
asset_content_type: application/zip
|
||||
- name: Upload Windows Distro 7z
|
||||
id: upload-windows-distro-7z
|
||||
uses: dolthub/upload-release-asset@v2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: out/doltgresql-windows-amd64.7z
|
||||
asset_name: doltgresql-windows-amd64.7z
|
||||
asset_content_type: application/x-7z-compressed
|
||||
- name: Upload install script
|
||||
id: upload-install-script
|
||||
uses: dolthub/upload-release-asset@v2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: out/install.sh
|
||||
asset_name: install.sh
|
||||
asset_content_type: text/plain
|
||||
|
||||
create-release-notes:
|
||||
needs: [format-version, create-release]
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Trigger Release Notes
|
||||
uses: peter-evans/repository-dispatch@v2.0.0
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
event-type: release-notes
|
||||
client-payload: '{"version": "${{ needs.format-version.outputs.version }}", "release_id": "${{ needs.create-release.outputs.release_id }}"}'
|
||||
|
||||
trigger-performance-benchmark-email:
|
||||
needs: [format-version, create-release]
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Trigger Performance Benchmarks
|
||||
uses: peter-evans/repository-dispatch@v2.0.0
|
||||
with:
|
||||
token: ${{ secrets.REPO_ACCESS_TOKEN }}
|
||||
event-type: release-doltgres
|
||||
client-payload: '{"version": "${{ needs.format-version.outputs.version }}", "actor": "${{ github.actor }}"}'
|
||||
|
||||
docker-image-push:
|
||||
needs: [format-version, create-release]
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Trigger Push Docker Image
|
||||
uses: peter-evans/repository-dispatch@v3
|
||||
with:
|
||||
token: ${{ secrets.REPO_ACCESS_TOKEN }}
|
||||
event-type: push-docker-image
|
||||
client-payload: '{"version": "${{ needs.format-version.outputs.version }}", "release_id": "${{ needs.create-release.outputs.release_id }}" }'
|
||||
Reference in New Issue
Block a user