Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

c. 上传你的key到公共服务器



$ gpg2 --keyserver pgpkeys.mitopenpgp.eduorg --send-keys <key id>


这个 <key id> 就是 ~/.gnupg/openpgp-revocs.d/下的一个.rev文件的文件名,打开可以看到以下信息

...

然后从iotdb源码的根目录下的target/checkout/将README.md,README_ZH.mdRELEASE_NOTES.md拷贝进来。

再从iotdb源码再从iotdb源码/targettarget/checkout/target/apache-iotdb-0.11.1-source-release.zip* (zip, zip.asc, zip.sha512三个文件)拷贝进来;

再从Iotdb源码/target/checkout/distribution/target/apache-iotdb-0.11.1-bin.zip* (zip, zip.asc, zip.sha512三个文件)拷贝进来;

(注:0.12版本的二进制文件更多12版本的二进制文件更多,源码包要注意checkout的路径,“target/checkout/target”)


然后用svn命令提交:

$ svn add 0.11.1

...

$ svn commit -m "perparing RC1 of 0.11.1 of IoTDB release"


在孵化期阶段,release那个svn,最多保留5个版本的下载!如果过多了,请记得删除之前的版本!release那个svn,最多保留5个版本的下载!如果过多了,请记得删除之前的版本!



3.4 标记github上的release为pre-release

...

Panel

主题:[RESULT][VOTE] Release Apache IoTDB 0.9.0


Hi all,

The vote to release Apache IoTDB (incubating) 0.8.2 has passed with 3 +1 binding votes and 1 +1 non-binding vote.

binding votes:

xxx

xxx

nondonon-binding vote:
xxx

Vote thread:
https://lists.apache.org/thread.html/9653646c533df93e286a512b2b5c544b8d7bc9a565183806feeec642%40%3Cgeneral.incubator.apache.org%3E


感谢的话

你的名字

...

消息主题:[ANNOUNCE] Apache IoTDB (incubating) 0.1012.0 6 released

消息内容示例:


Panel

The   Apache   IoTDB   team is pleased to   announce   the release of   Apache   IoTDB  (incubating)  0.1012.06.



Apache   IoTDB  (incubating) (Database for Internet of Things) is an integrated data management engine designed for timeseries data. It provides users with services for data collection, storage and analysis. 

The current release is the 3rd major version of IoTDB, which provides many new features and improvements. A part of features are as follows:

* IOTDB-217 A new GROUPBY syntax, e.g., select avg(s1) from root.sg.d1.s1 GROUP BY ([1, 50), 5ms)
* IOTDB-220 Add hot-load configuration function
* IOTDB-292 Add load external tsfile feature
* IOTDB-298 Support new Last point query. e.g, select last * from root
* IOTDB-305 Add value filter function while executing align by device
* IOTDB-396 Support new query clause: disable align, e.g., select * from root disable align
* IOTDB-447 Support querying non-existing measurement and constant measurement
* IOTDB-448 Add IN operation, e.g., where time in (1,2,3)
* IOTDB-456 Support GroupByFill Query, e.g., select last_value(s1) from root.sg.d1 GROUP BY ([1, 10), 2ms) FILL(int32[previousUntilLast])
* IOTDB-497 Support Apache Flink Connector with IoTDB
* IOTDB-565 MQTT Protocol Support, disabled by default, open in iotdb-engine.properties
* IOTDB-588 Add tags and attributes management
* Online upgrade from 0.9.x
* Make JDBC OSGi usable and added a feature file
* Allow count timeseries group by level=x using default path
* IOTDB-700 Add OpenID Connect based JWT Access as alternative to Username / Password
* IOTDB-715 Support previous time range in previousuntillast
* IOTDB-719 add avg_series_point_number_threshold in config
* IOTDB-734 Add Support for NaN in Double / Floats in SQL Syntax.

The full release note is available at: 

https://raw.githubusercontent.com/apache/incubator-iotdb/v0.12.1/RELEASE_NOTES.md

The release is available for download at: 

http://iotdb.apache.org/Download

Maven artifacts for JDBC driver, session SDK, TsFile SDK, Spark-connector, Hadoop-connector, Hive-connector and Flink-connector can be found at:

https://search.maven.org/search?q=g:org.apache.iotdb

Docker image of IoTDB server can be found at:

https://hub.docker.com/r/apache/iotdb

