name: Publish Kata 2.x release artifacts on: push: tags: - '2.*' jobs: get-artifact-list: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: get the list run: | pushd $GITHUB_WORKSPACE tag=$(echo $GITHUB_REF | cut -d/ -f3-) git checkout $tag popd $GITHUB_WORKSPACE/tools/packaging/artifact-list.sh > artifact-list.txt - name: save-artifact-list uses: actions/upload-artifact@v2 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@v2 - name: get-artifact-list uses: actions/download-artifact@v2 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 $buildstr artifact-list.txt; then $GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr echo "artifact-built=true" >> $GITHUB_ENV else echo "artifact-built=false" >> $GITHUB_ENV fi - name: store-artifacts if: ${{ env.artifact-built }} == 'true' uses: actions/upload-artifact@v2 with: name: kata-artifacts 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@v2 - name: get-artifact-list uses: actions/download-artifact@v2 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 $buildstr artifact-list.txt; then $GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr echo "artifact-built=true" >> $GITHUB_ENV else echo "artifact-built=false" >> $GITHUB_ENV fi - name: store-artifacts if: ${{ env.artifact-built }} == 'true' uses: actions/upload-artifact@v2 with: name: kata-artifacts path: kata-static-experimental-kernel.tar.gz build-qemu: runs-on: ubuntu-16.04 needs: get-artifact-list env: buildstr: "install_qemu" steps: - uses: actions/checkout@v2 - name: get-artifact-list uses: actions/download-artifact@v2 with: name: artifact-list - name: build-qemu run: | if grep -q $buildstr artifact-list.txt; then $GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr echo "artifact-built=true" >> $GITHUB_ENV else echo "artifact-built=false" >> $GITHUB_ENV fi - name: store-artifacts if: ${{ env.artifact-built }} == 'true' uses: actions/upload-artifact@v2 with: name: kata-artifacts path: kata-static-qemu.tar.gz build-image: runs-on: ubuntu-16.04 needs: get-artifact-list env: buildstr: "install_image" steps: - uses: actions/checkout@v2 - name: get-artifact-list uses: actions/download-artifact@v2 with: name: artifact-list - name: build-image run: | if grep -q $buildstr artifact-list.txt; then $GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr echo "artifact-built=true" >> $GITHUB_ENV else echo "artifact-built=false" >> $GITHUB_ENV fi - name: store-artifacts if: ${{ env.artifact-built }} == 'true' uses: actions/upload-artifact@v2 with: name: kata-artifacts path: kata-static-image.tar.gz build-firecracker: runs-on: ubuntu-16.04 needs: get-artifact-list env: buildstr: "install_firecracker" steps: - uses: actions/checkout@v2 - name: get-artifact-list uses: actions/download-artifact@v2 with: name: artifact-list - name: build-firecracker run: | if grep -q $buildstr artifact-list.txt; then $GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr echo "artifact-built=true" >> $GITHUB_ENV else echo "artifact-built=false" >> $GITHUB_ENV fi - name: store-artifacts if: ${{ env.artifact-built }} == 'true' uses: actions/upload-artifact@v2 with: name: kata-artifacts path: kata-static-firecracker.tar.gz build-clh: runs-on: ubuntu-16.04 needs: get-artifact-list env: buildstr: "install_clh" steps: - uses: actions/checkout@v2 - name: get-artifact-list uses: actions/download-artifact@v2 with: name: artifact-list - name: build-clh run: | if grep -q $buildstr artifact-list.txt; then $GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr echo "artifact-built=true" >> $GITHUB_ENV else echo "artifact-built=false" >> $GITHUB_ENV fi - name: store-artifacts if: ${{ env.artifact-built }} == 'true' uses: actions/upload-artifact@v2 with: name: kata-artifacts path: kata-static-clh.tar.gz build-kata-components: runs-on: ubuntu-16.04 needs: get-artifact-list env: buildstr: "install_kata_components" steps: - uses: actions/checkout@v2 - name: get-artifact-list uses: actions/download-artifact@v2 with: name: artifact-list - name: build-kata-components run: | if grep -q $buildstr artifact-list.txt; then $GITHUB_WORKSPACE/.github/workflows/generate-local-artifact-tarball.sh $buildstr echo "artifact-built=true" >> $GITHUB_ENV else echo "artifact-built=false" >> $GITHUB_ENV fi - name: store-artifacts if: ${{ env.artifact-built }} == 'true' uses: actions/upload-artifact@v2 with: name: kata-artifacts path: kata-static-kata-components.tar.gz gather-artifacts: runs-on: ubuntu-16.04 needs: [build-experimental-kernel, build-kernel, build-qemu, build-image, build-firecracker, build-kata-components, build-clh] steps: - uses: actions/checkout@v2 - name: get-artifacts uses: actions/download-artifact@v2 with: name: kata-artifacts path: kata-artifacts - name: colate-artifacts run: | $GITHUB_WORKSPACE/.github/workflows/gather-artifacts.sh - name: store-artifacts uses: actions/upload-artifact@v2 with: name: release-candidate path: kata-static.tar.xz kata-deploy: needs: gather-artifacts runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: get-artifacts uses: actions/download-artifact@v2 with: name: release-candidate - name: build-and-push-kata-deploy-ci id: build-and-push-kata-deploy-ci run: | tag=$(echo $GITHUB_REF | cut -d/ -f3-) pushd $GITHUB_WORKSPACE git checkout $tag pkg_sha=$(git rev-parse HEAD) popd mv kata-static.tar.xz $GITHUB_WORKSPACE/tools/packaging/kata-deploy/kata-static.tar.xz docker build --build-arg KATA_ARTIFACTS=kata-static.tar.xz -t katadocker/kata-deploy-ci:$pkg_sha $GITHUB_WORKSPACE/tools/packaging/kata-deploy docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} docker push katadocker/kata-deploy-ci:$pkg_sha mkdir -p packaging/kata-deploy ln -s $GITHUB_WORKSPACE/tools/packaging/kata-deploy/action packaging/kata-deploy/action echo "::set-output name=PKG_SHA::${pkg_sha}" - name: test-kata-deploy-ci-in-aks uses: ./packaging/kata-deploy/action with: packaging-sha: ${{steps.build-and-push-kata-deploy-ci.outputs.PKG_SHA}} env: PKG_SHA: ${{steps.build-and-push-kata-deploy-ci.outputs.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 tag=$(echo $GITHUB_REF | cut -d/ -f3-) docker tag katadocker/kata-deploy-ci:${{steps.build-and-push-kata-deploy-ci.outputs.PKG_SHA}} katadocker/kata-deploy:${tag} docker push katadocker/kata-deploy:${tag} upload-static-tarball: needs: kata-deploy runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: download-artifacts uses: actions/download-artifact@v2 with: name: release-candidate - 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: push static tarball to github run: | tag=$(echo $GITHUB_REF | cut -d/ -f3-) tarball="kata-static-$tag-x86_64.tar.xz" mv kata-static.tar.xz "$GITHUB_WORKSPACE/${tarball}" pushd $GITHUB_WORKSPACE echo "uploading asset '${tarball}' for tag: ${tag}" GITHUB_TOKEN=${{ secrets.GIT_UPLOAD_TOKEN }} hub release edit -m "" -a "${tarball}" "${tag}"