Compare commits

...

11 Commits

Author SHA1 Message Date
Archana Shinde
d8ed81d3d6 add more debug for listing dir
Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-14 08:26:36 -08:00
Archana Shinde
b3b4dd0066 Move step to move code in script
Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-13 18:40:12 -08:00
Archana Shinde
8b202ae427 Install kernel requirements
Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-13 18:21:21 -08:00
Archana Shinde
7db2138b1d pull from amshinde packaging repo
Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-13 18:13:12 -08:00
Archana Shinde
a8d728e407 Move to script
Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-13 17:57:25 -08:00
Archana Shinde
041a22eb14 dedup script
Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-13 14:56:09 -08:00
Archana Shinde
6718d5ce02 actions: Add job to upload tarball to release page
Once kata-deploy completes successfully, this job will upload
kata static tarball to the release page using GIT_UPLOAD_TOKEN
secret.

Signed-off-by: Jose Carlos Venegas Munoz<jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-11-13 09:32:53 -08:00
Eric Ernst
fc3cc6e3c2 workflows: add release workflow
Many changes introduced by Archana Shinde.

This workflow will:
 1. get a list of artifacts from the packaging repo
 2. In parallel, build each of the applicable artifacts
 3. Consolidate the build artifacts from <2>
 4. Test the artifacts in a docker image on AKS
 5. Push the verified docker image to dockerhub

Status:
 - needs snap support (todo: Julio)
 - needs support for pushing to GH releases page (todo:Carlos)
 - needs to use kata-containers branches of packaging once the
