Skip to content

Commit

Permalink
feat!: Rename TIP to Lakekeeper (#372)
Browse files Browse the repository at this point in the history
  • Loading branch information
c-thiel committed Sep 26, 2024
1 parent 4685680 commit 57df07e
Show file tree
Hide file tree
Showing 9 changed files with 103 additions and 23 deletions.
102 changes: 91 additions & 11 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -264,13 +264,20 @@ jobs:
name: docker-iceberg-catalog
path: /tmp/docker-iceberg-catalog-*.tar

- name: Test Login to Quay.io
- name: Test Login to Quay.io (TIP)
uses: docker/login-action@v3
with:
registry: quay.io
username: hansetag+githubicebergcatalog
password: ${{ secrets.QUAY_PASSWORD }}

- name: Test Login to Quay.io (Lakekeeper)
uses: docker/login-action@v3
with:
registry: quay.io
username: lakekeeper+github
password: ${{ secrets.QUAY_LAKEKEEPER_PASSWORD }}

debug:
name: Debug Artifacts
runs-on: ubuntu-latest
Expand Down Expand Up @@ -312,8 +319,8 @@ jobs:
uses: docker/login-action@v3
with:
registry: quay.io
username: hansetag+githubicebergcatalog
password: ${{ secrets.QUAY_PASSWORD }}
username: lakekeeper+github
password: ${{ secrets.QUAY_LAKEKEEPER_PASSWORD }}

- name: Load Docker
run: |
Expand All @@ -324,12 +331,12 @@ jobs:
- name: Push Full Tag to quay.io
run: |
COMMIT_SHA=${GITHUB_SHA::8} # Get the first 8 characters of the commit SHA
docker tag localhost/iceberg-catalog-local:amd64 quay.io/hansetag/tip-catalog:${COMMIT_SHA}-amd64
docker tag localhost/iceberg-catalog-local:arm64 quay.io/hansetag/tip-catalog:${COMMIT_SHA}-arm64
docker push quay.io/hansetag/tip-catalog:${COMMIT_SHA}-amd64
docker push quay.io/hansetag/tip-catalog:${COMMIT_SHA}-arm64
docker manifest create quay.io/hansetag/tip-catalog:latest-main quay.io/hansetag/tip-catalog:${COMMIT_SHA}-amd64 quay.io/hansetag/tip-catalog:${COMMIT_SHA}-arm64
docker manifest push quay.io/hansetag/tip-catalog:latest-main
docker tag localhost/iceberg-catalog-local:amd64 quay.io/lakekeeper/catalog:${COMMIT_SHA}-amd64
docker tag localhost/iceberg-catalog-local:arm64 quay.io/lakekeeper/catalog:${COMMIT_SHA}-arm64
docker push quay.io/lakekeeper/catalog:${COMMIT_SHA}-amd64
docker push quay.io/lakekeeper/catalog:${COMMIT_SHA}-arm64
docker manifest create quay.io/lakekeeper/catalog:latest-main quay.io/lakekeeper/catalog:${COMMIT_SHA}-amd64 quay.io/lakekeeper/catalog:${COMMIT_SHA}-arm64
docker manifest push quay.io/lakekeeper/catalog:latest-main
# Create GitHub release with Rust build targets and release notes
publish-binary:
Expand All @@ -355,8 +362,8 @@ jobs:
files: bin-iceberg-catalog-*/iceberg-catalog-*
tag_name: ${{ needs.release_please.outputs.tag_name }}

publish-container:
name: Publish Container
publish-container-tip:
name: Publish Container (TIP)
runs-on: ubuntu-latest
needs:
- build-docker
Expand Down Expand Up @@ -427,3 +434,76 @@ jobs:
fi
docker manifest create quay.io/hansetag/tip-catalog:latest quay.io/hansetag/tip-catalog:latest-amd64 quay.io/hansetag/tip-catalog:latest-arm64
docker manifest push quay.io/hansetag/tip-catalog:latest
publish-container-lakekeeper:
name: Publish Container (Lakekeeper)
runs-on: ubuntu-latest
needs:
- build-docker
- build-binary
- release_please
if: ${{ needs.release_please.outputs.releases_created == 'true' }}
steps:
- name: Download Artifacts
uses: actions/download-artifact@v4

- name: Login to Quay.io
uses: docker/login-action@v3
with:
registry: quay.io
username: lakekeeper+github
password: ${{ secrets.QUAY_LAKEKEEPER_PASSWORD }}

- name: Load Docker
run: |
docker load -i docker-iceberg-catalog/docker-iceberg-catalog-amd64.tar
docker load -i docker-iceberg-catalog/docker-iceberg-catalog-arm64.tar
docker images
- name: Push Images to quay.io
run: |
docker tag localhost/iceberg-catalog-local:amd64 quay.io/lakekeeper/catalog:${{ needs.release_please.outputs.tag_name }}-amd64
docker tag localhost/iceberg-catalog-local:arm64 quay.io/lakekeeper/catalog:${{ needs.release_please.outputs.tag_name }}-arm64
docker push quay.io/lakekeeper/catalog:${{ needs.release_please.outputs.tag_name }}-amd64
docker push quay.io/lakekeeper/catalog:${{ needs.release_please.outputs.tag_name }}-arm64
- name: Check if Tag is vX.Y.Z
id: check-tag
run: |
if [[ ${{ needs.release_please.outputs.tag_name }} =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "match=true" >> $GITHUB_OUTPUT
fi
- name: Push Partial Tag to quay.io
if: steps.check-tag.outputs.match == 'true'
run: |
docker tag localhost/iceberg-catalog-local:amd64 quay.io/lakekeeper/catalog:latest-amd64
docker tag localhost/iceberg-catalog-local:amd64 quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}-amd64
docker tag localhost/iceberg-catalog-local:amd64 quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}-amd64
docker tag localhost/iceberg-catalog-local:amd64 quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}.${{ needs.release_please.outputs.patch }}-amd64
docker tag localhost/iceberg-catalog-local:arm64 quay.io/lakekeeper/catalog:latest-arm64
docker tag localhost/iceberg-catalog-local:arm64 quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}-arm64
docker tag localhost/iceberg-catalog-local:arm64 quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}-arm64
docker tag localhost/iceberg-catalog-local:arm64 quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}.${{ needs.release_please.outputs.patch }}-arm64
docker push quay.io/lakekeeper/catalog:latest-amd64
docker push quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}-amd64
docker push quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}-amd64
docker push quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}.${{ needs.release_please.outputs.patch }}-amd64
docker push quay.io/lakekeeper/catalog:latest-arm64
docker push quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}-arm64
docker push quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}-arm64
docker push quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}.${{ needs.release_please.outputs.patch }}-arm64
docker manifest create quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }} quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}-amd64 quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}-arm64
docker manifest push quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}
docker manifest create quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }} quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}-amd64 quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}-arm64
docker manifest push quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}
docker manifest create quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}.${{ needs.release_please.outputs.patch }} quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}.${{ needs.release_please.outputs.patch }}-amd64 quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}.${{ needs.release_please.outputs.patch }}-arm64
docker manifest push quay.io/lakekeeper/catalog:v${{ needs.release_please.outputs.major }}.${{ needs.release_please.outputs.minor }}.${{ needs.release_please.outputs.patch }}
if docker manifest inspect quay.io/lakekeeper/catalog:latest > /dev/null 2>&1; then
docker manifest rm quay.io/lakekeeper/catalog:latest
echo "Removed existing manifest for quay.io/lakekeeper/catalog:latest"
else
echo "No manifest found for quay.io/lakekeeper/catalog:latest"
fi
docker manifest create quay.io/lakekeeper/catalog:latest quay.io/lakekeeper/catalog:latest-amd64 quay.io/lakekeeper/catalog:latest-arm64
docker manifest push quay.io/lakekeeper/catalog:latest
2 changes: 1 addition & 1 deletion .github/workflows/test-examples.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ jobs:
- name: Test Examples
run: |
cd examples &&
sed -i 'sXquay.io/hansetag/tip-catalog:latest/Xlocalhost/iceberg-catalog-local:amd64Xg' docker-compose.yaml &&
sed -i 'sXquay.io/lakehouse/catalog:latest/Xlocalhost/iceberg-catalog-local:amd64Xg' docker-compose.yaml &&
docker compose up -d &&
# retry 10 times with 1 second sleep if server becomes healthy
for i in {1..10}; do
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# TIP Catalog for Apache Iceberg
# Lakekeeper Catalog for Apache Iceberg

