Skip to content

Release

Release #522

Workflow file for this run

name: release
on:
push:
tags:
- v[0-9]+.[0-9]+.[0-9]+*
schedule:
# Run daily sanity check at 22:08 clock UTC
- cron: "8 22 * * *"
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
jobs:
build-nydus-rs:
runs-on: ubuntu-latest
strategy:
matrix:
arch: [amd64, arm64]
steps:
- uses: actions/checkout@v2
- name: Cache cargo
uses: Swatinem/rust-cache@v1
with:
target-dir: |
./target-fusedev
./target-virtiofs
cache-on-failure: true
key: ${{ runner.os }}-cargo-${{ matrix.arch }}
- name: Build nydus-rs
run: |
declare -A rust_arch_map=( ["amd64"]="x86_64" ["arm64"]="aarch64")
arch=${rust_arch_map[${{ matrix.arch }}]}
cargo install cross
rustup component add rustfmt && rustup component add clippy
make -e ARCH=$arch -e CARGO=cross static-release
sudo mv target-fusedev/$arch-unknown-linux-musl/release/nydusd nydusd-fusedev
sudo mv target-fusedev/$arch-unknown-linux-musl/release/nydus-image .
sudo mv target-fusedev/$arch-unknown-linux-musl/release/nydusctl .
sudo mv target-virtiofs/$arch-unknown-linux-musl/release/nydusd nydusd-virtiofs
sudo cp -r misc/configs .
sudo chown -R $(id -un):$(id -gn) . ~/.cargo/
- name: store-artifacts
uses: actions/upload-artifact@v2
with:
name: nydus-artifacts-${{ matrix.arch }}
path: |
nydusd-fusedev
nydusd-virtiofs
nydus-image
nydusctl
configs
build-contrib:
runs-on: ubuntu-latest
strategy:
matrix:
arch: [amd64, arm64]
env:
DOCKER: false
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: '1.17'
- name: cache go mod
uses: actions/cache@v2
with:
path: /go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/contrib/nydusify/go.sum', '**/contrib/ctr-remote/go.sum', '**/contrib/docker-nydus-graphdriver/go.sum', '**/contrib/nydus-overlayfs/go.sum') }}
restore-keys: |
${{ runner.os }}-go
- name: build contrib go components
run: |
make -e GOARCH=${{ matrix.arch }} all-contrib-static-release
sudo mv contrib/ctr-remote/bin/ctr-remote .
sudo mv contrib/docker-nydus-graphdriver/bin/nydus_graphdriver .
sudo mv contrib/nydusify/cmd/nydusify .
sudo mv contrib/nydus-overlayfs/bin/nydus-overlayfs .
- name: store-artifacts
uses: actions/upload-artifact@v2
with:
name: nydus-artifacts-${{ matrix.arch }}
path: |
ctr-remote
nydus_graphdriver
nydusify
nydus-overlayfs
containerd-nydus-grpc
upload-artifacts:
runs-on: ubuntu-latest
strategy:
matrix:
arch: [amd64, arm64]
needs: [build-nydus-rs, build-contrib]
steps:
- uses: actions/checkout@v2
- name: install hub
run: |
HUB_VER=$(curl -s "https://api.github.com/repos/github/hub/releases/latest" | jq -r .tag_name | sed 's/^v//')
wget -q -O- https://github.com/github/hub/releases/download/v$HUB_VER/hub-linux-amd64-$HUB_VER.tgz | \
tar xz --strip-components=2 --wildcards '*/bin/hub'
sudo mv hub /usr/local/bin/hub
- name: download artifacts
uses: actions/download-artifact@v2
with:
name: nydus-artifacts-${{ matrix.arch }}
path: nydus-static
- name: upload artifacts
if: ${{ github.event_name == 'push' }}
run: |
tag=$(echo $GITHUB_REF | cut -d/ -f3-)
tarball="nydus-static-$tag-linux-${{ matrix.arch }}.tgz"
chmod +x nydus-static/*
tar cf - nydus-static | gzip > ${tarball}
echo "tag=$tag" >> $GITHUB_ENV
echo "tarball=$tarball" >> $GITHUB_ENV
- name: Release
uses: softprops/action-gh-release@v1
with:
name: "Nydus Image Service ${{ env.tag }}"
generate_release_notes: true
files:
${{ env.tarball }}