Skip to content

Bump up vineyard version to v0.23.0 #491

Bump up vineyard version to v0.23.0

Bump up vineyard version to v0.23.0 #491

# Copyright 2020-2023 Alibaba Group Holding Limited.
#
# 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.
name: Build Packages for Linux
on:
push:
tags:
- 'v*'
workflow_dispatch:
concurrency:
group: ${{ github.repository }}-${{ github.event.number || github.head_ref || github.sha }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
build-vineyardd:
runs-on: ${{ matrix.os }}
if: ${{ github.repository == 'v6d-io/v6d' || github.event_name == 'workflow_dispatch' }}
strategy:
matrix:
os: [ubuntu-20.04]
platform: [x86_64, aarch64]
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Log in to GitHub Docker Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up qemu
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build vineyardd on Linux
env:
ALPINE_VERSION: "${{ github.sha }}"
run: |
make -C docker/ vineyardd ALPINE_VERSION=$ALPINE_VERSION PLATFORM=${{ matrix.platform }}
docker run --rm \
-v `pwd`:/target ghcr.io/v6d-io/v6d/vineyardd:alpine-${ALPINE_VERSION}_${{ matrix.platform }} \
sh -c "cp /usr/local/bin/vineyardd /target/"
# ldd ./vineyardd
- name: Package vineyardd artifact on Linux
run: |
sha512sum ./vineyardd > vineyardd.${{ matrix.platform }}.${{ github.sha }}.sha512sum
echo "Checksum is: "
cat ./*.sha512sum
tar zcvfh vineyardd.${{ runner.os }}-${{ matrix.platform }}.${{ github.sha }}.tar.gz ./vineyardd vineyardd.${{ matrix.platform }}.${{ github.sha }}.sha512sum
- name: Upload docker image as nightly
if: ${{ github.event_name == 'workflow_dispatch' && github.repository == 'v6d-io/v6d' }}
run: |
docker push ghcr.io/v6d-io/v6d/vineyardd:alpine-${{ github.sha }}_${{ matrix.platform }}
- name: Extract tag name
id: tag
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'v6d-io/v6d' }}
run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Tag and upload docker for releases
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'v6d-io/v6d' }}
run: |
docker tag ghcr.io/v6d-io/v6d/vineyardd:alpine-${{ github.sha }}_${{ matrix.platform }} \
ghcr.io/v6d-io/v6d/vineyardd:alpine-${{ steps.tag.outputs.TAG }}_${{ matrix.platform }}
docker tag ghcr.io/v6d-io/v6d/vineyardd:alpine-${{ github.sha }}_${{ matrix.platform }} \
ghcr.io/v6d-io/v6d/vineyardd:${{ steps.tag.outputs.TAG }}_${{ matrix.platform }}
docker tag ghcr.io/v6d-io/v6d/vineyardd:alpine-${{ github.sha }}_${{ matrix.platform }} \
ghcr.io/v6d-io/v6d/vineyardd:alpine-latest_${{ matrix.platform }}
docker tag ghcr.io/v6d-io/v6d/vineyardd:alpine-${{ github.sha }}_${{ matrix.platform }} \
ghcr.io/v6d-io/v6d/vineyardd:latest_${{ matrix.platform }}
docker push ghcr.io/v6d-io/v6d/vineyardd:alpine-${{ steps.tag.outputs.TAG }}_${{ matrix.platform }}
docker push ghcr.io/v6d-io/v6d/vineyardd:${{ steps.tag.outputs.TAG }}_${{ matrix.platform }}
docker push ghcr.io/v6d-io/v6d/vineyardd:alpine-latest_${{ matrix.platform }}
docker push ghcr.io/v6d-io/v6d/vineyardd:latest_${{ matrix.platform }}
- name: Upload CI artifacts
uses: actions/upload-artifact@v3
with:
name: vineyardd.${{ runner.os }}-${{ matrix.platform }}.${{ github.sha }}.tar.gz
path: vineyardd.${{ runner.os }}-${{ matrix.platform }}.${{ github.sha }}.tar.gz
build-vineyardd-manifest:
needs: [build-vineyardd]
runs-on: ${{ matrix.os }}
if: ${{ github.repository == 'v6d-io/v6d' || github.event_name == 'workflow_dispatch' }}
strategy:
matrix:
os: [ubuntu-20.04]
steps:
- uses: actions/checkout@v3
with:
submodules: false
- name: Log in to GitHub Docker Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Generate multi-arch manifest
if: ${{ github.event_name == 'workflow_dispatch' && github.repository == 'v6d-io/v6d' }}
run: |
make -C docker/ vineyardd-manifest ALPINE_VERSION=${{ github.sha }}
docker manifest push ghcr.io/v6d-io/v6d/vineyardd:alpine-${{ github.sha }}
- name: Extract tag name
id: tag
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'v6d-io/v6d' }}
run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Tag and upload manifest for releases
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'v6d-io/v6d' }}
run: |
make -C docker/ vineyardd-manifest ALPINE_VERSION=${{ steps.tag.outputs.TAG }}
docker manifest push ghcr.io/v6d-io/v6d/vineyardd:alpine-${{ steps.tag.outputs.TAG }}
make -C docker/ vineyardd-manifest ALPINE_MANIFEST_TAG=latest
docker manifest push ghcr.io/v6d-io/v6d/vineyardd:latest
build-vineyard-fluid-fuse:
needs: [build-vineyardd]
runs-on: ${{ matrix.os }}
if: ${{ github.repository == 'v6d-io/v6d' || github.event_name == 'workflow_dispatch' }}
strategy:
matrix:
os: [ubuntu-20.04]
platform: [x86_64, aarch64]
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Log in to GitHub Docker Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up qemu
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build vineyard fluid fuse image
env:
VINEYARD_FLUID_FUSE_VERSION: "${{ github.sha }}"
run: |
make -C docker/ vineyard-fluid-fuse VINEYARD_FLUID_FUSE_VERSION=$VINEYARD_FLUID_FUSE_VERSION PLATFORM=${{ matrix.platform }}
- name: Extract tag name
id: tag
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'v6d-io/v6d' }}
run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Tag and upload docker for releases
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'v6d-io/v6d' }}
run: |
docker tag ghcr.io/v6d-io/v6d/vineyard-fluid-fuse:${{ github.sha }}_${{ matrix.platform }} \
ghcr.io/v6d-io/v6d/vineyard-fluid-fuse:${{ steps.tag.outputs.TAG }}_${{ matrix.platform }}
docker tag ghcr.io/v6d-io/v6d/vineyard-fluid-fuse:${{ github.sha }}_${{ matrix.platform }} \
ghcr.io/v6d-io/v6d/vineyard-fluid-fuse:latest_${{ matrix.platform }}
docker push ghcr.io/v6d-io/v6d/vineyard-fluid-fuse:${{ github.sha }}_${{ matrix.platform }}
docker push ghcr.io/v6d-io/v6d/vineyard-fluid-fuse:${{ steps.tag.outputs.TAG }}_${{ matrix.platform }}
docker push ghcr.io/v6d-io/v6d/vineyard-fluid-fuse:latest_${{ matrix.platform }}
build-vineyard-fluid-fuse-manifest:
needs: [build-vineyard-fluid-fuse]
runs-on: ${{ matrix.os }}
if: ${{ github.repository == 'v6d-io/v6d' || github.event_name == 'workflow_dispatch' }}
strategy:
matrix:
os: [ubuntu-20.04]
steps:
- uses: actions/checkout@v3
with:
submodules: false
- name: Log in to GitHub Docker Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Generate multi-arch manifest
if: ${{ github.event_name == 'workflow_dispatch' && github.repository == 'v6d-io/v6d' }}
run: |
make -C docker/ vineyard-fluid-fuse-manifest VINEYARD_FLUID_FUSE_VERSION=${{ github.sha }}
docker manifest push ghcr.io/v6d-io/v6d/vineyard-fluid-fuse:${{ github.sha }}
- name: Extract tag name
id: tag
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'v6d-io/v6d' }}
run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Tag and upload manifest for releases
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'v6d-io/v6d' }}
run: |
make -C docker/ vineyard-fluid-fuse-manifest VINEYARD_FLUID_FUSE_VERSION=${{ steps.tag.outputs.TAG }}
docker manifest push ghcr.io/v6d-io/v6d/vineyard-fluid-fuse:${{ steps.tag.outputs.TAG }}
make -C docker/ vineyard-fluid-fuse-manifest VINEYARD_FLUID_FUSE_VERSION=latest
docker manifest push ghcr.io/v6d-io/v6d/vineyard-fluid-fuse:latest
build-vineyardctl:
runs-on: ${{ matrix.os }}
if: ${{ github.repository == 'v6d-io/v6d' || github.event_name == 'workflow_dispatch' }}
strategy:
matrix:
os: [ubuntu-20.04]
platform: [x86_64, aarch64]
steps:
- uses: actions/checkout@v3
with:
submodules: false
- uses: actions/setup-go@v3
with:
go-version: 1.19
- name: Extract tag name
id: tag
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'v6d-io/v6d' }}
run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Build vineyardctl
run: |
export arch="${{ matrix.platform }}"
export arch="${arch/x86_64/amd64}"
export arch="${arch/aarch64/arm64}"
echo "arch = $arch"
env CGO_ENABLED=0 GOARCH=$arch go build -a -o vineyardctl k8s/cmd/main.go
sudo apt-get update -y
sudo apt-get install -y binutils-x86-64-linux-gnu binutils-aarch64-linux-gnu upx-ucl|| true
x86_64-linux-gnu-strip ./vineyardctl || true
aarch64-linux-gnu-strip ./vineyardctl || true
upx -9 ./vineyardctl || true
- name: Upload vineyardctl to tagged release
uses: svenstaro/upload-release-action@v2
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'v6d-io/v6d' }}
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ./vineyardctl
asset_name: vineyardctl-${{ steps.tag.outputs.TAG }}-linux-${{ matrix.platform == 'x86_64' && 'amd64' || 'arm64' }}
file_glob: false
tag: ${{ steps.tag.outputs.TAG }}
prerelease: false
overwrite: true
body: "vineyard ${{ steps.tag.outputs.TAG }}"
- name: Package vineyardctl artifact on Linux
run: |
sha512sum vineyardctl > vineyardctl.${{ matrix.platform }}.${{ github.sha }}.sha512sum
echo "Checksum is: "
cat ./*.sha512sum
tar zcvfh vineyardctl.${{ runner.os }}-${{ matrix.platform }}.${{ github.sha }}.tar.gz ./vineyardctl vineyardctl.${{ matrix.platform }}.${{ github.sha }}.sha512sum
- name: Upload CI artifacts
uses: actions/upload-artifact@v3
with:
name: vineyardctl.${{ runner.os }}-${{ matrix.platform }}.${{ github.sha }}.tar.gz
path: vineyardctl.${{ runner.os }}-${{ matrix.platform }}.${{ github.sha }}.tar.gz
build-bdist-wheels:
needs: [build-vineyardd, build-vineyardctl]
runs-on: ${{ matrix.os }}
if: ${{ github.repository == 'v6d-io/v6d' || github.event_name == 'workflow_dispatch' }}
strategy:
matrix:
os: [ubuntu-20.04]
platform: [x86_64, aarch64]
steps:
- uses: actions/checkout@v3
with:
submodules: false
- name: Download vineyardd artifacts
uses: actions/download-artifact@v3
with:
name: vineyardd.${{ runner.os }}-${{ matrix.platform }}.${{ github.sha }}.tar.gz
- name: Download vineyardctl artifacts
uses: actions/download-artifact@v3
with:
name: vineyardctl.${{ runner.os }}-${{ matrix.platform }}.${{ github.sha }}.tar.gz
- name: Prepare binary
run: |
tar zxvf vineyardd.${{ runner.os }}-${{ matrix.platform }}.${{ github.sha }}.tar.gz
tar zxvf vineyardctl.${{ runner.os }}-${{ matrix.platform }}.${{ github.sha }}.tar.gz
mv vineyardd python/vineyard/bdist/vineyardd
mv vineyardctl python/vineyard/bdist/vineyardctl
- name: Build wheel package on Linux
run: |
python3 setup_bdist.py bdist_wheel --plat=manylinux2014_${{ matrix.platform }}
mv dist fixed_wheels
- name: Extract tag name
id: tag
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') }}
run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Upload wheels to tagged release
uses: svenstaro/upload-release-action@v2
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'v6d-io/v6d' }}
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: fixed_wheels/*.whl
file_glob: true
tag: ${{ steps.tag.outputs.TAG }}
prerelease: false
overwrite: true
body: "vineyard ${{ steps.tag.outputs.TAG }}"
- uses: actions/upload-artifact@v3
if: ${{ github.event_name == 'workflow_dispatch' }}
with:
name: vineyard-bdist-linux-${{ matrix.platform }}-wheels
path: fixed_wheels/*.whl
build-wheels:
runs-on: ${{ matrix.os }}
if: ${{ github.repository == 'v6d-io/v6d' || github.event_name == 'workflow_dispatch' }}
strategy:
matrix:
os: [ubuntu-20.04]
platform: [x86_64, aarch64]
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Generate Summary for Submodules
run: |
git submodule > git-modules.txt
cat git-modules.txt
- name: Log in to GitHub Docker Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up qemu
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Cache for cccahe
uses: actions/cache@v3
with:
path: ~/.ccache
key: ${{ matrix.os }}-${{ matrix.python }}-ccache-${{ hashFiles('**/git-modules.txt') }}
restore-keys: |
${{ matrix.os }}-${{ matrix.python }}-ccache-
- name: Build wheel package on Linux
env:
WHEEL_VERSION: "${{ github.sha }}"
run: |
mkdir -p fixed_wheels
for py in cp36-cp36m cp37-cp37m cp38-cp38 cp39-cp39 cp310-cp310 cp311-cp311 cp312-cp312; do
make -C docker/ python-wheel WHEEL_PYTHON=$py WHEEL_VERSION=$WHEEL_VERSION PLATFORM=${{ matrix.platform }}
docker run --rm \
-v `pwd`/fixed_wheels:/target \
ghcr.io/v6d-io/v6d/vineyard-wheel:${WHEEL_VERSION}_${py}_${{ matrix.platform }} \
sh -c "cp -r /work/fixed_wheels/* /target/"
done
ls -la ./fixed_wheels/
- name: Extract tag name
id: tag
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') }}
run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Upload wheels to tagged release
uses: svenstaro/upload-release-action@v2
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'v6d-io/v6d' }}
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: fixed_wheels/*.whl
file_glob: true
tag: ${{ steps.tag.outputs.TAG }}
prerelease: false
overwrite: true
body: "vineyard ${{ steps.tag.outputs.TAG }}"
- uses: actions/upload-artifact@v3
if: ${{ github.event_name == 'workflow_dispatch' }}
with:
name: vineyard-linux-${{ matrix.platform }}-wheels
path: fixed_wheels/*.whl