Skip to content

abi-mno-clab-push

abi-mno-clab-push #104

---
run-name: abi-mno-${{ github.ref_name }}-${{ github.event_name }}
name: abi-mno
on: # yamllint disable-line rule:truthy
push:
workflow_dispatch:
jobs:
stage0:
name: Setup HV
runs-on: [self-hosted, green]
outputs:
RUNNER: ${{ runner.name }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Clean Virtual Infra
run: |
./telco-ocp-lab --clean --dry-run=false -a -auto-timeout 0s --continue-on-error
- name: Setup Virtual Infra - ${{ runner.name }}
run: |
echo '${{ secrets.PULL_SECRET }}' > .pull-secret.json
echo '${{ secrets.WG_AUTH }}' > .wg-auth
echo "${{ secrets.CI_SSH_KEY }}" > .id_rsa && chmod 600 .id_rsa
./telco-ocp-lab --setup --dry-run=false -a -auto-timeout 0s
./telco-ocp-lab --ipforwarding --dry-run=false -a -auto-timeout 0s
- name: Reserve Runner
run: |
podman exec workstation bash -ce '
GITHUB_TOKEN='${{ secrets.GH_TOKEN }}' ./bin/label-runner.sh ${{ runner.name }} -green +taken -ready
'
stage1:
name: Deploy MNO - ${{needs.stage0.outputs.RUNNER}}
runs-on: ${{needs.stage0.outputs.RUNNER}}
needs: [stage0]
if: needs.stage0.result == 'success'
steps:
- name: Deploy MNO using agent-based
timeout-minutes: 120
run: |
podman exec workstation bash -ce '
# export OCP_RELEASE=quay.io/openshift-release-dev/ocp-release:4.16.0-ec.5-x86_64
export OCP_RELEASE=quay.io/openshift-release-dev/ocp-release:4.15.10-x86_64
oc adm release extract --tools $OCP_RELEASE --registry-config=.pull-secret.json
tar xzf openshift-install-linux-*tar.gz --directory=/usr/local/bin openshift-install
openshift-install version
cat /etc/redhat-release
nmstatectl version
folder=/share/mno
cp -r mno-template "${folder}"
PULL_SECRET=$(jq '.' -c ".pull-secret.json")
sed -i "s/PULLSECRET/$PULL_SECRET/g" "${folder}"/install-config.yaml
openshift-install agent create image --log-level info --dir "${folder}"
source ./redfish-actions/sushy.sh
for node in $(cat "${folder}"/bmc-hosts);
do
power_off "$node"
media_eject "$node"
media_insert "$node" http://10.10.20.200:9000/mno/agent.x86_64.iso
boot_once "$node"
power_on "$node"
done
mkdir -p ~/.kube && cp "${folder}"/auth/kubeconfig ~/.kube/config
export KUBECONFIG=/share/mno/auth/kubeconfig
./bin/patch-no-validation-ai.sh #https://issues.redhat.com/browse/OCPBUGS-31631
openshift-install agent wait-for install-complete --log-level info --dir /share/mno
oc get clusterversion && oc get co
'
echo "wget http://10.0.0.1:9000/mno/auth/kubeconfig -O ~/.kube/${{ runner.name }}.yaml"
echo "curl -s http://10.0.0.1:9000/mno/auth/kubeadmin-\password | xsel --input --clipboard"
- name: Patch Cluster CRs
timeout-minutes: 10
run: |
podman exec workstation bash -ce '
oc patch network.operator cluster --type=merge --patch-file mno-template/day1/network-operator-patch.yaml
oc patch OperatorHub cluster --type merge --patch-file mno-template/day1/operatorhub-patch.yaml
oc patch configs.imageregistry cluster --type=merge --patch-file mno-template/day1/image-registry-patch.yaml
sleep 30
oc patch configs.imageregistry cluster --type=merge --patch-file mno-template/day1/image-registry-patch.yaml
'
stage2:
name: Deploy Metallb
runs-on: ${{needs.stage0.outputs.RUNNER}}
needs: [stage0, stage1]
if: needs.stage1.result == 'success'
timeout-minutes: 20
steps:
- name: Install Metallb/Sriov
timeout-minutes: 10
run: |
podman exec workstation bash -ce '
# oc apply -f mno-template/day1/99-metallb-operator.yaml
# until oc get metallb 2>/dev/null; do sleep 30; done
# sleep 30
# oc -n metallb-system wait deploy metallb-operator-webhook-server --for=condition=available
# sleep 30
# oc apply -k mno-template/day1/
'
stage3:
name: Test Metallb
runs-on: ${{needs.stage0.outputs.RUNNER}}
needs: [stage0, stage1, stage2]
if: needs.stage2.result == 'success'
steps:
- name: SmokeTest Metallb setup
run: |
podman exec workstation bash -ce '
# oc apply -f dayX/green-net.yaml
# oc apply -f dayX/red-net.yaml
#
# oc wait --for=condition=ready pod -l app=red --timeout=320s
# oc wait --for=condition=ready pod -l app=green --timeout=320s
'
# podman exec green bash -cex '
# echo "from green client to access the service in green segment (static routes)"
# curl --retry 5 -s http://5.5.5.1:5555/hostname -w " #local"
# # curl --retry 5 -s http://5.5.5.2/hostname -w " #cluster"
# '
# podman exec red bash -cex '
# echo "from red client to access the service in red segment (static routes)"
# curl --retry 5 -s http://6.6.6.1:6666/hostname -w " #local"
# '
on-success:
name: On Success
runs-on: ${{needs.stage0.outputs.RUNNER}}
needs: [stage0, stage1, stage3]
if: ${{ success() }}
steps:
- name: Readd Label
run: |
podman exec workstation bash -c '
GITHUB_TOKEN='${{ secrets.GH_TOKEN }}' ./bin/label-runner.sh ${{ runner.name }} +ready -taken
'
on-fail:
name: On Failure
runs-on: ${{needs.stage0.outputs.RUNNER}}
needs: [stage0, stage1, stage3]
if: ${{ failure() }}
steps:
- name: Readd Label
run: |
podman exec workstation bash -c '
GITHUB_TOKEN='${{ secrets.GH_TOKEN }}' ./bin/label-runner.sh ${{ runner.name }} +green -taken
'