mirror of
https://github.com/Telecominfraproject/wlan-testing.git
synced 2026-01-10 22:31:42 +00:00
151 lines
4.9 KiB
YAML
151 lines
4.9 KiB
YAML
name: nightly build
|
|
env:
|
|
# thirdparties
|
|
DOCKER_SERVER: tip-tip-wlan-cloud-docker-repo.jfrog.io
|
|
DOCKER_USER_NAME: ${{ secrets.DOCKER_USER_NAME }}
|
|
DOCKER_USER_PASSWORD: ${{ secrets.DOCKER_USER_PASSWORD }}
|
|
TESTRAIL_USER_PASSWORD: ${{ secrets.TESTRAIL_USER_PASSWORD }}
|
|
JFROG_USER_PASSWORD: ${{ secrets.JFROG_USER_PASSWORD }}
|
|
# AWS credentials
|
|
AWS_EKS_NAME: tip-wlan-main
|
|
AWS_DEFAULT_OUTPUT: json
|
|
AWS_DEFAULT_REGION: us-east-2
|
|
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_CLIENT_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_CLIENT_KEY }}
|
|
# Cloud SDK certs
|
|
CACERT: ${{ secrets.CACERT }}
|
|
CAKEY: ${{ secrets.CAKEY }}
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: '15 0 * * *'
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
# checkout needed repositories
|
|
- name: Checkout Testing repo
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: wlan-testing
|
|
- name: Checkout LANforge scripts
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: wlan-lanforge-scripts
|
|
repository: Telecominfraproject/wlan-lanforge-scripts
|
|
|
|
# build and push docker image
|
|
- name: docker login
|
|
shell: bash
|
|
run: docker login ${{ env.DOCKER_SERVER }} -u ${{ env.DOCKER_USER_NAME }} -p ${{ env.DOCKER_USER_PASSWORD }}
|
|
- name: build docker image
|
|
shell: bash
|
|
run: docker build -t ${{ env.DOCKER_SERVER }}/cloud-sdk-nightly:pytest-${{ github.run_id }} -f wlan-testing/pytest/Dockerfile .
|
|
- name: push docker image
|
|
shell: bash
|
|
run: docker push ${{ env.DOCKER_SERVER }}/cloud-sdk-nightly:pytest-${{ github.run_id }}
|
|
|
|
cloudsdk:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout pki scripts repo
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: wlan-pki
|
|
repository: Telecominfraproject/wlan-pki-cert-scripts
|
|
- name: Checkout Cloud SDK repo
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: wlan-helm
|
|
repository: Telecominfraproject/wlan-cloud-helm
|
|
- name: Checkout helm values repo
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: toolsmith
|
|
repository: Telecominfraproject/Toolsmith
|
|
token: ${{ secrets.PAT_TOKEN }}
|
|
|
|
- name: Prepare environment
|
|
shell: bash
|
|
run: |
|
|
mkdir -p ./wlan-pki/testCA/private
|
|
mkdir -p ./wlan-pki/testCA/newcerts
|
|
mkdir -p ./wlan-pki/generated
|
|
touch ./wlan-pki/testCA/index.txt
|
|
echo "01" > ./wlan-pki/testCA/serial.txt
|
|
echo "${{ env.CACERT }}" | base64 -d > ./wlan-pki/testCA/cacert.pem
|
|
echo "${{ env.CAKEY }}" | base64 -d > ./wlan-pki/testCA/private/cakey.pem
|
|
cp ./toolsmith/helm-values/aws-cicd.yaml ./wlan-helm/tip-wlan/resources/environments/aws-cicd.yaml
|
|
|
|
- name: Generate certs
|
|
shell: bash
|
|
run: |
|
|
cd ./wlan-pki
|
|
./generate_all.sh true
|
|
./copy-certs-to-helm.sh "../wlan-helm"
|
|
|
|
- name: Deploy Cloud SDK
|
|
shell: bash
|
|
run: |
|
|
cd ./wlan-helm/tip-wlan
|
|
aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }}
|
|
# temp
|
|
helm del tip -n default
|
|
helm delete ns tip
|
|
# start deployment
|
|
helm dependency update
|
|
helm upgrade --install tip . -f resources/environments/aws-cicd.yaml --create-namespace --namespace tip
|
|
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
needs: [ build, cloudsdk ]
|
|
steps:
|
|
- name: run tests
|
|
run: |
|
|
today=$(date +"%d-%m-%Y")
|
|
aws eks update-kubeconfig --name ${{ env.AWS_EKS_NAME }}
|
|
kubectl delete job nightly-ci-$today --wait=true --ignore-not-found=true
|
|
|
|
cat <<EOF | kubectl apply -f -
|
|
apiVersion: batch/v1
|
|
kind: Job
|
|
metadata:
|
|
name: nightly-ci-$today
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: tests
|
|
image: ${{ env.DOCKER_SERVER }}/cloud-sdk-nightly:pytest-${{ github.run_id }}
|
|
args:
|
|
- "-c"
|
|
- "pytest --no-testrails --skip-update-firmware; sleep 3000"
|
|
command: [ "bash" ]
|
|
imagePullSecrets:
|
|
- name: tip-docker-registry-key
|
|
restartPolicy: Never
|
|
backoffLimit: 0
|
|
EOF
|
|
sleep 60 # needed to wait for the pod to come up
|
|
podname=$(kubectl get pods -o name -l job-name=nightly-ci-$today | sed "s/pod\///")
|
|
until [ -s test_everything.xml ]
|
|
do
|
|
echo "waiting for tests to complete"
|
|
kubectl cp $podname:/ci/test_everything.xml test_everything.xml
|
|
sleep 15
|
|
done
|
|
kubectl logs $podname
|
|
|
|
# placeholder for now
|
|
echo "Grafana Link: https://grafana.lab.wlan.tip.build/TO_BE_PROVIDED"
|
|
echo "Kibana Link: https://kibana.lab.wlan.tip.build/TO_BE_PROVIDED"
|
|
shell: bash
|
|
- name: Publish Unit Test Results
|
|
uses: EnricoMi/publish-unit-test-result-action@v1.7
|
|
with:
|
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
files: "**/*.xml"
|