prerequisite commits land there (todo: Eric
 - should push to katacontainers dockerhub, once flow is verified (todo:
Eric)
 - needs secrets added to kata-containers/kata-containers, once we are
ready to merge there (todo: Eric)

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-11-13 09:30:21 -08:00
Eric Ernst
6495405031 do-not-merge: helper trigger for re-applying label for testing
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-31 16:50:25 -07:00
Eric Ernst
39ea39847f do-not-merge: add kata-deploy.yaml to test just second half of release process
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-31 16:50:25 -07:00
Eric Ernst
7fda3db442 workflows: add release workflow
Many changes introduced by Archana Shinde.

This workflow will:
 1. get a list of artifacts from the packaging repo
 2. In parallel, build each of the applicable artifacts
 3. Consolidate the build artifacts from <2>
 4. Test the artifacts in a docker image on AKS
 5. Push the verified docker image to dockerhub

Status:
 - needs snap support (todo: Julio)
 - needs support for pushing to GH releases page (todo:Carlos)

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2019-10-31 16:50:25 -07:00
5 changed files with 526 additions and 0 deletions

47
.github/workflows/dedup-jobs.yaml vendored Normal file
View File

@@ -0,0 +1,47 @@
on:
push
jobs:
get-artifact-list:
runs-on: ubuntu-latest
steps:
- name: get the list
run: |
git clone https://github.com/kata-containers/packaging kata-packaging
pushd kata-packaging
tag=`echo $GITHUB_REF | cut -d/ -f3-`
git checkout master
popd
./kata-packaging/artifact-list.sh > artifact-list.txt
cat artifact-list.txt
- name: save-artifact-list
uses: actions/upload-artifact@master
with:
name: artifact-list
path: artifact-list.txt
build-kernel:
runs-on: ubuntu-16.04
needs: get-artifact-list
steps:
- uses: actions/checkout@v1
- name: get-artifact-list
uses: actions/download-artifact@master
with:
name: artifact-list
- run: |
sudo apt-get update && sudo apt install -y flex bison libelf-dev bc iptables
- name: build-kernel
run: |
if grep -q "install_kernel" ./artifact-list/artifact-list.txt; then
$GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh "install_kernel" $GITHUB_REF
echo ::set-env name=artifact-built::true
ls -la $GITHUB_WORKSPACE
else
echo ::set-env name=artifact-built::false
fi
- name: store-artifacts
if: env.artifact-built == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
path: kata-static-kernel.tar.gz

View File

@@ -0,0 +1,61 @@
#!/bin/bash
# Copyright (c) 2018 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
[ -z "${DEBUG}" ] || set -x
set -o errexit
#set -o nounset
set -o pipefail
main() {
artifact_stage=${1:-}
artifact=$(echo ${artifact_stage} | sed -n -e 's/^install_//p' | sed -r 's/_/-/g')
if [ -z "${artifact}" ]; then
"Scripts needs artifact name to build"
exit 1
fi
github_ref=${2:-}
if [ -z "${github_ref}" ]; then
"Scripts needs github reference to build"
exit 1
fi
tag=`echo ${github_ref} | cut -d/ -f3-`
export GOPATH=$HOME/go
echo tag: "$tag"
echo artifact "$artifact"
echo artifact_stage "$artifact_stage"
#tag="1.9.0-rc0"
export GOPATH=$HOME/go
#go get github.com/kata-containers/packaging || true
go get github.com/amshinde/kata-packaging || true
#pushd $GOPATH/src/github.com/kata-containers/packaging/release >>/dev/null
pushd $GOPATH/src/github.com/amshinde/kata-packaging/release >>/dev/null
git checkout $tag
#git checkout master
pushd ../obs-packaging
echo "Running gen_versions_txt.sh with tag $tag"
./gen_versions_txt.sh $tag
popd
echo Directory for running deploy script: $pwd
ls -la
source ./kata-deploy-binaries.sh
${artifact_stage}
echo "Dir while doing final pop:" $pwd
popd
echo "Done installing"
echo PWD, should be top dir: $pwd
ls -la
#mv $HOME/go/src/github.com/kata-containers/packaging/release/kata-kernel.tar.gz .
mv $HOME/go/src/github.com/amshinde/kata-packaging/release/kata-static-${artifact}.tar.gz .
}
main $@

34
.github/workflows/kata-deploy.yaml vendored Normal file
View File

@@ -0,0 +1,34 @@
#on: push
name: Build, Test, and Publish kata-deploy
jobs:
kata-deploy:
runs-on: ubuntu-latest
steps:
- name: build-and-push-kata-deploy-ci
run: |
git clone https://github.com/amshinde/kata-packaging
pushd ./kata-packaging
git checkout 1.9.0-rc0
pkg_sha=$(git rev-parse HEAD)
popd
wget -q https://github.com/kata-containers/runtime/releases/download/1.9.0-rc0/kata-static-1.9.0-rc0-x86_64.tar.xz
mv kata-static-1.9.0-rc0-x86_64.tar.xz ./kata-packaging/kata-deploy/kata-static.tar.xz
docker build --build-arg KATA_ARTIFACTS=kata-static.tar.xz -t katadocker/kata-deploy-ci:$pkg_sha ./kata-packaging/kata-deploy
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker push katadocker/kata-deploy-ci:$pkg_sha
echo ::set-env name=PKG_SHA::$pkg_sha
- name: test-kata-deploy-ci-in-aks
uses: ./kata-packaging/kata-deploy/action
with:
packaging-sha: env.PKG_SHA
env:
PKG_SHA: ${{ env.PKG_SHA }}
AZ_APPID: ${{ secrets.AZ_APPID }}
AZ_PASSWORD: ${{ secrets.AZ_PASSWORD }}
AZ_SUBSCRIPTION_ID: ${{ secrets.AZ_SUBSCRIPTION_ID }}
AZ_TENANT_ID: ${{ secrets.AZ_TENANT_ID }}
- name: did-we-make-it
run: |
echo "weeee"

374
.github/workflows/main.yaml vendored Normal file
View File

@@ -0,0 +1,374 @@
#on:
# push:
# tags:
# - '*'
jobs:
get-artifact-list:
runs-on: ubuntu-latest
steps:
- name: get the list
run: |
git clone https://github.com/kata-containers/packaging
pushd kata-packaging
tag=`echo $GITHUB_REF | cut -d/ -f3-`
git checkout $tag
popd
./kata-packaging/artifact-list.sh > artifact-list.txt
- name: save-artifact-list
uses: actions/upload-artifact@master
with:
name: artifact-list
path: artifact-list.txt
build-kernel:
runs-on: ubuntu-16.04
needs: get-artifact-list
steps:
- name: get-artifact-list
uses: actions/download-artifact@master
with:
name: artifact-list
- name: build-kernel
run: |
if grep -q "install_kernel" ./artifact-list/artifact-list.txt; then
# install kernel dependencies
sudo apt-get update && sudo apt install -y flex bison libelf-dev bc iptables
export GOPATH=$HOME/go
go get github.com/kata-containers/packaging || true
pushd $GOPATH/src/github.com/kata-containers/packaging/release >>/dev/null
# Get versions information
tag=`echo $GITHUB_REF | cut -d/ -f3-`
git checkout $tag
pushd ../obs-packaging
./gen_versions_txt.sh $tag
popd
# Build the kernel:
source ./kata-deploy-binaries.sh
install_kernel
echo ::set-env name=artifact-built::true
popd >>/dev/null
mv $HOME/go/src/github.com/kata-containers/packaging/release/kata-kernel.tar.gz .
else
echo ::set-env name=artifact-built::false
fi
- name: store-artifacts
if: env.artifact-built == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
path: kata-kernel.tar.gz
build-experimental-kernel:
runs-on: ubuntu-16.04
needs: get-artifact-list
steps:
- name: get-artifact-list
uses: actions/download-artifact@master
with:
name: artifact-list
- name: build-experimental-kernel
run: |
if grep -q "install_experimental_kernel" ./artifact-list/artifact-list.txt; then
# install kernel dependencies
sudo apt-get update && sudo apt install -y flex bison libelf-dev bc iptables
export GOPATH=$HOME/go
go get github.com/kata-containers/packaging || true
pushd $GOPATH/src/github.com/kata-containers/packaging/release >>/dev/null
# Get versions information
tag=`echo $GITHUB_REF | cut -d/ -f3-`
git checkout $tag
../obs-packaging/gen_versions_txt.sh $tag
# Build the kernel:
source ./kata-deploy-binaries.sh
install_experimental_kernel
echo ::set-env name=artifact-built::true
popd >>/dev/null
mv $HOME/go/src/github.com/kata-containers/packaging/release/kata-kernel-experimental.tar.gz .
else
echo ::set-env name=artifact-built::false
fi
- name: store-artifacts
if: env.artifact-built == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
path: kata-kernel-experimental.tar.gz
# Job for building the QEMU binaries
build-qemu:
runs-on: ubuntu-16.04
needs: get-artifact-list
steps:
- name: get-artifact-list
uses: actions/download-artifact@master
with:
name: artifact-list
- name: build-qemu
run: |
if grep -q "install_qemu" ./artifact-list/artifact-list.txt; then
export GOPATH=$HOME/go
go get github.com/kata-containers/packaging || true
pushd $GOPATH/src/github.com/kata-containers/packaging/release >>/dev/null
# Get versions information
tag=`echo $GITHUB_REF | cut -d/ -f3-`
git checkout $tag
../obs-packaging/gen_versions_txt.sh $tag
# Build the VMM:
source ./kata-deploy-binaries.sh
install_qemu
echo ::set-env name=artifact-built::true
popd >>/dev/null
mv $HOME/go/src/github.com/kata-containers/packaging/release/kata-qemu-static.tar.gz .
else
echo ::set-env name=artifact-built::false
fi
- name: store-artifacts
if: env.artifact-built == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
path: kata-qemu-static.tar.gz
# Job for building the QEMU binaries with virtiofs support
build-qemu-virtiofsd:
runs-on: ubuntu-16.04
needs: get-artifact-list
steps:
- name: get-artifact-list
uses: actions/download-artifact@master
with:
name: artifact-list
- name: build-qemu-virtiofsd
run: |
if grep -q "install_qemu_virtiofsd" ./artifact-list/artifact-list.txt; then
export GOPATH=$HOME/go
go get github.com/kata-containers/packaging || true
pushd $GOPATH/src/github.com/kata-containers/packaging/release >>/dev/null
# Get versions information
tag=`echo $GITHUB_REF | cut -d/ -f3-`
git checkout $tag
../obs-packaging/gen_versions_txt.sh $tag
# Build the VMM:
source ./kata-deploy-binaries.sh
install_qemu_virtiofsd
echo ::set-env name=artifact-built::true
popd >>/dev/null
mv $HOME/go/src/github.com/kata-containers/packaging/release/kata-qemu-virtiofs-static.tar.gz .
else
echo ::set-env name=artifact-built::false
fi
- name: store-artifacts
if: env.artifact-built == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
path: kata-qemu-virtiofs-static.tar.gz
# Job for building the image
build-image:
runs-on: ubuntu-16.04
needs: get-artifact-list
steps:
- name: get-artifact-list
uses: actions/download-artifact@master
with:
name: artifact-list
- name: build-image
run: |
if grep -q "install_image" ./artifact-list/artifact-list.txt; then
export GOPATH=$HOME/go
go get github.com/kata-containers/packaging || true
pushd $GOPATH/src/github.com/kata-containers/packaging/release >>/dev/null
# Get versions information
tag=`echo $GITHUB_REF | cut -d/ -f3-`
git checkout $tag
pushd ../obs-packaging
./gen_versions_txt.sh $tag
popd
# Build the VMM:
source ./kata-deploy-binaries.sh
install_image $tag
echo ::set-env name=artifact-built::true
popd >>/dev/null
mv $HOME/go/src/github.com/kata-containers/packaging/release/kata-image.tar.gz .
else
echo ::set-env name=artifact-built::false
fi
- name: store-artifacts
if: env.artifact-built == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
path: kata-image.tar.gz
# Job for building firecracker hypervisor
build-firecracker:
runs-on: ubuntu-16.04
needs: get-artifact-list
steps:
- name: get-artifact-list
uses: actions/download-artifact@master
with:
name: artifact-list
- name: build-firecracker
run: |
if grep -q "install_firecracker" ./artifact-list/artifact-list.txt; then
export GOPATH=$HOME/go
go get github.com/kata-containers/packaging || true
pushd $GOPATH/src/github.com/kata-containers/packaging/release >>/dev/null
# Get versions information
tag=`echo $GITHUB_REF | cut -d/ -f3-`
git checkout $tag
../obs-packaging/gen_versions_txt.sh $tag
# Build the VMM:
source ./kata-deploy-binaries.sh
install_firecracker
echo ::set-env name=artifact-built::true
popd >>/dev/null
mv $HOME/go/src/github.com/kata-containers/packaging/release/kata-firecracker-static.tar.gz .
else
echo ::set-env name=artifact-built::false
fi
- name: store-artifacts
if: env.artifact-built == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
path: kata-firecracker-static.tar.gz
# Job for building kata components
build-kata-components:
runs-on: ubuntu-16.04
needs: get-artifact-list
steps:
- name: get-artifact-list
uses: actions/download-artifact@master
with:
name: artifact-list
- name: build-kata-components
run: |
if grep -q "install_kata_components" ./artifact-list/artifact-list.txt; then
export GOPATH=$HOME/go
go get github.com/kata-containers/packaging || true
pushd $GOPATH/src/github.com/kata-containers/packaging/release >>/dev/null
# Get versions information
tag=`echo $GITHUB_REF | cut -d/ -f3-`
git checkout $tag
../obs-packaging/gen_versions_txt.sh $tag
# Build the VMM:
source ./kata-deploy-binaries.sh
install_kata_components $tag
echo ::set-env name=artifact-built::true
popd >>/dev/null
mv $HOME/go/src/github.com/kata-containers/packaging/release/kata-components.tar.gz .
else
echo ::set-env name=artifact-built::false
fi
- name: store-artifacts
if: env.artifact-built == 'true'
uses: actions/upload-artifact@master
with:
name: kata-artifacts
path: kata-components.tar.gz
gather-artifacts:
runs-on: ubuntu-16.04
needs: [build-kernel, build-qemu, build-qemu-virtiofsd, build-image, build-firecracker, build-kata-components]
steps:
- name: get-artifacts
uses: actions/download-artifact@master
with:
name: kata-artifacts
- name: colate-artifacts
run: |
export GOPATH=$HOME/go
go get github.com/kata-containers/packaging || true
pushd $GOPATH/src/github.com/kata-containers/packaging/release >>/dev/null
# Get versions information
tag=`echo $GITHUB_REF | cut -d/ -f3-`
popd >>/dev/null
pushd kata-artifacts >>/dev/null
for c in ./*.tar.gz
do
echo "untarring tarball $c"
tar -xvf $c
done
ls ./opt/kata/bin
ls ./opt/kata/share
tar cfJ ../kata-static.tar.xz ./opt
popd >>/dev/null
ls -l && ls kata-artifacts
- name: store-artifacts
uses: actions/upload-artifact@master
with:
name: release-candidate
path: kata-static.tar.xz
kata-deploy:
needs: gather-artifacts
runs-on: ubuntu-latest
steps:
- name: get-artifacts
uses: actions/download-artifact@master
with:
name: release-candidate
- name: build-and-push-kata-deploy-ci
run: |
tag=`echo $GITHUB_REF | cut -d/ -f3-`
git clone https://github.com/kata-containers/packaging
pushd kata-packaging
git checkout $tag
pkg_sha=$(git rev-parse HEAD)
popd
mv release-candidate/kata-static.tar.xz ./kata-packaging/kata-deploy/kata-static.tar.xz
docker build --build-arg KATA_ARTIFACTS=kata-static.tar.xz -t katadocker/kata-deploy-ci:$pkg_sha ./kata-packaging/kata-deploy
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker push katadocker/kata-deploy-ci:$pkg_sha
echo ::set-env name=PKG_SHA::$pkg_sha
echo ::set-env name=TAG::$tag
- name: test-kata-deploy-ci-in-aks
uses: ./kata-packaging/kata-deploy/action
with:
packaging-sha: env.PKG_SHA
env:
PKG_SHA: ${{ env.PKG_SHA }}
AZ_APPID: ${{ secrets.AZ_APPID }}
AZ_PASSWORD: ${{ secrets.AZ_PASSWORD }}
AZ_SUBSCRIPTION_ID: ${{ secrets.AZ_SUBSCRIPTION_ID }}
AZ_TENANT_ID: ${{ secrets.AZ_TENANT_ID }}
- name: push-tarball
run: |
# tag the container image we created and push to DockerHub
docker tag katadocker/kata-deploy-ci:${{ env.PKG_SHA }} katadocker/kata-deploy:${{ env.TAG }}
docker push katadocker/kata-deploy:${{ env.TAG }}
upload-static-tarball:
needs: gather-artifacts
needs: kata-deploy
runs-on: ubuntu-latest
steps:
- name: checkout code
uses: actions/checkout@master
- name: install-go
uses: actions/setup-go@v1
with:
go-version: '1.13.x'
- name: get-artifacts
uses: actions/download-artifact@master
with:
name: release-candidate
- name: install hub
run: |
git clone \
--config transfer.fsckobjects=false \
--config receive.fsckobjects=false \
--config fetch.fsckobjects=false \
https://github.com/github/hub.git
cd hub
sudo make install prefix=/usr/local
- name: push static tarball to github
run: |
tag=`echo $GITHUB_REF | cut -d/ -f3-`
git clone https://github.com/kata-containers/runtime.git
cd runtime
GITHUB_TOKEN=${{ secrets.GIT_UPLOAD_TOKEN }} hub release edit -m "" -a ../release-candidate/kata-static.tar.xz "${tag}"

10
.github/workflows/trigger vendored Executable file
View File

@@ -0,0 +1,10 @@
VERSION=1.9.0-rc0
pushd ~/go/src/github.com/kata-containers/packaging
git tag --delete $VERSION
git push origin :$VERSION
git tag -a $VERSION -m "test tag - $VERSION" && git push origin $VERSION
popd
git tag --delete $VERSION
git push amshinde :$VERSION
git tag -a $VERSION -m "test tag - $VERSION" && git push amshinde $VERSION