[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Unittests](https://github.com/hansetag/iceberg-catalog/actions/workflows/unittests.yml/badge.svg)](https://github.com/hansetag/iceberg-catalog/actions/workflows/unittests.yml)
Expand All @@ -7,11 +7,11 @@
[![Trino Integration](https://github.com/hansetag/iceberg-catalog/actions/workflows/trino-integration.yml/badge.svg)](https://github.com/hansetag/iceberg-catalog/actions/workflows/trino-integration.yml)
[![Starrocks Integration](https://github.com/hansetag/iceberg-catalog/actions/workflows/starrocks-integration.yml/badge.svg)](https://github.com/hansetag/iceberg-catalog/actions/workflows/starrocks-integration.yml)
[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/tip-catalog)](https://artifacthub.io/packages/helm/tip-catalog/tip-catalog)
[![Docker on quay](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white)](https://quay.io/repository/hansetag/tip-catalog?tab=tags&filter_tag_name=like%3Av)
[![Docker on quay](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white)](https://quay.io/repository/lakekeeper/catalog?tab=tags&filter_tag_name=like%3Av)
[![Helm Chart](https://img.shields.io/badge/Helm-0F1689?style=for-the-badge&logo=Helm&labelColor=0F1689)](https://github.com/hansetag/tip-catalog-charts/tree/main/charts/tip-catalog)
[![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/jkAGG8p93B)

This is TIP: A Rust-native implementation of the [Apache Iceberg](https://iceberg.apache.org/) REST Catalog specification based on [apache/iceberg-rust](https://github.com/apache/iceberg-rust).
This is Lakekeeper: A Rust-native implementation of the [Apache Iceberg](https://iceberg.apache.org/) REST Catalog specification based on [apache/iceberg-rust](https://github.com/apache/iceberg-rust).

If you have questions, feature requests or just want a chat, we are hanging around in [Discord](https://discord.gg/jkAGG8p93B)!

Expand All @@ -24,7 +24,7 @@ Our next milestones are:

# Scope and Features

**T**he **I**ceberg **P**rotocol (**TIP**) based on REST has become the standard for catalogs in open Lakehouses. It natively enables multi-table commits, server-side deconflicting and much more. It is figuratively the (**TIP**) of the Iceberg.
The Iceberg Catalog REST interface has become the standard for catalogs in open Lakehouses. It natively enables multi-table commits, server-side deconflicting and much more. It is figuratively the (**TIP**) of the Iceberg.

We have started this implementation because we were missing customizability, support for on-premise deployments and other features that are important for us in existing Iceberg Catalogs. Please find following some of our focuses with this implementation:

Expand Down
2 changes: 1 addition & 1 deletion crates/iceberg-catalog/src/service/storage/az.rs
Original file line number Diff line number Diff line change
Expand Up @@ -555,7 +555,7 @@ pub(super) async fn validate_vended_credentials(
let container = client.container_client(table_location.filesystem.as_str());
let blob_client = container.blob_client(reduce_scheme_string(&file_location.to_string(), true));
blob_client
.put_block_blob("TIP IOTest")
.put_block_blob("Lakekeeper IOTest")
.content_type("text/plain")
.await
.map_err(|e| {
Expand Down
4 changes: 2 additions & 2 deletions examples/self-contained/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ services:
- "8888:8888"

server:
image: quay.io/hansetag/tip-catalog:latest
image: quay.io/lakekeeper/catalog:latest
pull_policy: always
environment:
- ICEBERG_REST__BASE_URI=http://server:8080
Expand Down Expand Up @@ -42,7 +42,7 @@ services:
- "8080:8080"

migrate:
image: quay.io/hansetag/tip-catalog:latest
image: quay.io/lakekeeper/catalog:latest
pull_policy: always
environment:
- ICEBERG_REST__PG_ENCRYPTION_KEY=This-is-NOT-Secure!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"import requests\n",
"\n",
"# This CATALOG_URL and MANAGEMENT_URL work for the \"docker compose\" testing and development environment.\n",
"# Change 'server' if you are not running on \"docker compose\" (f. ex. 'localhost' if TIP is running locally).\n",
"# Change 'server' if you are not running on \"docker compose\" (f. ex. 'localhost' if Lakekeeper is running locally).\n",
"CATALOG_URL = \"http://server:8080/catalog\"\n",
"MANAGEMENT_URL = \"http://server:8080/management\"\n",
"\n",
Expand Down
2 changes: 1 addition & 1 deletion examples/self-contained/notebooks/Spark.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"import pandas as pd\n",
"\n",
"# This CATALOG_URL works for the \"docker compose\" testing and development environment\n",
"# Change 'server' if you are not running on \"docker compose\" (f. ex. 'localhost' if TIP is running locally).\n",
"# Change 'server' if you are not running on \"docker compose\" (f. ex. 'localhost' if Lakekeeper is running locally).\n",
"CATALOG_URL = \"http://server:8080/catalog\"\n",
"\n",
"# In the provided \"docker compose\" testing and development environment,\n",
Expand Down
2 changes: 1 addition & 1 deletion examples/self-contained/notebooks/Starrocks.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"outputs": [],
"source": [
"# This CATALOG_URL works for the \"docker compose\" testing and development environment\n",
"# Change 'server' if you are not running on \"docker compose\" (f. ex. 'localhost' if TIP is running locally).\n",
"# Change 'server' if you are not running on \"docker compose\" (f. ex. 'localhost' if Lakekeeper is running locally).\n",
"CATALOG_URL = \"http://server:8080/catalog\"\n",
"\n",
"STARROCKS_URI = \"starrocks://root@starrocks:9030\"\n",
Expand Down
2 changes: 1 addition & 1 deletion examples/self-contained/notebooks/Trino.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"outputs": [],
"source": [
"# This CATALOG_URL works for the \"docker compose\" testing and development environment\n",
"# Change 'server' if you are not running on \"docker compose\" (f. ex. 'localhost' if TIP is running locally).\n",
"# Change 'server' if you are not running on \"docker compose\" (f. ex. 'localhost' if Lakekeeper is running locally).\n",
"CATALOG_URL = \"http://server:8080/catalog\"\n",
"\n",
"TRINO_URI = \"http://trino:8080\"\n",
Expand Down

0 comments on commit 57df07e

Please sign in to comment.