Skip to content

Commit cf26ac0

Browse files
authored
Merge pull request kata-containers#867 from egernst/main-packaging-fixups
Main packaging fixups
2 parents 13e260a + 483209b commit cf26ac0

File tree

6 files changed

+377
-27
lines changed

6 files changed

+377
-27
lines changed

.github/workflows/generate-local-artifact-tarball.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ main() {
1818
fi
1919

2020
tag=$(echo $GITHUB_REF | cut -d/ -f3-)
21-
pushd $GITHUB_WORKSPACE/tools/packaging/obs-packaging
21+
pushd $GITHUB_WORKSPACE/tools/packaging
2222
git checkout $tag
23-
./gen_versions_txt.sh $tag
23+
./scripts/gen_versions_txt.sh $tag
2424
popd
2525

2626
pushd $GITHUB_WORKSPACE/tools/packaging/release
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
on: issue_comment
2+
name: test-kata-deploy
3+
jobs:
4+
check_comments:
5+
runs-on: ubuntu-latest
6+
steps:
7+
- name: Check for Command
8+
id: command
9+
uses: kata-containers/slash-command-action@v1
10+
with:
11+
repo-token: ${{ secrets.GITHUB_TOKEN }}
12+
command: "test-kata-deploy"
13+
reaction: "true"
14+
reaction-type: "eyes"
15+
allow-edits: "false"
16+
permission-level: admin
17+
- name: verify command arg is kata-deploy
18+
run: |
19+
echo "The command was '${{ steps.command.outputs.command-name }}' with arguments '${{ steps.command.outputs.command-arguments }}'"
20+
create-and-test-container:
21+
needs: check_comments
22+
runs-on: ubuntu-latest
23+
steps:
24+
- name: get-PR-ref
25+
id: get-PR-ref
26+
run: |
27+
ref=$(cat $GITHUB_EVENT_PATH | jq -r '.issue.pull_request.url' | sed 's#^.*\/pulls#refs\/pull#' | sed 's#$#\/merge#')
28+
echo "reference for PR: " ${ref}
29+
echo "##[set-output name=pr-ref;]${ref}"
30+
- uses: actions/checkout@v2-beta
31+
with:
32+
ref: ${{ steps.get-PR-ref.outputs.pr-ref }}
33+
- name: build-container-image
34+
id: build-container-image
35+
run: |
36+
PR_SHA=$(git log --format=format:%H -n1)
37+
VERSION=$(curl https://raw.githubusercontent.com/kata-containers/kata-containers/2.0-dev/VERSION)
38+
ARTIFACT_URL="https://github.com/kata-containers/kata-containers/releases/download/${VERSION}/kata-static-${VERSION}-x86_64.tar.xz"
39+
wget "${ARTIFACT_URL}" -O ./kata-deploy/kata-static.tar.xz
40+
docker build --build-arg KATA_ARTIFACTS=kata-static.tar.xz -t katadocker/kata-deploy-ci:${PR_SHA} ./kata-deploy
41+
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
42+
docker push katadocker/kata-deploy-ci:$PR_SHA
43+
echo "##[set-output name=pr-sha;]${PR_SHA}"
44+
- name: test-kata-deploy-ci-in-aks
45+
uses: ./kata-deploy/action
46+
with:
47+
packaging-sha: ${{ steps.build-container-image.outputs.pr-sha }}
48+
env:
49+
PKG_SHA: ${{ steps.build-container-image.outputs.pr-sha }}
50+
AZ_APPID: ${{ secrets.AZ_APPID }}
51+
AZ_PASSWORD: ${{ secrets.AZ_PASSWORD }}
52+
AZ_SUBSCRIPTION_ID: ${{ secrets.AZ_SUBSCRIPTION_ID }}
53+
AZ_TENANT_ID: ${{ secrets.AZ_TENANT_ID }}

tools/packaging/Makefile

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
MK_DIR :=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
99
SED := sed
1010
YQ := $(MK_DIR)/yq
11-
SNAPCRAFT_FILE := snap/snapcraft.yaml
11+
SNAPCRAFT_FILE := ../../snap/snapcraft.yaml
1212
VERSIONS_YAML_FILE := ../../versions.yaml
1313
VERSION_FILE := ../../VERSION
1414

@@ -18,20 +18,10 @@ export SNAPCRAFT_FILE
1818
export VERSION_FILE
1919
export VERSIONS_YAML_FILE
2020

21-
test:
22-
@$(MK_DIR)/.ci/test.sh
23-
24-
test-release-tools:
25-
@$(MK_DIR)/release/tag_repos_test.sh
26-
@$(MK_DIR)/release/update-repository-version_test.sh
27-
2821
test-static-build:
2922
@make -f $(MK_DIR)/static-build/qemu/Makefile
3023
@make -f $(MK_DIR)/static-build/firecracker/Makefile
3124

32-
test-packaging-tools:
33-
@$(MK_DIR)/obs-packaging/build_from_docker.sh
34-
3525
$(YQ):
3626
@bash -c "source scripts/lib.sh; install_yq $${MK_DIR}"
3727

@@ -41,10 +31,7 @@ snap: $(YQ)
4131
fi
4232
snapcraft -d
4333

44-
obs-test:
45-
@$(MK_DIR)/tests/run_obs_testing.sh
46-
4734
cmd-kata-pkgsync:
4835
@make -C $(MK_DIR)/cmd/kata-pkgsync
4936

50-
.PHONY: test test-release-tools test-static-build test-packaging-tools snap cmd-kata-pkgsync
37+
.PHONY: test-static-build snap cmd-kata-pkgsync
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
#!/bin/bash
2+
#
3+
# Copyright (c) 2018 Intel Corporation
4+
#
5+
# SPDX-License-Identifier: Apache-2.0
6+
#
7+
8+
[ -z "${DEBUG}" ] || set -x
9+
10+
set -o errexit
11+
set -o nounset
12+
set -o pipefail
13+
14+
readonly script_name="$(basename "${BASH_SOURCE[0]}")"
15+
readonly script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
16+
readonly repo_root_dir="$(cd "${script_dir}/../../../" && pwd)"
17+
readonly osbuilder_dir="$(cd "${repo_root_dir}/tools/osbuilder" && pwd)"
18+
readonly tmp_dir=$(mktemp -d -t build-image-tmp.XXXXXXXXXX)
19+
export GOPATH="${tmp_dir}/go"
20+
21+
export GOPATH=${GOPATH:-${HOME}/go}
22+
source "${repo_root_dir}/scripts/lib.sh"
23+
24+
exit_handler() {
25+
[ -d "${tmp_dir}" ] && sudo rm -rf "$tmp_dir"
26+
}
27+
trap exit_handler EXIT
28+
29+
arch_target="$(uname -m)"
30+
31+
source "${repo_root_dir}/versions.txt"
32+
33+
readonly destdir="${PWD}"
34+
35+
build_initrd() {
36+
sudo -E PATH="$PATH" make initrd \
37+
DISTRO="$initrd_distro" \
38+
DEBUG="${DEBUG:-}" \
39+
OS_VERSION="${initrd_os_version}" \
40+
ROOTFS_BUILD_DEST="${tmp_dir}/initrd-image" \
41+
USE_DOCKER=1 \
42+
AGENT_INIT="yes"
43+
}
44+
45+
build_image() {
46+
sudo -E PATH="${PATH}" make image \
47+
DISTRO="${img_distro}" \
48+
DEBUG="${DEBUG:-}" \
49+
USE_DOCKER="1" \
50+
IMG_OS_VERSION="${img_os_version}" \
51+
ROOTFS_BUILD_DEST="${tmp_dir}/rootfs-image"
52+
}
53+
54+
create_tarball() {
55+
agent_sha=$(get_repo_hash "${script_dir}")
56+
#reduce sha size for short names
57+
agent_sha=${agent_sha:0:${short_commit_length}}
58+
tarball_name="kata-containers-${kata_version}-${agent_sha}-${arch_target}.tar.gz"
59+
image_name="kata-containers-image_${img_distro}_${kata_version}_agent_${agent_sha}.img"
60+
initrd_name="kata-containers-initrd_${initrd_distro}_${kata_version}_agent_${agent_sha}.initrd"
61+
62+
mv "${osbuilder_dir}/kata-containers.img" "${image_name}"
63+
mv "${osbuilder_dir}/kata-containers-initrd.img" "${initrd_name}"
64+
sudo tar cfzv "${tarball_name}" "${initrd_name}" "${image_name}"
65+
}
66+
67+
usage() {
68+
return_code=${1:-0}
69+
cat <<EOT
70+
Create image and initrd in a tarball for kata containers.
71+
Use it to build an image to distribute kata.
72+
73+
Usage:
74+
${script_name} [options]
75+
76+
Options:
77+
-v <version> : Kata version to build images. Use kata release for
78+
for agent and osbuilder.
79+
80+
EOT
81+
82+
exit "${return_code}"
83+
}
84+
85+
main() {
86+
while getopts "v:h" opt; do
87+
case "$opt" in
88+
h) usage 0 ;;
89+
v) kata_version="${OPTARG}" ;;
90+
*)
91+
echo "Invalid option $opt"
92+
usage 1
93+
;;
94+
esac
95+
done
96+
97+
install_yq
98+
99+
#image information
100+
img_distro=$(get_from_kata_deps "assets.image.architecture.${arch_target}.name" "${kata_version}")
101+
#In old branches this is not defined, use a default
102+
img_distro=${img_distro:-clearlinux}
103+
img_os_version=$(get_from_kata_deps "assets.image.architecture.${arch_target}.version" "${kata_version}")
104+
105+
#initrd information
106+
initrd_distro=$(get_from_kata_deps "assets.initrd.architecture.${arch_target}.name" "${kata_version}")
107+
#In old branches this is not defined, use a default
108+
initrd_distro=${initrd_distro:-alpine}
109+
initrd_os_version=$(get_from_kata_deps "assets.image.architecture.${arch_target}.version" "${kata_version}")
110+
111+
shift "$((OPTIND - 1))"
112+
pushd "${osbuilder_dir}"
113+
build_initrd
114+
build_image
115+
create_tarball
116+
cp "${tarball_name}" "${destdir}"
117+
popd
118+
}
119+
120+
main $*

