[ci] Update debian repo action for jammy
This commit is contained in:
parent
045fe9f601
commit
28f416d775
200
.github/workflows/package_repo_setup_and_test.yml
vendored
200
.github/workflows/package_repo_setup_and_test.yml
vendored
@ -4,6 +4,14 @@ name: Set up Package Repository and Test (Manual Trigger)
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
ubuntu_focal:
|
||||
description: 'Need build ubuntu 20.04 package? <Y/N>'
|
||||
required: true
|
||||
default: 'Y'
|
||||
ubuntu_jammy:
|
||||
description: 'Need build ubuntu 22.04 package? <Y/N>'
|
||||
required: true
|
||||
default: 'Y'
|
||||
update_musl:
|
||||
description: 'Need build new musl package? <Y/N>'
|
||||
required: true
|
||||
@ -26,10 +34,10 @@ on:
|
||||
|
||||
jobs:
|
||||
Package_repository_setup_and_test:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
if: github.event.inputs.only_test == 'N'
|
||||
env:
|
||||
TOKEN: ${{ secrets.PAT_TOKEN }}
|
||||
TOKEN: ${{ secrets.PAT_TOKEN }}
|
||||
# Map a step output to a job output
|
||||
outputs:
|
||||
occlum_version: ${{ steps.occlum_version.outputs.version }}
|
||||
@ -45,6 +53,7 @@ jobs:
|
||||
- name: Checkout occlum src code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: 2204-apt
|
||||
path: occlum
|
||||
|
||||
- name: Checkout target occlum-package-repo
|
||||
@ -65,56 +74,113 @@ jobs:
|
||||
id: occlum_version
|
||||
run: echo "::set-output name=version::${{ env.OCCLUM_VERSION }}"
|
||||
|
||||
- name: Create ubuntu container
|
||||
run: docker run -itd --name=ubuntu -v $GITHUB_WORKSPACE:/root/workspace occlum/occlum:${{ env.OCCLUM_VERSION }}-ubuntu20.04
|
||||
- name: Start ubuntu 20.04 occlum container
|
||||
if: github.event.inputs.ubuntu_focal == 'Y'
|
||||
run: docker run -itd --name=occlum-focal -v $GITHUB_WORKSPACE:/root/workspace occlum/occlum:${{ env.OCCLUM_VERSION }}-ubuntu20.04
|
||||
|
||||
- name: Build deb packages
|
||||
run: docker exec ubuntu bash -c "cd /root/workspace/occlum/tools/installer/deb; make"
|
||||
- name: Build focal deb packages and copy out
|
||||
if: github.event.inputs.ubuntu_focal == 'Y'
|
||||
run: |
|
||||
docker exec occlum-focal bash -c "cd /root/workspace/occlum/tools/installer/deb; make clean && make"
|
||||
if [ "${{ github.event.inputs.update_musl }}" == "Y" ]; then
|
||||
docker exec occlum-focal bash -c "cd /root/workspace/occlum/tools/installer/deb; make musl-gcc"
|
||||
fi
|
||||
|
||||
if [ "${{ github.event.inputs.update_glibc }}" == "Y" ]; then
|
||||
docker exec occlum-focal bash -c "cd /root/workspace/occlum/tools/installer/deb; make glibc"
|
||||
fi
|
||||
|
||||
- name: Build musl toolchain package
|
||||
if: github.event.inputs.update_musl == 'Y'
|
||||
run: docker exec ubuntu bash -c "cd /root/workspace/occlum/tools/installer/deb; make musl-gcc"
|
||||
if [ "${{ github.event.inputs.update_golang }}" == "Y" ]; then
|
||||
docker exec occlum-focal bash -c "cd /root/workspace/occlum/tools/installer/deb; make golang"
|
||||
fi
|
||||
|
||||
- name: Build glibc toolchain package
|
||||
if: github.event.inputs.update_glibc == 'Y'
|
||||
run: docker exec ubuntu bash -c "cd /root/workspace/occlum/tools/installer/deb; make glibc"
|
||||
docker exec occlum-focal bash -c "mkdir -p /root/workspace/focal-debs; cp -rf /root/workspace/occlum/build/debs/* /root/workspace/focal-debs/"
|
||||
|
||||
- name: Build golang toolchain package
|
||||
if: github.event.inputs.update_golang == 'Y'
|
||||
run: docker exec ubuntu bash -c "cd /root/workspace/occlum/tools/installer/deb; make golang"
|
||||
- name: Start ubuntu 22.04 occlum container
|
||||
if: github.event.inputs.ubuntu_jammy == 'Y'
|
||||
run: docker run -itd --name=occlum-jammy -v $GITHUB_WORKSPACE:/root/workspace occlum/occlum:${{ env.OCCLUM_VERSION }}-test-ubuntu22.04
|
||||
|
||||
- name: Prepare tools and keys # Since aptly still use gpg1 by default, we all use gpg1 as gpg tool.
|
||||
run: docker exec ubuntu bash -c 'apt-get update; apt-get install -y tree apt-utils gnupg reprepro rng-tools aptly; rm -rf /root/.gnupg;
|
||||
echo "${{ secrets.DEB_PRIVATE_KEY }}" > /root/deb_private_key; gpg1 --allow-secret-key-import --import /root/deb_private_key;
|
||||
gpg1 --export -a "deb_gpg_key" > /root/public.key;
|
||||
gpg1 --import /root/public.key;
|
||||
gpg1 --list-keys;
|
||||
apt-key add /root/public.key && apt-key list'
|
||||
- name: Build jammy deb packages and copy out
|
||||
if: github.event.inputs.ubuntu_jammy == 'Y'
|
||||
run: |
|
||||
docker exec occlum-jammy bash -c "cd /root/workspace/occlum/tools/installer/deb; make clean && make"
|
||||
if [ "${{ github.event.inputs.update_musl }}" == "Y" ]; then
|
||||
docker exec occlum-jammy bash -c "cd /root/workspace/occlum/tools/installer/deb; make musl-gcc"
|
||||
fi
|
||||
|
||||
if [ "${{ github.event.inputs.update_glibc }}" == "Y" ]; then
|
||||
docker exec occlum-jammy bash -c "cd /root/workspace/occlum/tools/installer/deb; make glibc"
|
||||
fi
|
||||
|
||||
if [ "${{ github.event.inputs.update_golang }}" == "Y" ]; then
|
||||
docker exec occlum-jammy bash -c "cd /root/workspace/occlum/tools/installer/deb; make golang"
|
||||
fi
|
||||
|
||||
docker exec occlum-jammy bash -c "mkdir -p /root/workspace/jammy-debs; cp -rf /root/workspace/occlum/build/debs/* /root/workspace/jammy-debs/"
|
||||
|
||||
- name: Prepare tools and keys
|
||||
run: |
|
||||
sudo apt update && sudo apt install -y tree wget apt-utils rng-tools gnupg xz-utils bzip2
|
||||
wget https://github.com/aptly-dev/aptly/releases/download/v1.5.0/aptly_1.5.0_linux_amd64.tar.gz
|
||||
tar zxf aptly_1.5.0_linux_amd64.tar.gz -C /usr/local/bin
|
||||
echo "${{ secrets.DEB_PRIVATE_KEY }}" > deb_private_key
|
||||
gpg --allow-secret-key-import --import deb_private_key
|
||||
gpg --export -a "occlum_deb_key" > ~/public.key
|
||||
gpg --import ~/public.key
|
||||
gpg --list-keys
|
||||
sudo apt-key add ~/public.key && apt-key list
|
||||
|
||||
- name: Inherit apt repo for Ubuntu 18.04
|
||||
run: docker exec ubuntu bash -c 'aptly -architectures="amd64" -keyring=/etc/apt/trusted.gpg mirror create bionic-mirror https://occlum.io/occlum-package-repos/debian/ bionic main;
|
||||
aptly -keyring=/etc/apt/trusted.gpg mirror update bionic-mirror;
|
||||
aptly snapshot create bionic-main from mirror bionic-mirror;
|
||||
aptly publish snapshot -distribution=bionic bionic-main'
|
||||
run: |
|
||||
export PATH=/usr/local/bin/aptly_1.5.0_linux_amd64:$PATH
|
||||
aptly -architectures="amd64" -keyring=/etc/apt/trusted.gpg mirror create bionic-mirror https://occlum.io/occlum-package-repos/debian bionic main
|
||||
aptly -keyring=/etc/apt/trusted.gpg mirror update bionic-mirror
|
||||
aptly snapshot create bionic-main from mirror bionic-mirror
|
||||
aptly publish snapshot -distribution=bionic bionic-main
|
||||
|
||||
- name: Update apt repo for Ubuntu 20.04
|
||||
run: docker exec ubuntu bash -c 'aptly -architectures="amd64" -keyring=/etc/apt/trusted.gpg mirror create focal-mirror https://occlum.io/occlum-package-repos/debian/ focal main;
|
||||
aptly -keyring=/etc/apt/trusted.gpg mirror update focal-mirror;
|
||||
aptly snapshot create focal-old from mirror focal-mirror;
|
||||
aptly -distribution='focal' -architectures=amd64 repo create deb-focal-new;
|
||||
aptly repo add deb-focal-new /root/workspace/occlum/build/debs/*;
|
||||
aptly snapshot create focal-new from repo deb-focal-new;
|
||||
aptly -no-remove snapshot merge focal-main focal-old focal-new;
|
||||
aptly publish snapshot -distribution=focal focal-main && tree /root/.aptly/public'
|
||||
run: |
|
||||
export PATH=/usr/local/bin/aptly_1.5.0_linux_amd64:$PATH
|
||||
aptly -architectures="amd64" -keyring=/etc/apt/trusted.gpg mirror create focal-mirror https://occlum.io/occlum-package-repos/debian focal main
|
||||
aptly -keyring=/etc/apt/trusted.gpg mirror update focal-mirror
|
||||
aptly snapshot create focal-old from mirror focal-mirror
|
||||
aptly -distribution='focal' -architectures=amd64 repo create deb-focal-new
|
||||
aptly repo add deb-focal-new $GITHUB_WORKSPACE/focal-debs/*
|
||||
aptly snapshot create focal-new from repo deb-focal-new
|
||||
aptly -no-remove snapshot merge focal-main focal-old focal-new
|
||||
aptly publish snapshot -distribution=focal focal-main
|
||||
|
||||
# - name: Update apt repo for Ubuntu 22.04
|
||||
# run: |
|
||||
# export PATH=/usr/local/bin/aptly_1.5.0_linux_amd64:$PATH
|
||||
# aptly -architectures="amd64" -keyring=/etc/apt/trusted.gpg mirror create jammy-mirror https://occlum.io/occlum-package-repos/debian jammy main
|
||||
# aptly -keyring=/etc/apt/trusted.gpg mirror update jammy-mirror
|
||||
# aptly snapshot create jammy-old from mirror jammy-mirror
|
||||
# aptly -distribution='jammy' -architectures=amd64 repo create deb-jammy-new
|
||||
# aptly repo add deb-jammy-new $GITHUB_WORKSPACE/jammy-debs/*
|
||||
# aptly snapshot create jammy-new from repo deb-jammy-new
|
||||
# aptly -no-remove snapshot merge jammy-main jammy-old jammy-new
|
||||
# aptly publish snapshot -distribution=jammy jammy-main
|
||||
|
||||
- name: Update apt repo for Ubuntu 22.04 for first time
|
||||
run: |
|
||||
export PATH=/usr/local/bin/aptly_1.5.0_linux_amd64:$PATH
|
||||
aptly -distribution='jammy' -architectures=amd64 repo create deb-jammy-new
|
||||
aptly repo add deb-jammy-new $GITHUB_WORKSPACE/jammy-debs/*
|
||||
aptly snapshot create jammy-new from repo deb-jammy-new
|
||||
aptly publish snapshot -distribution=jammy jammy-new
|
||||
|
||||
- name: Update Git repo
|
||||
run: docker exec ubuntu bash -c 'cd /root/workspace/occlum-package-repos; rm -rf debian; cp -r /root/.aptly/public/ /root/workspace/occlum-package-repos/debian;
|
||||
cp /root/public.key /root/workspace/occlum-package-repos/debian'
|
||||
run: |
|
||||
cd $GITHUB_WORKSPACE/occlum-package-repos
|
||||
rm -rf debian
|
||||
cp -r ~/.aptly/public/ $GITHUB_WORKSPACE/occlum-package-repos/debian
|
||||
cp ~/public.key $GITHUB_WORKSPACE/occlum-package-repos/debian
|
||||
tree $GITHUB_WORKSPACE/occlum-package-repos/debian/
|
||||
|
||||
- name: Clean ubuntu container and image
|
||||
run: |
|
||||
docker rm -f ubuntu
|
||||
docker rmi -f occlum/occlum:${{ env.OCCLUM_VERSION }}-ubuntu20.04
|
||||
docker rm -f occlum-focal occlum-jammy
|
||||
|
||||
# - name: Create centos container
|
||||
# run: docker run -itd --name=centos -v $GITHUB_WORKSPACE:/root/workspace occlum/occlum:${{ env.OCCLUM_VERSION }}-centos8.2
|
||||
@ -136,7 +202,7 @@ jobs:
|
||||
|
||||
- name: Commit files
|
||||
run: |
|
||||
cd occlum-package-repos
|
||||
cd $GITHUB_WORKSPACE/occlum-package-repos
|
||||
git config --local user.email "action@github.com"
|
||||
git config --local user.name "GitHub Action"
|
||||
git add -A
|
||||
@ -155,14 +221,14 @@ jobs:
|
||||
run: sleep 600
|
||||
|
||||
|
||||
Test_deb_package:
|
||||
Test_deb_focal_package:
|
||||
if: ${{ always() }}
|
||||
needs: Package_repository_setup_and_test
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
steps:
|
||||
- name: Create a clean ubuntu container
|
||||
run: docker run -itd --name=ubuntu ubuntu:20.04
|
||||
run: docker run --rm -itd --name=ubuntu ubuntu:20.04
|
||||
|
||||
- name: Get occlum version from user inputs
|
||||
run: echo "OCCLUM_VERSION=${{github.event.inputs.test_version}}" >> $GITHUB_ENV
|
||||
@ -200,6 +266,58 @@ jobs:
|
||||
- name: Run occlum python glibc test
|
||||
run: docker exec ubuntu bash -c "source /etc/profile; cd /root && git clone https://github.com/occlum/occlum.git && cd /root/occlum/demos/python/python_glibc && ./install_python_with_conda.sh && SGX_MODE=SIM ./run_python_on_occlum.sh && cat occlum_instance/smvlight.dat"
|
||||
|
||||
- name: Clean ubuntu container
|
||||
run: |
|
||||
docker rm -f ubuntu
|
||||
|
||||
Test_deb_jammy_package:
|
||||
if: ${{ always() }}
|
||||
needs: Package_repository_setup_and_test
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- name: Create a clean ubuntu container
|
||||
run: docker run --rm -itd --name=ubuntu ubuntu:22.04
|
||||
|
||||
- name: Get occlum version from user inputs
|
||||
run: echo "OCCLUM_VERSION=${{github.event.inputs.test_version}}" >> $GITHUB_ENV
|
||||
|
||||
- name: Update occlum version from previous job
|
||||
if: github.event.inputs.only_test == 'N'
|
||||
run: echo "OCCLUM_VERSION=${{needs.Package_repository_setup_and_test.outputs.occlum_version}}" >> $GITHUB_ENV
|
||||
|
||||
- name: Configure sgx and occlum deb repo
|
||||
run: |
|
||||
# Set the default timezone to make tzdata work
|
||||
docker exec ubuntu bash -c "ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone"
|
||||
docker exec ubuntu bash -c "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates gnupg jq make gdb wget libfuse-dev libtool tzdata;
|
||||
echo 'deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu jammy main' | tee /etc/apt/sources.list.d/intel-sgx.list;
|
||||
wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | apt-key add -"
|
||||
docker exec ubuntu bash -c "echo 'deb [arch=amd64] https://occlum.io/occlum-package-repos/debian jammy main' | tee /etc/apt/sources.list.d/occlum.list;
|
||||
wget -qO - https://occlum.io/occlum-package-repos/debian/public.key | apt-key add -;"
|
||||
|
||||
- name: Install sgx dependencies and occlum
|
||||
run: docker exec ubuntu bash -c "apt-get update; apt-cache policy occlum | grep -n5 ${{ env.OCCLUM_VERSION }} && apt-get install -y occlum libsgx-uae-service libsgx-dcap-ql"
|
||||
|
||||
- name: Hello world test
|
||||
run: docker exec ubuntu bash -c "source /etc/profile; cd /root; wget https://raw.githubusercontent.com/occlum/occlum/master/demos/hello_c/hello_world.c; occlum-gcc -o hello_world hello_world.c;
|
||||
occlum new occlum-instance; cp hello_world /root/occlum-instance/image/bin; cd /root/occlum-instance && SGX_MODE=SIM occlum build; occlum run /bin/hello_world"
|
||||
|
||||
# If there is no match, it will return 1.
|
||||
- name: Check installed version
|
||||
run: docker exec ubuntu bash -c "cat /opt/occlum/include/occlum_version.h | grep -n5 ${{ env.OCCLUM_VERSION }}"
|
||||
|
||||
- name: Install occlum-glibc toolchain
|
||||
run: |
|
||||
docker exec ubuntu bash -c "apt-get install -y occlum-toolchains-glibc"
|
||||
docker exec ubuntu bash -c "apt-get install -y git python3 python3-pip python-is-python3 rsync"
|
||||
|
||||
- name: Run occlum python glibc test
|
||||
run: docker exec ubuntu bash -c "source /etc/profile; cd /root && git clone https://github.com/occlum/occlum.git && cd /root/occlum/demos/python/python_glibc && ./install_python_with_conda.sh && SGX_MODE=SIM ./run_python_on_occlum.sh && cat occlum_instance/smvlight.dat"
|
||||
|
||||
- name: Clean ubuntu container
|
||||
run: |
|
||||
docker rm -f ubuntu
|
||||
|
||||
# Test_rpm_package:
|
||||
# if: ${{ always() }}
|
||||
|
Loading…
Reference in New Issue
Block a user