Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
{
"name": "NeuG",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"image": "neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.0",
"image": "neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.1",
// Features to add to the dev container. More info: https://containers.dev/features.
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
Expand All @@ -29,7 +29,7 @@
// Set `remoteUser` to `root` to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "neug",
// Use 'postCreateCommand' to run commands before the container is created.
"initializeCommand": "sudo docker pull neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.0",
"initializeCommand": "sudo docker pull neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.1",
// Uncomment this to enable C++ and Rust debugging in containers
// "capAdd": ["SYS_PTRACE"],
// "securityOpt": ["seccomp=unconfined"],
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
test-py-neug:
runs-on: ubuntu-22.04
container:
image: neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.0
image: neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.1
# options: --user root
steps:
- name: checkout
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/build-extensions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ on:
required: false
default: 'json;parquet'
version:
description: 'Version tag for the extensions (e.g., 0.1.0)'
description: 'Version tag for the extensions (e.g., 0.1.1)'
required: false
default: '0.1.0'
default: '0.1.1'
push:
branches:
- main
Expand Down Expand Up @@ -64,8 +64,8 @@ jobs:
elif [ -n "${{ github.ref }}" ] && [[ "${{ github.ref }}" == refs/tags/* ]]; then
VERSION="${GITHUB_REF#refs/tags/}"
else
# Default to 0.1.0 if no version is specified
VERSION="0.1.0"
# Default to 0.1.1 if no version is specified
VERSION="0.1.1"
Comment on lines 64 to +68
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Double v breaks extensions 🐞 Bug ≡ Correctness

.github/workflows/build-extensions.yml can derive VERSION from a git tag like v0.1.1 and pass
it into build_and_upload_extensions.sh, which constructs OSS paths as
neug/extensions/v{version}/..., producing neug/extensions/vv0.1.1/.... The C++ extension
downloader formats URLs with exactly one v prefix and NEUG_VERSION (e.g., 0.1.1), so uploaded
artifacts under vv0.1.1 will not be found at runtime.
Agent Prompt
## Issue description
The extension upload pipeline can produce incorrect OSS paths like `neug/extensions/vv0.1.1/...` because the workflow may pass a tag name that already starts with `v` (e.g., `v0.1.1`) into a script that unconditionally prefixes paths with `v{version}`.

## Issue Context
Runtime extension downloads use `NEUG_VERSION` (e.g., `0.1.1`) and repository templates that already include a single leading `v` (e.g., `v{}/{}/{}/...`). Therefore, uploaded artifacts must live under `.../v0.1.1/...`, not `.../vv0.1.1/...`.

## Fix Focus Areas
- Strip a leading `v` when deriving `VERSION` from tags (and ideally also when accepting `--version` in the script) so both tag-based and manual invocations are safe.
- Update script help/examples to show the normalized version format (e.g., `0.1.1`), to avoid reintroducing the problem via copy/paste.

### Code locations
- .github/workflows/build-extensions.yml[59-71]
- .github/workflows/build-extensions.yml[137-145]
- scripts/build_and_upload_extensions.sh[16-35]
- scripts/build_and_upload_extensions.sh[227-266]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

fi
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Version: $VERSION"
Expand All @@ -76,7 +76,7 @@ jobs:
if: github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/')
runs-on: [self-hosted, X64]
container:
image: neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.0-x86_64
image: neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.1-x86_64
steps:
- name: checkout
uses: actions/checkout@v4
Expand Down Expand Up @@ -159,7 +159,7 @@ jobs:
if: github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/')
runs-on: [self-hosted, ARM64]
container:
image: neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.0-arm64
image: neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.1-arm64
steps:
- name: checkout
uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
docs:
runs-on: [ubuntu-22.04]
container:
image: neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.0
image: neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.1
# options: --user root

steps:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/neug-extension-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
extension_tests_default:
runs-on: [self-hosted]
container:
image: neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.0
image: neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.1
steps:
- name: checkout
uses: actions/checkout@v4
Expand Down Expand Up @@ -72,8 +72,8 @@ jobs:
with:
python-version: '3.13'

# TODO: After unifying wheel build (neug-manylinux:v0.1.0-x86_64) and dev images (neug-dev:v0.1.0),
# skip the build process and use `pip3 install neug` to test the locally built json/parquet extension
# TODO: After unifying wheel build (neug-manylinux:v0.1.1-x86_64) and dev images (neug-dev:v0.1.1),
# skip the build process and use `pip3 install neug` to test the locally built json extension
# with the released wheel package.
- name: Build NeuG with extensions
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/neug-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ jobs:
if: ${{ needs.format_check.result == 'success' || needs.format_check.result == 'skipped' }}
runs-on: [self-hosted]
container:
image: neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.0
image: neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.1
steps:
- name: checkout
id: checkout
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ We welcome contributions from the community! 🎉

```bash
# Using Docker (recommended)
docker pull neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.0
docker run -it --name neug-dev neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.0 bash
docker pull neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.1
docker run -it --name neug-dev neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.1 bash
source ~/.neug_env && make python-dev
```

Expand Down
2 changes: 1 addition & 1 deletion NEUG_VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.1.0
0.1.1
4 changes: 2 additions & 2 deletions dev_and_test.md
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,8 @@ When running python test, set environment variable `DEBUG` to `ON`, to display a

## Dev images

- neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.0-x86_64: dev container built upload ubuntu for x86_64
- neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.0-arm64: dev container built upload ubuntu for amr64
- neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.1-x86_64: dev container built upload ubuntu for x86_64
- neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.1-arm64: dev container built upload ubuntu for amr64

## Alter property on edge
1. Alter property on edge with single property
Expand Down
18 changes: 9 additions & 9 deletions docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ To access NeuG images, you can pull them from the specified registry using the c

```bash
# Pulling images for different architectures
docker pull neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.0-x86_64
docker pull neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.0-arm64
docker pull neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.1-x86_64
docker pull neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.1-arm64

# Development images
docker pull neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.0-x86_64
docker pull neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.0-arm64
docker pull neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.1-x86_64
docker pull neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.1-arm64
```

## Building Manylinux Images
Expand All @@ -25,8 +25,8 @@ make neug-manylinux
And tag the images to the desired registry

```bash
export ARCH=aarch64 # x86_64
docker tag graphscope/neug-manylinux:${ARCH} neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.0-${ARCH}
export ARCH=arm64 # x86_64
docker tag graphscope/neug-manylinux:${ARCH} neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.1-${ARCH}
```

## Developing Development Images
Expand All @@ -42,9 +42,9 @@ make neug-dev # Build the image suitable for development
Since Docker images are architecture-specific, you can create a manifest to enable users to pull the same image name across different platforms. This process is scripted in `manifest.sh`.

```bash
bash ./manifest.sh neug-manylinux v0.1.0 hongkong create
bash ./manifest.sh neug v0.1.0 hongkong create
bash ./manifest.sh neug-dev v0.1.0 hongkong create
bash ./manifest.sh neug-manylinux v0.1.1 hongkong create
bash ./manifest.sh neug v0.1.1 hongkong create
bash ./manifest.sh neug-dev v0.1.1 hongkong create
```

Ensure images are pushed to the registry before executing the manifest creation.
2 changes: 1 addition & 1 deletion docker/manifest.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ fi

# image_name
image_name=$1
# 0.1.0
# 0.1.1
version=$2
# beijing or hongkong
region=$3
Expand Down
2 changes: 1 addition & 1 deletion docker/neug-release.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.0 as builder
FROM neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-dev:v0.1.1 as builder

USER neug

Expand Down
8 changes: 4 additions & 4 deletions scripts/build_and_upload_extensions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ set -e

# Default values
EXTENSIONS="json"
VERSION="0.1.0"
VERSION="0.1.1"
PLATFORM="linux_x86_64"
WORKSPACE_DIR="$(pwd)"
SKIP_BUILD=false
Expand Down Expand Up @@ -78,10 +78,10 @@ Environment variables required for OSS upload:

Examples:
# Build json extension and upload
$0 --extensions json --version v0.1.0 --platform linux-x86_64
$0 --extensions json --version v0.1.1 --platform linux-x86_64

# Build multiple extensions
$0 --extensions "json;csv" --version v0.1.0
$0 --extensions "json;csv" --version v0.1.1

# Only package and upload (skip build)
$0 --extensions json --skip-build
Expand Down Expand Up @@ -261,7 +261,7 @@ for ext_file in extension_files:
# Fallback: try to extract from filename
ext_name = filename.replace('.neug_extension', '').replace('lib', '')
# Construct OSS path: neug/extensions/v{version}/{platform}/{extension_name}/{filename}
# Example: neug/extensions/v0.1.0/linux-x86_64/json/libjson.neug_extension
# Example: neug/extensions/v0.1.1/linux-x86_64/json/libjson.neug_extension
oss_path = f"neug/extensions/v{version}/{platform}/{ext_name}/{filename}"

print(f"Uploading {filename} to oss://{bucket_name}/{oss_path}")
Expand Down
2 changes: 1 addition & 1 deletion scripts/rename_wheels.sh
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ cd "$DIR" || exit
for file in *.whl; do
# Use pattern matching to insert '-2-' after version number
# new_name=$(echo "$file" | sed 's/\(neug-[0-9]\+\.[0-9]\+\.[0-9]\+\)-/\1-'"$REVERSION"'-/')
# on macos, the file name is like neug-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
# on macos, the file name is like neug-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
new_name=$(echo "$file" | sed -E 's/(neug-[0-9]+\.[0-9]+\.[0-9]+)-/\1-'"$REVERSION"'-/')

# Rename the file
Expand Down
2 changes: 1 addition & 1 deletion tools/python_bind/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ neug-cli --version
This should display:

```
neug-cli, version 0.1.0
neug-cli, version 0.1.1
```

### Usage
Expand Down
2 changes: 1 addition & 1 deletion tools/python_bind/neug/neug_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ def do_help(self, arg):


@click.group(name="neug-cli")
@click.version_option(version="0.1.0")
@click.version_option(version="0.1.1")
def cli():
"""Neug CLI Tool."""

Expand Down
6 changes: 3 additions & 3 deletions tools/python_bind/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "neug"
requires-python = ">=3.8"
version = "0.1.0"
version = "0.1.1"
description = "GraphScope NeuG for python"
authors = [{name="GraphScope Team", email="graphscope@alibaba-inc.com"}]
readme = "README.md"
Expand Down Expand Up @@ -65,8 +65,8 @@ build = "cp38-* cp39-* cp310-* cp311-* cp312-* cp313-* cp314-*"
enable = ["cpython-prerelease"]
skip = ["*-musllinux_*", "*i686*"]
environment-pass = ["BUILD_TYPE", "CMAKE_BUILD_PARALLEL_LEVEL", "CMAKE_PREFIX_PATH", "MACOSX_DEPLOYMENT_TARGET", "PYBIND11_FINDPYTHON", "CI_INSTALL_EXTENSIONS"]
manylinux-x86_64-image = "neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.0-x86_64"
manylinux-aarch64-image = "neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.0-arm64"
manylinux-x86_64-image = "neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.1-x86_64"
manylinux-aarch64-image = "neug-registry.cn-hongkong.cr.aliyuncs.com/neug/neug-manylinux:v0.1.1-arm64"

[tool.cibuildwheel.linux]
before-all = ["git submodule update --init --recursive"]
Expand Down
2 changes: 1 addition & 1 deletion tools/python_bind/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def get_version(file):
__version__ = line.split("Version: ", 1)[1].strip()
break
if not __version__:
__version__ = "0.1.0"
__version__ = "0.1.1"

return __version__

Expand Down
Loading