tools/packaging/release/kata-deploy-binaries.sh

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ set -o pipefail
1111

1212
readonly script_name="$(basename "${BASH_SOURCE[0]}")"
1313
readonly script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
14+
readonly pkg_root_dir="$(cd "${script_dir}/.." && pwd)"
15+
readonly repo_root_dir="$(cd "${script_dir}/../../../" && pwd)"
1416
readonly project="kata-containers"
1517
readonly prefix="/opt/kata"
1618
readonly project_to_attach="github.com/${project}/${project}"
@@ -90,7 +92,7 @@ install_image() {
9092
image_destdir="${destdir}/${prefix}/share/kata-containers/"
9193
info "Create image"
9294
image_tarball=$(find . -name 'kata-containers-'"${kata_version}"'-*.tar.gz')
93-
[ -f "${image_tarball}" ] || "${script_dir}/../obs-packaging/kata-containers-image/build_image.sh" -v "${kata_version}"
95+
[ -f "${image_tarball}" ] || "${pkg_root_dir}/guest-image/build_image.sh" -v "${kata_version}"
9496
image_tarball=$(find . -name 'kata-containers-'"${kata_version}"'-*.tar.gz')
9597
[ -f "${image_tarball}" ] || die "image not found"
9698
info "Install image in destdir ${image_tarball}"
@@ -111,7 +113,7 @@ install_image() {
111113
#Install kernel asset
112114
install_kernel() {
113115
kata_version=${1:-$kata_version}
114-
pushd "${script_dir}/../"
116+
pushd "${pkg_root_dir}"
115117
info "build kernel"
116118
kata_version="${kata_version}" ./kernel/build-kernel.sh setup
117119
kata_version="${kata_version}" ./kernel/build-kernel.sh build
@@ -126,7 +128,7 @@ install_kernel() {
126128
#Install experimental kernel asset
127129
install_experimental_kernel() {
128130
kata_version=${1:-$kata_version}
129-
pushd "${script_dir}/../"
131+
pushd "${pkg_root_dir}"
130132
info "build experimental kernel"
131133
kata_version="${kata_version}" ./kernel/build-kernel.sh -e setup
132134
kata_version="${kata_version}" ./kernel/build-kernel.sh -e build
@@ -142,21 +144,21 @@ install_experimental_kernel() {
142144
install_qemu() {
143145
kata_version=${1:-$kata_version}
144146
info "build static qemu"
145-
kata_version="${kata_version}" "${script_dir}/../static-build/qemu/build-static-qemu.sh"
147+
kata_version="${kata_version}" "${pkg_root_dir}/static-build/qemu/build-static-qemu.sh"
146148
}
147149

148150
# Install static qemu-virtiofsd asset
149151
install_qemu_virtiofsd() {
150152
kata_version=${1:-$kata_version}
151153
info "build static qemu-virtiofs"
152-
kata_version="${kata_version}" "${script_dir}/../static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh"
154+
kata_version="${kata_version}" "${pkg_root_dir}/static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh"
153155
}
154156

155157
# Install static firecracker asset
156158
install_firecracker() {
157159
kata_version=${1:-$kata_version}
158160
info "build static firecracker"
159-
[ -f "firecracker/firecracker-static" ] || kata_version="${kata_version}" "${script_dir}/../static-build/firecracker/build-static-firecracker.sh"
161+
[ -f "firecracker/firecracker-static" ] || kata_version="${kata_version}" "${pkg_root_dir}/static-build/firecracker/build-static-firecracker.sh"
160162
info "Install static firecracker"
161163
mkdir -p "${destdir}/opt/kata/bin/"
162164
sudo install -D --owner root --group root --mode 0744 firecracker/firecracker-static "${destdir}/opt/kata/bin/firecracker"
@@ -170,7 +172,7 @@ install_firecracker() {
170172
install_clh() {
171173
kata_version=${1:-$kata_version}
172174
info "build static cloud-hypervisor"
173-
kata_version="${kata_version}" "${script_dir}/../static-build/cloud-hypervisor/build-static-clh.sh"
175+
kata_version="${kata_version}" "${pkg_root_dir}/static-build/cloud-hypervisor/build-static-clh.sh"
174176
info "Install static cloud-hypervisor"
175177
mkdir -p "${destdir}/opt/kata/bin/"
176178
sudo install -D --owner root --group root --mode 0744 cloud-hypervisor "${destdir}/opt/kata/bin/cloud-hypervisor"
@@ -182,7 +184,7 @@ install_clh() {
182184

183185
install_docker_config_script() {
184186
local docker_config_script_name="kata-configure-docker.sh"
185-
local docker_config_script="${script_dir}/../static-build/scripts/${docker_config_script_name}"
187+
local docker_config_script="${pkg_root_dir}/static-build/scripts/${docker_config_script_name}"
186188

187189
local script_dest_dir="${destdir}/opt/kata/share/scripts"
188190

@@ -195,7 +197,7 @@ install_docker_config_script() {
195197
#Install all components that are not assets
196198
install_kata_components() {
197199
kata_version=${1:-$kata_version}
198-
pushd "${script_dir}/../../../src/runtime"
200+
pushd "${repo_root_dir}/src/runtime"
199201
echo "Checkout to version ${kata_version}"
200202
git checkout "${kata_version}"
201203
echo "Build"
@@ -273,14 +275,14 @@ main() {
273275
destdir="${workdir}/kata-static-${kata_version}-$(uname -m)"
274276
info "DESTDIR ${destdir}"
275277
mkdir -p "${destdir}"
276-
install_image
277278
install_kata_components
278279
install_experimental_kernel
279280
install_kernel
280281
install_clh
281282
install_qemu
282283
install_qemu_virtiofsd
283284
install_firecracker
285+
install_image
284286
install_docker_config_script
285287

286288
untar_qemu_binaries

0 commit comments

Comments
 (0)