Python API package can be found at:

https://pypi.org/project/apache-iotdb/

Regards,
The Apache IoTDB team

=====

Disclaimer 

Apache IoTDB (incubating) is an effort undergoing incubation at The
Apache Software Foundation (ASF), sponsored by the Apache Incubator.
Incubation is required of all newly accepted projects until a further
review indicates that the infrastructure, communications, and decision
making process have stabilized in a manner consistent with other
successful ASF projects. While incubation status is not necessarily a
reflection of the completeness or stability of the code, it does
indicate that the project has yet to be fully endorsed by the ASF.

更多参考例子:https://lists.apache.org/list.html?dev@iotdb.apache.org:gte=1d:announce

发布Python包到Pypi

首先,你要有一个账号,在这里注册:https://pypi.org/account/register/

其次,最好在注册一个测试仓库的账号,在这里https://test.pypi.org/account/register/

注意:在正式发布之前要先在测试仓库确保没有问题。因为正式发布之后PyPI does not allow for a filename to be reused, even once a project has been deleted and recreated.

即正式发布之后再发现有问题,即便删除了那个包,已经用过的名字(比如apache-iotdb 0.11.1)也不可再用于重新上传了。

自己电脑上需要安装python3、pip3;安装后,还需要安装setuptools和wheel和twine

python3 -m pip install --user --upgrade setuptools wheel

IoT native database with high performance for data management and analysis, deployable on the edge and the cloud.

This is a bug-fixed version of 0.12.5, which includes a number of improvements:
##Improvements
*[IOTDB-3515] Make the message clear when loading empty TsFile

##Bug Fixes
*[IOTDB-2773] Fix overlapped data should be consumed first bug
*[IOTDB-3135] Fix parameter max_select_unseq_file_num_in_each_unseq_compaction doesn't work
*[IOTDB-3292] Fix chunk size overflow in level compaction
*[IOTDB-3392] Fix File doesn't exist when moving TsFile when virtual_storage_group > 1
*[IOTDB-3398] Remove the exception when query meet a device is not in TsFile, which is a normal case
*[IOTDB-3602] Skip empty TsFile when loading directory
*[ISSUE-4399] When non-root user get an empty query result, return no permission error message
*[ISSUE-5809] Fix bug: sum aggregation result return 0 when no data
* Fix data in seq files overlapped


The full release note is available at:
https://raw.githubusercontent.com/apache/iotdb/v0.12.6/RELEASE_NOTES.md

The release is available for download at:
http://iotdb.apache.org/Download

Maven artifacts for JDBC driver, session SDK, TsFile SDK, Spark-connector, Hadoop-connector, Hive-connector and Flink-connector can be found at:
https://search.maven.org/search?q=g:org.apache.iotdb


Docker image of IoTDB server can be found at:
https://hub.docker.com/r/apache/iotdb

Python API package can be found at:
https://pypi.org/project/apache-iotdb/


Regards,
The Apache IoTDB team

更多参考例子:https://lists.apache.org/list.html?dev@iotdb.apache.org:gte=1d:announce


发布Python包到Pypi

首先,你要有一个账号,在这里注册:https://pypi.org/account/register/

其次,最好在注册一个测试仓库的账号,在这里https://test.pypi.org/account/register/


注意:在正式发布之前要先在测试仓库确保没有问题。因为正式发布之后PyPI does not allow for a filename to be reused, even once a project has been deleted and recreated.

即正式发布之后再发现有问题,即便删除了那个包,已经用过的名字(比如apache-iotdb 0.11.1)也不可再用于重新上传了。


自己电脑上需要安装python3、pip3;安装后,还需要安装setuptools和wheel和twine

python3 -m pip install --user --upgrade setuptools wheel
python3 -m pip install --user --upgrade twine

我执行上面这个指令时候,报错: creating build/temp.linux-x86_64-3.6/build/temp.linux-x86_64-3.6
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -python3 -m pip install --user --upgrade twine
我执行上面这个指令时候,报错: creating build/temp.linux-x86_64-3.6/build/temp.linux-x86_64-3.6
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.6m -c build/temp.linux-x86_64-3.6/_openssl.c -o build/temp.linux-x86_64-3.6/build/temp.linux-x86_64-3.6/_openssl.o -Wconversion -Wno-error=sign-conversion
build/temp.linux-x86_64-3.6/_openssl.c:22:24: fatal error: pyconfig.h: No such file or directory
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
解决办法:sudo apt install python3.6-dev (我的python是3.6版本)


