From 29c2ff8476dde77cd770074dea0c5cefda94af61 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Thu, 14 Nov 2019 17:11:26 -0800 Subject: [PATCH] release: Move bash from the actions to separate bash file Try to move all the common bash logic from the actions toml file to separate scripts and call these scripts instead. Note the repo itself is now checked out to get access to these scripts. Signed-off-by: Archana Shinde Signed-off-by: Eric Ernst --- .github/workflows/gather-artifacts.sh | 18 ++ .../workflows/generate-artifact-tarball.sh | 36 +++ .github/workflows/main.yaml | 221 ++++++------------ 3 files changed, 127 insertions(+), 148 deletions(-) create mode 100755 .github/workflows/gather-artifacts.sh create mode 100755 .github/workflows/generate-artifact-tarball.sh diff --git a/.github/workflows/gather-artifacts.sh b/.github/workflows/gather-artifacts.sh new file mode 100755 index 0000000000..db7a235be2 --- /dev/null +++ b/.github/workflows/gather-artifacts.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# Copyright (c) 2019 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 +# + +set -o errexit +set -o pipefail + +pushd kata-artifacts >>/dev/null +for c in ./*.tar.gz +do + echo "untarring tarball $c" + tar -xvf $c +done + +tar cfJ ../kata-static.tar.xz ./opt +popd >>/dev/null diff --git a/.github/workflows/generate-artifact-tarball.sh b/.github/workflows/generate-artifact-tarball.sh new file mode 100755 index 0000000000..ea5051992a --- /dev/null +++ b/.github/workflows/generate-artifact-tarball.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# Copyright (c) 2019 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 +# + +set -o errexit +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 + + tag=$(echo $GITHUB_REF | cut -d/ -f3-) + export GOPATH=$HOME/go + + go get github.com/kata-containers/packaging || true + pushd $GOPATH/src/github.com/kata-containers/packaging/release >>/dev/null + git checkout $tag + pushd ../obs-packaging + ./gen_versions_txt.sh $tag + popd + + source ./kata-deploy-binaries.sh + ${artifact_stage} $tag + popd + + mv $HOME/go/src/github.com/kata-containers/packaging/release/kata-static-${artifact}.tar.gz . +} + +main $@ diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 8a14975fe8..a67af603c5 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -17,292 +17,217 @@ jobs: ./packaging/artifact-list.sh > artifact-list.txt - name: save-artifact-list uses: actions/upload-artifact@master - with: - name: artifact-list + with: + name: artifact-list path: artifact-list.txt + build-kernel: runs-on: ubuntu-16.04 needs: get-artifact-list + env: + buildstr: "install_kernel" 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 - # 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 + if grep -q $buildstr ./artifact-list/artifact-list.txt; then + $GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr 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' + if: env.artifact-built == 'true' uses: actions/upload-artifact@master - with: + with: name: kata-artifacts - path: kata-kernel.tar.gz - + path: kata-static-kernel.tar.gz + build-experimental-kernel: runs-on: ubuntu-16.04 needs: get-artifact-list + env: + buildstr: "install_experimental_kernel" 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-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 + if grep -q $buildstr ./artifact-list/artifact-list.txt; then + $GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr 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' + if: env.artifact-built == 'true' uses: actions/upload-artifact@master - with: + with: name: kata-artifacts - path: kata-kernel-experimental.tar.gz + path: kata-static-experimental-kernel.tar.gz - # Job for building the QEMU binaries build-qemu: runs-on: ubuntu-16.04 needs: get-artifact-list + env: + buildstr: "install_qemu" steps: + - uses: actions/checkout@v1 - 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 + if grep -q $buildstr ./artifact-list/artifact-list.txt; then + $GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr 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' + if: env.artifact-built == 'true' uses: actions/upload-artifact@master - with: + with: name: kata-artifacts - path: kata-qemu-static.tar.gz - + path: kata-static-qemu.tar.gz + # Job for building the QEMU binaries with virtiofs support build-qemu-virtiofsd: runs-on: ubuntu-16.04 needs: get-artifact-list + env: + buildstr: "install_qemu_virtiofsd" steps: + - uses: actions/checkout@v1 - 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 + if grep -q $buildstr ./artifact-list/artifact-list.txt; then + $GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr 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' + if: env.artifact-built == 'true' uses: actions/upload-artifact@master - with: + with: name: kata-artifacts - path: kata-qemu-virtiofs-static.tar.gz + path: kata-static-qemu-virtiofsd.tar.gz # Job for building the image build-image: runs-on: ubuntu-16.04 needs: get-artifact-list + env: + buildstr: "install_image" steps: + - uses: actions/checkout@v1 - 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 + if grep -q $buildstr ./artifact-list/artifact-list.txt; then + $GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr 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' + if: env.artifact-built == 'true' uses: actions/upload-artifact@master - with: + with: name: kata-artifacts - path: kata-image.tar.gz - + path: kata-static-image.tar.gz + # Job for building firecracker hypervisor build-firecracker: runs-on: ubuntu-16.04 needs: get-artifact-list + env: + buildstr: "install_firecracker" steps: + - uses: actions/checkout@v1 - 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 + if grep -q $buildstr ./artifact-list/artifact-list.txt; then + $GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr 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' + if: env.artifact-built == 'true' uses: actions/upload-artifact@master - with: + with: name: kata-artifacts - path: kata-firecracker-static.tar.gz - + path: kata-static-firecracker.tar.gz + # Job for building kata components build-kata-components: runs-on: ubuntu-16.04 needs: get-artifact-list + env: + buildstr: "install_kata_components" steps: + - uses: actions/checkout@v1 - 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 + if grep -q $buildstr ./artifact-list/artifact-list.txt; then + $GITHUB_WORKSPACE/.github/workflows/generate-artifact-tarball.sh $buildstr 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' + if: env.artifact-built == 'true' uses: actions/upload-artifact@master - with: + with: name: kata-artifacts - path: kata-components.tar.gz + path: kata-static-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: + - uses: actions/checkout@v1 - 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 + $GITHUB_WORKSPACE/.github/workflows/gather-artifacts.sh - name: store-artifacts uses: actions/upload-artifact@master - with: + with: name: release-candidate - path: kata-static.tar.xz + path: kata-static.tar.xz kata-deploy: needs: gather-artifacts @@ -330,14 +255,14 @@ jobs: uses: ./packaging/kata-deploy/action with: packaging-sha: env.PKG_SHA - env: + 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: | + 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 }}