Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merge fuse image to mount & update 1.2 Dockerfile to go1.20 #990

Merged
merged 3 commits into from
Jun 21, 2024
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
3 changes: 0 additions & 3 deletions .github/scripts/sync.sh
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,9 @@ sync_image() {
if [ "$imageName" = "mount" ]; then
if [ "$tag" = "latest" ]; then
sync_image "juicedata" "mount"
sync_image "juicedata" "juicefs-fuse"
else
sync_image "juicedata" "mount"
sync_image "juicedata" "mount" "arm64"
sync_image "juicedata" "juicefs-fuse"
sync_image "juicedata" "juicefs-fuse" "arm64"
fi
elif [ "$imageName" = "csi-driver" ]; then
sync_image "juicedata" "juicefs-csi-driver"
Expand Down
65 changes: 13 additions & 52 deletions .github/workflows/juicefs-image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ jobs:
if [ ${{ env.JUICEFS_BUILD_VERSION }} ]; then
echo "JUICEFS_CE_LATEST_VERSION=${{ env.JUICEFS_BUILD_VERSION }}" >> $GITHUB_ENV
echo "MOUNT_IMAGE_EXIST=false" >> $GITHUB_ENV
echo "FUSE_IMAGE_EXIST=false" >> $GITHUB_ENV
else
JUICEFS_CE_LATEST_VERSION=$(curl -fsSL https://api.github.com/repos/juicedata/juicefs/releases/latest | grep tag_name | grep -oE 'v[0-9]+\.[0-9][0-9]*(\.[0-9]+(-[0-9a-z]+)?)?')
if [ -z "$JUICEFS_CE_LATEST_VERSION" ]; then
Expand All @@ -44,25 +43,21 @@ jobs:
if [ $rst -eq 0 ]; then
echo "MOUNT_IMAGE_EXIST=true" >> $GITHUB_ENV
fi

echo "fuse image is juicedata/juicefs-fuse:ce-${JUICEFS_CE_LATEST_VERSION}"
echo "FUSE_IMAGE_EXIST=false" >> $GITHUB_ENV
docker pull juicedata/juicefs-fuse:ce-${JUICEFS_CE_LATEST_VERSION}
rst=$?
if [ $rst -eq 0 ]; then
echo "FUSE_IMAGE_EXIST=true" >> $GITHUB_ENV
fi
fi
- name: Build and Push juicefs latest image
env:
CEVERSION: latest
ACR_TOKEN: ${{ secrets.ACR_TOKEN }}
ACR_USERNAME: ${{ secrets.ACR_USERNAME }}
run: |
image_exist=${{ env.MOUNT_IMAGE_EXIST }}
if [ $image_exist == "false" ]; then
echo "Build JuiceFS latest image"
export CEJUICEFS_VERSION=${JUICEFS_CE_LATEST_VERSION}
make -C docker ce-image
${GITHUB_WORKSPACE}/.github/scripts/sync.sh mount LATEST
if [[ ${JUICEFS_CE_LATEST_VERSION:0:4} != "v1.1" ]]; then
echo "Build JuiceFS latest image"
export CEJUICEFS_VERSION=${JUICEFS_CE_LATEST_VERSION}
make -C docker ce-image
${GITHUB_WORKSPACE}/.github/scripts/sync.sh mount
fi
else
echo "JuiceFS latest image already exists"
fi
Expand All @@ -75,23 +70,19 @@ jobs:
ACR_USERNAME: ${{ secrets.ACR_USERNAME }}
run: |
mount_image_exist=${{ env.MOUNT_IMAGE_EXIST }}
fuse_image_exist=${{ env.FUSE_IMAGE_EXIST }}
export DOCKER_CLI_EXPERIMENTAL=enabled
docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d
docker buildx create --use --name mybuilder
if [ $mount_image_exist == "false" ]; then
echo "Build JuiceFS new version image: $JUICEFS_CE_LATEST_VERSION"
make -C docker ce-image-buildx
if [[ ${JUICEFS_CE_LATEST_VERSION:0:4} == "v1.1" ]]; then
make -C docker ce-image-1.1-buildx
else
make -C docker ce-image-buildx
fi
else
echo "JuiceFS mount ce version image $JUICEFS_CE_LATEST_VERSION already exists"
fi
if [ $fuse_image_exist == "false" ]; then
echo "Build JuiceFS new version image: $JUICEFS_CE_LATEST_VERSION"
make -C docker fuse-ce-image-buildx
echo "Sync JuiceFS version image"
else
echo "JuiceFS fuse ce version image $JUICEFS_CE_LATEST_VERSION already exists"
fi
- name: sync image
env:
IMAGE_TAG: ce-${{ env.JUICEFS_CE_LATEST_VERSION }}
Expand Down Expand Up @@ -131,14 +122,6 @@ jobs:
if [ $rst -eq 0 ]; then
echo "MOUNT_IMAGE_EXIST=true" >> $GITHUB_ENV
fi

echo "fuse image is juicedata/juicefs-fuse:ee-${JUICEFS_EE_LATEST_VERSION}"
echo "FUSE_IMAGE_EXIST=false" >> $GITHUB_ENV
docker pull juicedata/juicefs-fuse:ee-${JUICEFS_EE_LATEST_VERSION}
rst=$?
if [ $rst -eq 0 ]; then
echo "FUSE_IMAGE_EXIST=true" >> $GITHUB_ENV
fi
- name: Buildx and Push juicefs image
env:
EEVERSION: ee-${{ env.JUICEFS_EE_LATEST_VERSION }}
Expand All @@ -147,7 +130,6 @@ jobs:
ACR_USERNAME: ${{ secrets.ACR_USERNAME }}
run: |
mount_image_exist=${{ env.MOUNT_IMAGE_EXIST }}
fuse_image_exist=${{ env.FUSE_IMAGE_EXIST }}
export DOCKER_CLI_EXPERIMENTAL=enabled
docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d
docker buildx create --use --name mybuilder
Expand All @@ -159,12 +141,6 @@ jobs:
echo "JuiceFS mount ee version image already exists"
fi

if [ $fuse_image_exist == "false" ]; then
echo "Build JuiceFS new version image"
make -C docker fuse-ee-image-4.0-buildx
else
echo "JuiceFS fuse ee version image already exists"
fi
- name: sync image
env:
IMAGE_TAG: ee-${{ env.JUICEFS_EE_LATEST_VERSION }}
Expand Down Expand Up @@ -207,14 +183,6 @@ jobs:
if [ $rst -eq 0 ]; then
echo "MOUNT_IMAGE_EXIST=true" >> $GITHUB_ENV
fi

echo "fuse image is juicedata/juicefs-fuse:ee-${JUICEFS_EE_LATEST_VERSION}"
echo "FUSE_IMAGE_EXIST=false" >> $GITHUB_ENV
docker pull juicedata/juicefs-fuse:ee-${JUICEFS_EE_LATEST_VERSION}
rst=$?
if [ $rst -eq 0 ]; then
echo "FUSE_IMAGE_EXIST=true" >> $GITHUB_ENV
fi
- name: Buildx and Push juicefs image
env:
EEVERSION: ee-${{ env.JUICEFS_EE_LATEST_VERSION }}
Expand All @@ -223,7 +191,6 @@ jobs:
ACR_USERNAME: ${{ secrets.ACR_USERNAME }}
run: |
mount_image_exist=${{ env.MOUNT_IMAGE_EXIST }}
fuse_image_exist=${{ env.FUSE_IMAGE_EXIST }}
export DOCKER_CLI_EXPERIMENTAL=enabled
docker run --privileged --rm tonistiigi/binfmt:qemu-v6.2.0 --uninstall qemu-*
docker run --privileged --rm tonistiigi/binfmt:qemu-v6.2.0 --install all
Expand All @@ -236,12 +203,6 @@ jobs:
echo "JuiceFS mount ee version image already exists"
fi

if [ $fuse_image_exist == "false" ]; then
echo "Build JuiceFS new version image"
make -C docker fuse-ee-image-buildx
else
echo "JuiceFS fuse ee version image already exists"
fi
- name: sync image
env:
IMAGE_TAG: ee-${{ env.JUICEFS_EE_LATEST_VERSION }}
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/nightly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -235,10 +235,8 @@ jobs:
docker login --username chnliyong --password ${PASSWORD}
make -C docker image-nightly
make -C docker image-nightly-push
make -C docker ce-image-1.2
make -C docker ce-image
make -C docker ee-image
make -C docker fuse-ce-image-1.2
make -C docker fuse-ee-image
make -C docker dashboard-build
- name: Success
if: ${{ success() }}
Expand Down
50 changes: 6 additions & 44 deletions docker/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
IMAGE?=juicedata/juicefs-csi-driver
REGISTRY?=docker.io
TARGETARCH?=amd64
FUSE_IMAGE=juicedata/juicefs-fuse
JUICEFS_IMAGE?=juicedata/mount
VERSION=$(shell git describe --tags --match 'v*' --always --dirty)
DASHBOARD_IMAGE?=juicedata/csi-dashboard
Expand Down Expand Up @@ -117,15 +116,15 @@ ce-image-buildx:
--build-arg=JUICEFS_REPO_REF=$(CE_JUICEFS_VERSION) \
--platform linux/amd64,linux/arm64 . --push

.PHONY: ce-image-1.2
ce-image-1.2:
docker build -f ce.juicefs-1.2.Dockerfile -t $(REGISTRY)/$(JUICEFS_IMAGE):$(CE_VERSION) \
.PHONY: ce-image-1.1
ce-image-1.1:
docker build -f ce.juicefs-1.1.Dockerfile -t $(REGISTRY)/$(JUICEFS_IMAGE):$(CE_VERSION) \
--build-arg JUICEFS_REPO_REF=$(CE_JUICEFS_VERSION) --build-arg TARGETARCH=$(TARGETARCH) .
docker push $(REGISTRY)/$(JUICEFS_IMAGE):$(CE_VERSION)

.PHONY: ce-image-1.2-buildx
ce-image-1.2-buildx:
docker buildx build -f ce.juicefs-1.2.Dockerfile -t $(REGISTRY)/$(JUICEFS_IMAGE):$(CE_VERSION) \
.PHONY: ce-image-1.1-buildx
ce-image-1.1-buildx:
docker buildx build -f ce.juicefs-1.1.Dockerfile -t $(REGISTRY)/$(JUICEFS_IMAGE):$(CE_VERSION) \
--build-arg=JUICEFS_REPO_REF=$(CE_JUICEFS_VERSION) \
--platform linux/amd64,linux/arm64 . --push

Expand All @@ -149,43 +148,6 @@ ee-image-4.0-buildx:
--build-arg JFSCHAN=$(JFS_CHAN) \
--platform linux/amd64,linux/arm64 . --push

################# JuiceFS image for fluid fuse #######################
.PHONY: fuse-ce-image
fuse-ce-image:
docker build -f fuse/fuse.ce.juicefs.Dockerfile -t $(REGISTRY)/$(FUSE_IMAGE):$(CE_VERSION) \
--build-arg JUICEFS_REPO_REF=$(CE_JUICEFS_VERSION) --build-arg TARGETARCH=$(TARGETARCH) .
docker push $(REGISTRY)/$(FUSE_IMAGE):$(CE_VERSION)

.PHONY: fuse-ce-image-1.2
fuse-ce-image-1.2:
docker build -f fuse/fuse.ce.juicefs-1.2.Dockerfile -t $(REGISTRY)/$(FUSE_IMAGE):$(CE_VERSION) \
--build-arg JUICEFS_REPO_REF=$(CE_JUICEFS_VERSION) --build-arg TARGETARCH=$(TARGETARCH) .
docker push $(REGISTRY)/$(FUSE_IMAGE):$(CE_VERSION)

.PHONY: fuse-ce-image-buildx
fuse-ce-image-buildx:
docker buildx build -f fuse/fuse.ce.juicefs.Dockerfile -t $(REGISTRY)/$(FUSE_IMAGE):$(CE_VERSION) \
--build-arg=JUICEFS_REPO_REF=$(CE_JUICEFS_VERSION) \
--platform linux/amd64,linux/arm64 . --push

.PHONY: fuse-ee-image
fuse-ee-image:
docker build -f fuse/fuse.ee.juicefs.Dockerfile -t $(REGISTRY)/$(FUSE_IMAGE):$(EE_VERSION) \
--build-arg=JFS_AUTO_UPGRADE=disabled --build-arg JFSCHAN=$(JFS_CHAN) --build-arg TARGETARCH=$(TARGETARCH) .
docker push $(REGISTRY)/$(FUSE_IMAGE):$(EE_VERSION)

.PHONY: fuse-ee-image-buildx
fuse-ee-image-buildx:
docker buildx build -f fuse/fuse.ee.juicefs.Dockerfile -t $(REGISTRY)/$(FUSE_IMAGE):$(EE_VERSION) \
--build-arg JFSCHAN=$(JFS_CHAN) \
--platform linux/amd64,linux/arm64 . --push

.PHONY: fuse-ee-image-4.0-buildx
fuse-ee-image-4.0-buildx:
docker buildx build -f fuse/fuse.ee.juicefs-4.0.Dockerfile -t $(REGISTRY)/$(FUSE_IMAGE):$(EE_VERSION) \
--build-arg JFSCHAN=$(JFS_CHAN) \
--platform linux/amd64,linux/arm64 . --push

################# JuiceFS image for dashboard #######################
.PHONY: dashboard-build
dashboard-build:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# Copyright 2018 The Kubernetes Authors.
#
# Licensed 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 golang:1.19-buster as binaryimage

ARG GOPROXY
Expand All @@ -22,18 +36,15 @@ RUN apt-get update && apt-get install -y musl-tools upx-ucl librados-dev libceph
mv juicefs /usr/local/bin/juicefs

# ----------

FROM debian:buster-slim
ARG TARGETARCH
COPY --from=binaryimage /usr/local/bin/juicefs /usr/local/bin/juicefs
RUN apt-get update && apt-get install -y wget librados-dev fuse3 gnupg2 curl openssh-server openssh-client
RUN apt-get update && apt-get install -y wget librados-dev fuse3 gnupg2 curl
RUN bash -c "if [[ ${TARGETARCH} == amd64 ]]; then mkdir -p /home/travis/.m2 && \
wget -O /home/travis/.m2/foundationdb-clients_6.3.23-1_${TARGETARCH}.deb https://github.com/apple/foundationdb/releases/download/6.3.23/foundationdb-clients_6.3.23-1_${TARGETARCH}.deb && \
dpkg -i /home/travis/.m2/foundationdb-clients_6.3.23-1_${TARGETARCH}.deb && \
wget -O - https://download.gluster.org/pub/gluster/glusterfs/10/rsa.pub | apt-key add - && \
echo deb [arch=${TARGETARCH}] https://download.gluster.org/pub/gluster/glusterfs/10/LATEST/Debian/buster/${TARGETARCH}/apt buster main > /etc/apt/sources.list.d/gluster.list && \
apt-get update && apt-get install -y uuid-dev libglusterfs-dev glusterfs-common; fi"
RUN mkdir /var/run/sshd
RUN ln -s /usr/local/bin/juicefs /bin/mount.juicefs && /usr/local/bin/juicefs --version
ENV K8S_VERSION v1.14.8
RUN curl -o /usr/local/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION}/bin/linux/${TARGETARCH}/kubectl && chmod +x /usr/local/bin/kubectl
54 changes: 0 additions & 54 deletions docker/ce.juicefs-1.2.Dockerfile

This file was deleted.

24 changes: 16 additions & 8 deletions docker/ce.juicefs.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

FROM golang:1.19-buster as binaryimage
FROM golang:1.20-buster as binaryimage

ARG GOPROXY
ARG TARGETARCH
Expand All @@ -25,26 +25,34 @@ RUN bash -c "if [[ ${TARGETARCH} == amd64 ]]; then mkdir -p /home/travis/.m2 &&
dpkg -i /home/travis/.m2/foundationdb-clients_6.3.23-1_${TARGETARCH}.deb && \
wget -O - https://download.gluster.org/pub/gluster/glusterfs/10/rsa.pub | apt-key add - && \
echo deb [arch=${TARGETARCH}] https://download.gluster.org/pub/gluster/glusterfs/10/LATEST/Debian/buster/${TARGETARCH}/apt buster main > /etc/apt/sources.list.d/gluster.list && \
apt-get update && apt-get install -y uuid-dev libglusterfs-dev glusterfs-common; fi"
wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add - && \
echo deb https://download.ceph.com/debian-15.2.17/ buster main | tee /etc/apt/sources.list.d/ceph.list && \
apt-get update && apt-get install -y uuid-dev libglusterfs-dev glusterfs-common librados2 librados-dev; fi"

WORKDIR /workspace
ENV GOPROXY=${GOPROXY:-https://proxy.golang.org}
RUN apt-get update && apt-get install -y musl-tools upx-ucl librados-dev libcephfs-dev librbd-dev && \
RUN apt-get update && apt-get install -y musl-tools upx-ucl && \
cd /workspace && git clone --branch=$JUICEFS_REPO_BRANCH $JUICEFS_REPO_URL && \
cd juicefs && git checkout $JUICEFS_REPO_REF && go get github.com/ceph/[email protected] && go mod tidy && \
bash -c "if [[ ${TARGETARCH} == amd64 ]]; then make juicefs.all && mv juicefs.all juicefs && upx juicefs; else make juicefs.ceph && mv juicefs.ceph juicefs; fi" && \
cd juicefs && git checkout $JUICEFS_REPO_REF && \
bash -c "if [[ ${TARGETARCH} == amd64 ]]; then make juicefs.all && mv juicefs.all juicefs && upx juicefs; else make juicefs; fi" && \
mv juicefs /usr/local/bin/juicefs

# ----------

FROM debian:buster-slim
ARG TARGETARCH
COPY --from=binaryimage /usr/local/bin/juicefs /usr/local/bin/juicefs
RUN apt-get update && apt-get install -y wget librados-dev fuse3 gnupg2 curl
RUN apt-get update && apt-get install -y wget fuse3 gnupg2 curl procps iputils-ping strace iproute2 net-tools tcpdump lsof openssh-server openssh-client
RUN bash -c "if [[ ${TARGETARCH} == amd64 ]]; then mkdir -p /home/travis/.m2 && \
wget -O /home/travis/.m2/foundationdb-clients_6.3.23-1_${TARGETARCH}.deb https://github.com/apple/foundationdb/releases/download/6.3.23/foundationdb-clients_6.3.23-1_${TARGETARCH}.deb && \
dpkg -i /home/travis/.m2/foundationdb-clients_6.3.23-1_${TARGETARCH}.deb && \
wget -O - https://download.gluster.org/pub/gluster/glusterfs/10/rsa.pub | apt-key add - && \
echo deb [arch=${TARGETARCH}] https://download.gluster.org/pub/gluster/glusterfs/10/LATEST/Debian/buster/${TARGETARCH}/apt buster main > /etc/apt/sources.list.d/gluster.list && \
apt-get update && apt-get install -y uuid-dev libglusterfs-dev glusterfs-common; fi"
wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add - && \
echo deb https://download.ceph.com/debian-15.2.17/ buster main | tee /etc/apt/sources.list.d/ceph.list && \
apt-get update && apt-get install -y uuid-dev libglusterfs-dev glusterfs-common librados2 librados-dev; fi"
RUN mkdir /var/run/sshd

RUN ln -s /usr/local/bin/juicefs /bin/mount.juicefs && /usr/local/bin/juicefs --version
ENV K8S_VERSION v1.14.8
RUN curl -o /usr/local/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION}/bin/linux/${TARGETARCH}/kubectl && chmod +x /usr/local/bin/kubectl
Loading
Loading