Skip to content

go-release

go-release #7

Workflow file for this run

name: go-release
on:
workflow_dispatch:
inputs:
om-branch:
description: "OpenMetadata branch to build against (e.g. 1.6.2-release)"
required: true
type: string
sdk-version:
description: "SDK version to release — must be valid semver (e.g. 1.6.2)"
required: true
type: string
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
strategy:
matrix:
go-version: [1.24.x]
steps:
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
with:
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: false
swap-storage: true
docker-images: false
- name: Validate sdk-version is semver
env:
SDK_VERSION: ${{ inputs.sdk-version }}
run: |
if ! echo "$SDK_VERSION" | grep -qE '^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$'; then
echo "::error::sdk-version '$SDK_VERSION' is not valid semver"
exit 1
fi
- name: Validate om-branch format
env:
OM_BRANCH: ${{ inputs.om-branch }}
run: |
if ! echo "$OM_BRANCH" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "::error::om-branch '$OM_BRANCH' does not match expected pattern (e.g. 1.6.2-release)"
exit 1
fi
- name: Checkout OpenMetadata
uses: actions/checkout@v4
with:
repository: open-metadata/OpenMetadata
ref: ${{ inputs.om-branch }}
path: open-metadata
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: "21"
distribution: "temurin"
- name: Set up Python 3.11.14
uses: actions/setup-python@v4
with:
python-version: 3.11.14
- name: Install Ubuntu dependencies
run: |
sudo apt-get update && sudo apt-get install -y unixodbc-dev python3-venv librdkafka-dev gcc libsasl2-dev build-essential libssl-dev libffi-dev \
unixodbc-dev libevent-dev python3-dev libkrb5-dev
- name: Generate OpenMetadata models
run: |
cd open-metadata
python3 -m venv env
source env/bin/activate
sudo make install_antlr_cli
make install_dev generate
- name: Install OpenMetadata dependencies
run: |
cd open-metadata
source env/bin/activate
make install_all install_test
- name: Start OpenMetadata Server
env:
INGESTION_DEPENDENCY: "mysql,elasticsearch"
run: cd open-metadata && ./docker/run_local_docker.sh -m no-ui
- name: Checkout SDK
uses: actions/checkout@v4
with:
path: openmetadata-sdk
- name: Setup Go ${{ matrix.go-version }}
uses: actions/setup-go@v4
with:
go-version: ${{ matrix.go-version }}
- name: Patch OpenAPI spec for Go codegen
run: |
cd openmetadata-sdk/openmetadata-go-client && go run scripts/patch_swagger.go \
${{ github.workspace }}/open-metadata/openmetadata-service/target/classes/assets/swagger.json \
/tmp/swagger_patched.json
- name: Generate Go models from OpenAPI spec
run: |
cd openmetadata-sdk/openmetadata-go-client && go tool oapi-codegen \
-generate types \
-package ometa \
-o pkg/ometa/models.go \
/tmp/swagger_patched.json
- name: Run golangci-lint
uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 # v9.2.0
with:
version: v2.9.0
working-directory: openmetadata-sdk/openmetadata-go-client
- name: Validate service coverage against swagger
run: |
cd openmetadata-sdk/openmetadata-go-client && go test ./pkg/ometa/ \
-run TestServiceCoverage \
-swagger-path ${{ github.workspace }}/open-metadata/openmetadata-service/target/classes/assets/swagger.json \
-v
- name: Run unit tests
run: |
cd openmetadata-sdk/openmetadata-go-client && go test ./pkg/ometa/ -v
- name: Run integration tests
env:
OM_TEST_TOKEN: ${{ secrets.OM_TEST_TOKEN }}
run: |
cd openmetadata-sdk/openmetadata-go-client && go test ./tests/integration/ -v
- name: Commit generated models and push release branch
env:
SDK_VERSION: ${{ inputs.sdk-version }}
run: |
cd openmetadata-sdk
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git checkout -b "go/v${SDK_VERSION}-release"
git add -f openmetadata-go-client/pkg/ometa/models.go
git commit -m "chore(go-sdk): generate models for v${SDK_VERSION}"
git push origin "go/v${SDK_VERSION}-release"
- name: Create and push tag
env:
SDK_VERSION: ${{ inputs.sdk-version }}
run: |
cd openmetadata-sdk
git tag "openmetadata-go-client/v${SDK_VERSION}"
git push origin "openmetadata-go-client/v${SDK_VERSION}"
- name: Create GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SDK_VERSION: ${{ inputs.sdk-version }}
OM_BRANCH: ${{ inputs.om-branch }}
run: |
cd openmetadata-sdk
gh release create "openmetadata-go-client/v${SDK_VERSION}" \
--title "Go SDK v${SDK_VERSION}" \
--notes "$(cat <<EOF
## Go SDK v${SDK_VERSION}
Built against [OpenMetadata ${OM_BRANCH}](https://github.com/open-metadata/OpenMetadata/tree/${OM_BRANCH}).
### Install
\`\`\`bash
go get github.com/open-metadata/openmetadata-sdk/openmetadata-go-client@v${SDK_VERSION}
\`\`\`
EOF
)"