This is an automated email from the ASF dual-hosted git repository.
kezhenxu94 pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new f937c511b1 Publish Docker images to docker hub when released (#13631)
f937c511b1 is described below
commit f937c511b127c4e6c61d0571c5cf20014726036e
Author: kezhenxu94 <[email protected]>
AuthorDate: Mon Feb 27 09:24:28 2023 +0800
Publish Docker images to docker hub when released (#13631)
---
.github/workflows/publish-docker.yaml | 27 +++++++++++----
.github/workflows/publish-helm-chart.yaml | 33 +++++++++++++++----
docs/docs/en/contribute/release.md | 55 ++++---------------------------
docs/docs/zh/contribute/release.md | 51 +++-------------------------
4 files changed, 56 insertions(+), 110 deletions(-)
diff --git a/.github/workflows/publish-docker.yaml
b/.github/workflows/publish-docker.yaml
index 5c3d5c4fdc..3fa1cf4b1f 100644
--- a/.github/workflows/publish-docker.yaml
+++ b/.github/workflows/publish-docker.yaml
@@ -20,9 +20,9 @@ on:
push:
branches:
- dev
-
-env:
- HUB: ghcr.io/apache/dolphinscheduler
+ release:
+ types:
+ - released
jobs:
build:
@@ -41,12 +41,25 @@ jobs:
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
+ - name: Set environment variables
+ run: |
+ if [[ ${{ github.event_name }} == "release" ]]; then
+ echo "DOCKER_REGISTRY=docker.io" >> $GITHUB_ENV
+ echo "DOCKER_USERNAME=${{ secrets.DOCKERHUB_USER }}" >> $GITHUB_ENV
+ echo "DOCKER_PASSWORD=${{ secrets.DOCKERHUB_TOKEN }}" >>
$GITHUB_ENV
+ echo "HUB=apache" >> $GITHUB_ENV
+ else
+ echo "DOCKER_REGISTRY=ghcr.io/apache/dolphinscheduler" >>
$GITHUB_ENV
+ echo "DOCKER_USERNAME=${{ github.actor }}" >> $GITHUB_ENV
+ echo "DOCKER_PASSWORD=${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_ENV
+ echo "HUB=ghcr.io/apache/dolphinscheduler" >> $GITHUB_ENV
+ fi
- name: Log in to the Container registry
- uses: docker/[email protected]
+ uses: docker/login-action@v2
with:
- registry: ${{ env.HUB }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
+ registry: ${{ env.DOCKER_REGISTRY }}
+ username: ${{ env.DOCKER_USERNAME }}
+ password: ${{ env.DOCKER_PASSWORD }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
diff --git a/.github/workflows/publish-helm-chart.yaml
b/.github/workflows/publish-helm-chart.yaml
index 92bdda867b..e28b60e448 100644
--- a/.github/workflows/publish-helm-chart.yaml
+++ b/.github/workflows/publish-helm-chart.yaml
@@ -20,6 +20,9 @@ on:
push:
branches:
- dev
+ release:
+ types:
+ - released
env:
HUB: ghcr.io/apache/dolphinscheduler
@@ -34,17 +37,33 @@ jobs:
timeout-minutes: 30
steps:
- uses: actions/checkout@v2
+ - name: Set environment variables
+ run: |
+ # TODO
+ if [[ ${{ github.event_name }} == "release" ]]; then
+ echo "HUB=registry-1.docker.io/apache" >> $GITHUB_ENV
+ echo "DOCKER_REGISTRY=docker.io" >> $GITHUB_ENV
+ echo "DOCKER_USERNAME=${{ secrets.DOCKERHUB_USER }}" >> $GITHUB_ENV
+ echo "DOCKER_PASSWORD=${{ secrets.DOCKERHUB_TOKEN }}" >>
$GITHUB_ENV
+ else
+ echo "HUB=ghcr.io/apache/dolphinscheduler" >> $GITHUB_ENV
+ echo "DOCKER_REGISTRY=c" >> $GITHUB_ENV
+ echo "DOCKER_USERNAME=${{ github.actor }}" >> $GITHUB_ENV
+ echo "DOCKER_PASSWORD=${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_ENV
+ fi
- name: Log in to the Container registry
- uses: docker/[email protected]
+ uses: docker/login-action@v2
with:
- registry: ${{ env.HUB }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
+ registry: ${{ env.DOCKER_REGISTRY }}
+ username: ${{ env.DOCKER_USERNAME }}
+ password: ${{ env.DOCKER_PASSWORD }}
- name: Publish Helm Chart
working-directory: deploy/kubernetes
run: |
- VERSION=0.0.0-$(git rev-parse --short HEAD)
- sed -i "s/^version: .*/version: $VERSION/"
dolphinscheduler/Chart.yaml
+ if [[ ${{ env.HUB }} == "ghcr.io/apache/dolphinscheduler" ]]; then
+ VERSION=0.0.0-$(git rev-parse --short HEAD)
+ sed -i "s/^version: .*/version: $VERSION/"
dolphinscheduler/Chart.yaml
+ fi
helm dep up dolphinscheduler
helm package dolphinscheduler
- helm push dolphinscheduler-helm-$VERSION.tgz oci://${{ env.HUB }}
+ helm push dolphinscheduler-helm-*.tgz oci://${{ env.HUB }}
diff --git a/docs/docs/en/contribute/release.md
b/docs/docs/en/contribute/release.md
index 373be69da1..7ed850c2e6 100644
--- a/docs/docs/en/contribute/release.md
+++ b/docs/docs/en/contribute/release.md
@@ -492,56 +492,13 @@ the release version is `<VERSION>`, the following updates
are required(note it w
issue template have **Version** selection bottom. So after released we
should add the new `<VERSION>` to
bug-report.yml
-### Publish Docker Image
+### Publish Docker Image and Helm Chart
-we already have the exists CI to publish the latest Docker image to GitHub
container register with
[config](https://github.com/apache/dolphinscheduler/blob/d80cf21456265c9d84e642bdb4db4067c7577fc6/.github/workflows/publish-docker.yaml#L55-L63).
-We could reuse the main command the CI run and publish our Docker images to
Docker Hub by single command.
-
-It is highly recommended to build and test docker images locally first before
push to docker hub
-
-```shell
-# Checkout and create to target tag
-git checkout -b "${VERSION}" "${VERSION}"
-
-# Build docker images locally
-./mvnw -B clean package \
- -Dmaven.test.skip \
- -Dmaven.javadoc.skip \
- -Dmaven.checkstyle.skip \
- -Dmaven.deploy.skip \
- -Ddocker.tag="${VERSION}" \
- -Pdocker,release
-
-# You should test whether the standalone-server images work or not
-docker run --name dolphinscheduler-standalone-server -p 12345:12345 -p
25333:25333 -d
apache/dolphinscheduler-standalone-server:"${DOLPHINSCHEDULER_VERSION}"
-```
-
-> Note: To push to dockerhub, you must have Apache organization permission of
dockerhub. If you don’t you need to require
-> from Apache infra Jira. You can refer to here to submit an application from
[here](https://issues.apache.org/jira/projects/INFRA/issues/INFRA-23314)
-
-After verifying the Docker images works as expected, you need to publish the
Docker images by the following command:
-
-```shell
-./mvnw -B clean deploy \
- -Dmaven.test.skip \
- -Dmaven.javadoc.skip \
- -Dmaven.checkstyle.skip \
- -Dmaven.deploy.skip \
- -Ddocker.tag="${VERSION}" \
- -Ddocker.hub=apache \
- -Pdocker,release
-```
-
-## Publish Helm Chart
-
-We will also publish the Helm Chart to Docker Hub so that users don't need to
download our source codes just in order
-to install DolphinScheduler with Helm, run the following command to publish
the Helm Chart to Docker Hub.
-
-```bash
-cd deploy/kubernetes
-helm package dolphinscheduler
-helm push dolphinscheduler-helm-$VERSION.tgz oci://registry-1.docker.io/apache
-```
+We have a [workflow](../../../../.github/workflows/publish-docker.yaml) to
automatically publish Docker images
+and a [workflow](../../../../.github/workflows/publish-helm-chart.yaml) to
automatically publish Helm Chart to Docker Hub,
+after you change the release from "pre-release" to "release", the workflow
will be triggered. All you need to do
+is to observe the aforementioned workflows, and after they are completed, you
can pull the Docker images locally and
+verify that they work as expected.
### Send Announcement E-mail Community
diff --git a/docs/docs/zh/contribute/release.md
b/docs/docs/zh/contribute/release.md
index 9323737619..7f2d8cc1fb 100644
--- a/docs/docs/zh/contribute/release.md
+++ b/docs/docs/zh/contribute/release.md
@@ -495,53 +495,10 @@ git push --delete "${GH_REMOTE}" "${VERSION}-prepare"
### 发布 Docker Image
-我们已经有了现有的 CI,可以将最新的 Docker image 发布到 GitHub 容器注册
[config](https://github.com/apache/dolphinscheduler/blob/d80cf21456265c9d84e642bdb4db4067c7577fc6/.github/workflows/publish-docker.yaml#L55-
L63).
-我们可以重用 CI 运行的主要命令,并通过单个命令将 Docker iamge 发布到 DockerHub。
-
-强烈建议在推送到 docker hub 之前先在本地构建和测试 docker 镜像
-
-```shell
-# Checkout and create to target tag
-git checkout -b "${VERSION}" "${VERSION}"
-
-# Build docker images locally
-./mvnw -B clean package \
- -Dmaven.test.skip \
- -Dmaven.javadoc.skip \
- -Dmaven.checkstyle.skip \
- -Dmaven.deploy.skip \
- -Ddocker.tag="${VERSION}" \
- -Pdocker,release
-
-# You should test whether the standalone-server images work or not
-docker run --name dolphinscheduler-standalone-server -p 12345:12345 -p
25333:25333 -d
apache/dolphinscheduler-standalone-server:"${DOLPHINSCHEDULER_VERSION}"
-```
-
-> 注意:推送到 dockerhub,必须有 dockerhub 的 Apache 组织权限。 如果你没有权限,你需要向 Apache infra Jira
申请。 您可以参考
-> [此处](https://issues.apache.org/jira/projects/INFRA/issues/INFRA-23314)提交申请
-
-如果您确保 docker 镜像正常工作,您需要通过以下命令将镜像发布到 Docker Hub
-
-```shell
-./mvnw -B clean deploy \
- -Dmaven.test.skip \
- -Dmaven.javadoc.skip \
- -Dmaven.checkstyle.skip \
- -Dmaven.deploy.skip \
- -Ddocker.tag="${VERSION}" \
- -Ddocker.hub=apache \
- -Pdocker,release
-```
-
-## 发布 Helm Chart
-
-我们也会将 Helm Chart 发布到 Docker Hub,这样用户就不需要下载我们的源码就可以使用 Helm 安装
DolphinScheduler,运行以下命令发布 Helm Chart 到 Docker Hub。
-
-```bash
-cd deploy/kubernetes
-helm package dolphinscheduler
-helm push dolphinscheduler-helm-$VERSION.tgz oci://registry-1.docker.io/apache
-```
+我们有一个 [工作流](../../../../.github/workflows/publish-docker.yaml) 来自动发布 Docker 镜像,
+以及一个 [工作流](../../../../.github/workflows/publish-helm-chart.yaml) 来自动发布 Helm
Chart 到 Docker Hub。
+当你将发版从 "pre-release" 改为 "release" 后,这两个工作流就会被触发。你需要做的就是观察上述的工作流,
+当它们完成后,你可以在本地拉取 Docker 镜像并验证它们是否按预期工作。
### 发送公告邮件通知社区