然后,在整个项目编译后,进入client-py/target/pypi文件夹。文件夹。


注意一定要在进行下一步前编译项目,否则发布出来的版本会缺少thrift 相关的依赖。。。。(血的教训)

...

注意:上传测试版本时,python3 setup.py sdist bdist_wheel使用的setup.py里的name要修改,可以在后面后缀上自己的用户名(像这样:name="example-pkg-YOUR-USERNAME-HERE"),否则无法会报错:The credential associated with user 'xxx' isn't allowed to upload to project 'apache-iotdb'。正式上传之前,记得把setup.py里的name改回来重新生成。py里的name改回来,删掉egg-info,dist,build这三个文件夹,之后重新生成。


完成后的输出示例:

Panel

MacMini-FIT:generated-sources-python hxd$ python3 -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*
Uploading distributions to https://test.pypi.org/legacy/
Enter your username:

 
Enter your password:
Uploading apache_iotdb-0.9.0rc5-py3-none-any.whl
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 33.5k/33.5k [00:04<00:00, 7.14kB/s]
Uploading apache-iotdb-0.9.0rc5.tar.gz
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26.0k/26.0k [00:01<00:00, 16.0kB/s]

View at:
https://test.pypi.org/project/apache-iotdb/0.9.0rc5/

...

No Format
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

FROM openjdk:11-jre-slim and limitations
# under the License.
#

FROM openjdk:11-jre-slim
RUN apt update \
  # procps is for `free` command
  && apt install wget unzip lsof procps -y \
  && wget https://downloads.apache.org/iotdb/0.12.4/apache-iotdb-0.12.4-grafana-bin.zip \
  # if you are in China, use the following URL
  #&& wget https://mirrors.tuna.tsinghua.edu.cn/apache/iotdb/0.12.4/apache-iotdb-0.12.4-grafana-bin.zip \
  && unzip apache-iotdb-0.12.4-grafana-bin.zip \
  && rm apache-iotdb-0.12.4-grafana-bin.zip \
  && mv apache-iotdb-0.12.4-grafana-bin /iotdb-grafana \
  && apt remove wget unzip -y \
  && apt autoremove -y \
  && apt purge --auto-remove -y \
  && apt clean -y
# rpc port
EXPOSE 8888
VOLUME /iotdb-grafana/config
RUN echo "#!/bin/bash" > /iotdb-grafana/runboot.sh
RUN echo "java -Djava.security.egd=file:/dev/./urandom -jar /iotdb-grafana/iotdb-grafana.war" >> /iotdb-grafana/runboot.sh
RUN chmod a+x /iotdb-grafana/runboot.sh
WORKDIR /iotdb-grafana
ENTRYPOINT ["./runboot.sh"]

Dockerfile-0.13.0-grafana-connector的示例

No Format
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

FROM openjdk:11-jre-slim
RUN apt update \
  # procps is for `free` command
  && apt install wget unzip lsof procps -y \
  && wget https://downloads.apache.org/iotdb/0.13.0/apache-iotdb-0.13.0-grafana-connector-bin.zip \
  # if you are in China, use the following URL
  #&& wget https://mirrors.tuna.tsinghua.edu.cn/apache/iotdb/0.13.0/apache-iotdb-0.13.0-grafana-connector-bin.zip \
  && unzip apache-iotdb-0.13.0-grafana-connector-bin.zip \
  && rm apache-iotdb-0.13.0-grafana-connector-bin.zip \
  && mv apache-iotdb-0.13.0-grafana-connector-bin /iotdb-grafana-connector \
  && apt remove wget unzip -y \
  && apt autoremove -y \
  && apt purge --auto-remove -y \
  && apt clean -y
# rpc port
EXPOSE 8888
VOLUME /iotdb-grafana-connector/config
RUN echo "#!/bin/bash" > /iotdb-grafana-connector/runboot.sh
RUN echo "java -Djava.security.egd=file:/dev/./urandom -jar /iotdb-grafana-connector/iotdb-grafana-connector.war" >> /iotdb-grafana-connector/runboot.sh
RUN chmod a+x /iotdb-grafana-connector/runboot.sh
WORKDIR /iotdb-grafana-connector
ENTRYPOINT ["./runboot.sh"]


