From 1b4270e8954dc3b1fe404a2cc583faffb4acae23 Mon Sep 17 00:00:00 2001 From: Mark Goddard Date: Wed, 23 Feb 2022 15:08:11 +0000 Subject: [PATCH] CI: Add a workflow to build images Builds and pushes kolla images using a self-hosted runner. --- .github/workflows/kolla-images.yml | 88 ++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 .github/workflows/kolla-images.yml diff --git a/.github/workflows/kolla-images.yml b/.github/workflows/kolla-images.yml new file mode 100644 index 0000000000..066bd40c9e --- /dev/null +++ b/.github/workflows/kolla-images.yml @@ -0,0 +1,88 @@ +--- +name: Build kolla images +on: + workflow_dispatch: + inputs: + regexes: + description: Space-separated list of regular expressions matching images to build + type: string + required: false + default: "" + +env: + ANSIBLE_FORCE_COLOR: True +jobs: + build: + name: Build kolla images + runs-on: [self-hosted, stackhpc-kayobe-config-kolla-builder] + steps: + - uses: actions/checkout@master + with: + path: src/kayobe-config + + - name: Clone StackHPC Kayobe repository + uses: actions/checkout@master + with: + repository: stackhpc/kayobe + ref: refs/heads/stackhpc/wallaby + path: src/kayobe + + # FIXME: Failed in kolla-ansible : Ensure the latest version of pip is installed + - name: Install dependencies + run: | + sudo dnf -y install python3-virtualenv + + - name: Setup networking + run: | + if ! ip l show breth1 >/dev/null 2>&1; then + sudo ip l add breth1 type bridge + fi + sudo ip l set breth1 up + if ! ip a show breth1 | grep 192.168.33.3/24; then + sudo ip a add 192.168.33.3/24 dev breth1 + fi + if ! ip l show dummy1 >/dev/null 2>&1; then + sudo ip l add dummy1 type dummy + fi + sudo ip l set dummy1 up + sudo ip l set dummy1 master breth1 + + - name: Install Kayobe + run: | + mkdir -p venvs && + pushd venvs && + python3 -m venv kayobe && + source kayobe/bin/activate && + pip install -U pip && + pip install ../src/kayobe + + - name: Bootstrap the control host + run: | + source venvs/kayobe/bin/activate && + source src/kayobe-config/kayobe-env --environment builder && + kayobe control host bootstrap + + - name: Configure the seed host + run: | + source venvs/kayobe/bin/activate && + source src/kayobe-config/kayobe-env --environment builder && + kayobe seed host configure + env: + KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} + + - name: Build and push kolla overcloud images + run: | + source venvs/kayobe/bin/activate && + source src/kayobe-config/kayobe-env --environment builder && + kayobe overcloud container image build ${{ github.events.input.regexes }} --push + env: + KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }} + + - name: Get the container image tag + run: | + echo "::set-output name=kolla_tag::$(cat ~/kolla_tag)" + id: kolla_tag + + - name: Display the container image tag + run: | + echo "${{ steps.kolla_tag.outputs.kolla_tag }}"