注意该脚本可以存储到docker/src/main下。


然后本地构造image (注意运行的时候 要确保Dockerfile文件夹内没有别的文件):

docker build -t apache/iotdb:0.9.1 .

0.12.X版本可以用下面的命令

docker build -t apache/iotdb:0.12.4-node . -f Dockerfile-0.12.4-node

docker build -t apache/iotdb:0.12.4-cluster . -f Dockerfile-0.12.4-cluster

docker build -t apache/iotdb:0.12.4-grafana . -f Dockerfile-0.12.4-grafana

0.13.X版本可以用下面的命令

docker build -t apache/iotdb:0.13.0-node . -f Dockerfile-0.13.0-node

docker build -t apache/iotdb:0.13.0-cluster . -f Dockerfile-0.13.0-cluster

docker build -t apache/iotdb:0.13.0-grafana-connector . -f Dockerfile-0.13.0-grafana-connector


然后本地尝试运行:

docker run -d -p 6667:6667 -p 31999:31999 -p 8181:8181 apache/iotdb:0.12.4-node


如果需要杀死该镜像,使用docker ps 查看容器id,然后使用docker kill 容器id即可。


进行测试,启动iotdb-client进行连接和增删改查操作:

docker exec -it a4434aff6123(需要替换成上一步自己运行的的CONTAINER ID) /bin/bash


都没问题的话,可以上传镜像了:

首先需要登录docker:

docker login --username=yourhubusername 

使用docker images再确认一遍容器,以及容器的tag:

Image Added

以上图为例,其中apache/iotdb 0.9.0和0.9.1拥有相同的Image ID的原因是,我在构建0.9.1的时候,错误地将版本号指定成了0.9.0。

因此构建完成镜像后一定要使用客户端连接iotdb进行测试。


如果构建镜像的时候,名字不是apache/iotdb这种类型,或者版本号不正确,还有机会修改:

docker tag 6a6365cd99d0  apache/iotdb:0.12.4-node

上传吧:

docker push apache/iotdb:0.12.4-node

如果是最新版本(比如还没有0.10,那么0.9.x就是最新版本。但是假设0.10.0已经发布,那么再上传0.9.5就不算最新版),还要更新下latest标签:

docker tag  apache/iotdb:0.12.4-node  apache/iotdb:latest

docker push apache/iotdb:latest


(注意目前有三个镜像要打:node,cluster,grafana)。

完成。


docker push apache/iotdb:0.12.4-node

docker push apache/iotdb:0.12.4-cluster 

docker push apache/iotdb:0.12.4-grafana 


0.13.x之后

docker push apache/iotdb:0.13.0-node

docker push apache/iotdb:0.13.0-cluster 

docker push apache/iotdb:0.13.0-grafana-connector


发布 跨平台的docker镜像

以0.13.1为例,在 Docker 19.03+ 版本中可以使用 docker buildx build 命令使用 BuildKit 构建镜像。该命令支持 --platform 参数可以同时构建支持多种系统架构的 Docker 镜像。(例如linux/amd64,linux/arm64)

dockerfile如下:

只修改了第一行,将jdk 替换成了eclipse-temurin:11-jre-focal,因为这个JDK支持amd64、arm/v7、arm64/v8三种版本,并且是ubuntu-focal,可以正常使用apt-get

No Format
FROM --platform=$TARGETPLATFORM eclipse-temurin:11-jre-focal
RUN apt update \
  # procps is for `free` command
  && apt install wget unzip lsof procps -y \
  && wget https://downloads.apache.org/iotdb/0.1213.41/apache-iotdb-0.1213.41-grafanaserver-bin.zip \
  # if you are in China, use the following URL
  #&& wget https://mirrors.tuna.tsinghua.edu.cn/apache/iotdb/0.1213.41/apache-iotdb-0.1213.41-grafanaserver-bin.zip \
  && unzip apache-iotdb-0.1213.41-grafanaserver-bin.zip \
  && rm apache-iotdb-0.1213.41-grafanaserver-bin.zip \
  && mv apache-iotdb-0.1213.41-grafanaserver-bin /iotdb-grafana \
  && apt remove wget unzip -y \
  && apt autoremove -y \
  && apt purge --auto-remove -y \
  && apt clean -y
# rpc port
EXPOSE 88886667
VOLUME /iotdb-grafana/config
RUN echo "#!/bin/bash" > /iotdb-grafana/runboot.sh
RUN echo "java -Djava.security.egd=file:/dev/./urandom -jar /iotdb-grafana/iotdb-grafana.war" >> /iotdb-grafana/runboot.sh
RUN chmod a+x /iotdb-grafana/runboot.sh
WORKDIR /iotdb-grafana
ENTRYPOINT ["./runboot.sh"]

注意该脚本可以存储到docker/src/main下。

然后本地构造image (注意运行的时候 要确保Dockerfile文件夹内没有别的文件):

docker build -t apache/iotdb:0.9.1 .

0.12.X版本可以用下面的命令

docker build -t apache/iotdb:0.12.4-node . -f Dockerfile-0.12.4-node

docker build -t apache/iotdb:0.12.4-cluster . -f Dockerfile-0.12.4-cluster

docker build -t apache/iotdb:0.12.4-grafana . -f Dockerfile-0.12.4-grafana

然后本地尝试运行:

docker run -d -p 6667:6667 -p 31999:31999 -p 8181:8181 apache/iotdb:0.12.4-node

如果需要杀死该镜像,使用docker ps 查看容器id,然后使用docker kill 容器id即可。

进行测试,启动iotdb-client进行连接和增删改查操作:

docker exec -it a4434aff6123(需要替换成上一步自己运行的的CONTAINER ID) /bin/bash

都没问题的话,可以上传镜像了:

首先需要登录docker:

docker login --username=yourhubusername 

使用docker images再确认一遍容器,以及容器的tag:

Image Removed

以上图为例,其中apache/iotdb 0.9.0和0.9.1拥有相同的Image ID的原因是,我在构建0.9.1的时候,错误地将版本号指定成了0.9.0。

因此构建完成镜像后一定要使用客户端连接iotdb进行测试。

如果构建镜像的时候,名字不是apache/iotdb这种类型,或者版本号不正确,还有机会修改:

docker tag 6a6365cd99d0  apache/iotdb:0.12.4-node

上传吧:

docker push apache/iotdb:0.12.4-node

如果是最新版本(比如还没有0.10,那么0.9.x就是最新版本。但是假设0.10.0已经发布,那么再上传0.9.5就不算最新版),还要更新下latest标签:

docker tag  apache/iotdb:0.12.4-node  apache/iotdb:latest

docker push apache/iotdb:latest

(注意目前有三个镜像要打:node,cluster,grafana)。

完成。

docker push apache/iotdb:0.12.4-node

docker push apache/iotdb:0.12.4-cluster 

# JMX port
EXPOSE 31999
# sync port
EXPOSE 5555
# monitor port
EXPOSE 8181
VOLUME /iotdb/data
VOLUME /iotdb/logs
ENV PATH="/iotdb/sbin/:/iotdb/tools/:${PATH}"
ENTRYPOINT ["/iotdb/sbin/start-server.sh"]


安装buildx:

# 确定可以使用buildx,否则要升级docker

docker buildx version

# 指定buildx使用docker-container

docker buildx create --name mybuilder --driver docker-container

docker buildx use mybuilder

# 开启用于多平台镜像构建的镜像

docker run --rm --privileged tonistiigi/binfmt:latest --install all 


构建并上传

## apache/iotdb:latest

docker buildx build --platform linux/amd64,linux/arm64/v8,linux/arm/v7 -t apache/iotdb:latest -f Dockerfile-0.13.1-node . --push

## apache/iotdb:0.13.1-node

docker buildx build --platform linux/amd64,linux/arm64/v8,linux/arm/v7 -t apache/iotdb:0.13.1-node -f Dockerfile-0.13.1-node . --push


发布 Go client (如果有需要发布)


本地clone go client 代码

git clone https://github.com/apache/iotdb-client-go

checkout 到相应的 rel/xx 分支,检查是否有遗漏的commit,如果有,可以从main分支cherry-pick过来。

打tag 并push到 github 仓库

git tag v0.xx.x

git push origin v0.xx.x


进入下面的链接,点 draft a new release,选刚才打的那个tag 之后 release 就行。

https://github.com/apache/iotdb-client-go/releasesdocker push apache/iotdb:0.12.4-grafana 




That is all.