Skip to content

Nightly

Nightly #378

name: Nightly
env:
GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} # necessary to pass upgrade tests
on:
schedule:
- cron: "0 5 * * 1-5" # weekdays @ 00:00 EST, run tests against latest main
- cron: "10 10 * * 1" # monday @ 05:10 EST, run expanded tests against v1.14.x
- cron: "6 6 * * 1" # monday @ 01:06 EST, run expanded tests against v1.13.x
workflow_dispatch:
inputs:
run-regression:
description: "Run regression tests"
type: boolean
run-performance:
description: "Run performance tests"
type: boolean
jobs:
regression_tests_latest_main:
name: latest main regression tests
if: ${{ (github.event_name == 'workflow_dispatch' && inputs.run-regression) || github.event.schedule == '0 5 * * 1-5' }}
runs-on: ubuntu-22.04
# Previously, there was an environment variable, RELEASED_VERSION="LATEST" set. This made use of some internal code:
# https://github.com/solo-io/gloo/blob/main/test/kube2e/util.go#L229-L241
# which modified our testing process to pull the latest beta release.
#
# NOW, however, running this job is the same as normal CI. (building a local chart, then using it)
strategy:
fail-fast: false
matrix:
kube-e2e-test-type: ['gateway', 'gloo', 'ingress', 'helm', 'gloomtls', 'glooctl', 'upgrade']
kube-version: [ { node: 'v1.23.13@sha256:ef453bb7c79f0e3caba88d2067d4196f427794086a7d0df8df4f019d5e336b61', kubectl: 'v1.23.17', kind: 'v0.17.0', helm: 'v3.11.2' },
{ node: 'v1.26.3@sha256:61b92f38dff6ccc29969e7aa154d34e38b89443af1a2c14e6cfbd2df6419c66f', kubectl: 'v1.26.4', kind: 'v0.18.0', helm: 'v3.11.2' }]
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/composite-actions/regression-tests
performance_tests_latest_main:
name: latest performance tests
if: ${{ (github.event_name == 'workflow_dispatch' && inputs.run-performance) || github.event.schedule == '0 5 * * 1-5' }}
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/composite-actions/prep-go-runner
- uses: ./.github/workflows/composite-actions/performance-tests
regression_tests_14:
name: v1.14.x regression tests
if: github.event.schedule == '10 10 * * 1'
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
kube-e2e-test-type: ['gateway', 'gloo', 'ingress', 'helm', 'gloomtls', 'glooctl', 'upgrade']
kube-version: [ { node: 'v1.23.13@sha256:ef453bb7c79f0e3caba88d2067d4196f427794086a7d0df8df4f019d5e336b61', kubectl: 'v1.23.17', kind: 'v0.17.0', helm: 'v3.11.2' },
{ node: 'v1.25.3@sha256:f52781bc0d7a19fb6c405c2af83abfeb311f130707a0e219175677e366cc45d1', kubectl: 'v1.25.8', kind: 'v0.17.0', helm: 'v3.11.2' }]
steps:
- uses: actions/checkout@v3
with:
ref: v1.14.x
- uses: ./.github/actions/regression-tests
regression_tests_13:
name: v1.13.x regression tests
if: github.event.schedule == '6 6 * * 1'
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
kube-e2e-test-type: ['gateway', 'gloo', 'ingress', 'helm', 'gloomtls', 'glooctl', 'upgrade']
kube-version: [ { node: 'v1.21.14@sha256:9d9eb5fb26b4fbc0c6d95fa8c790414f9750dd583f5d7cee45d92e8c26670aa1', kubectl: 'v1.21.14', kind: 'v0.17.0', helm: 'v3.9.4' },
{ node: 'v1.24.7@sha256:577c630ce8e509131eab1aea12c022190978dd2f745aac5eb1fe65c0807eb315', kubectl: 'v1.24.7', kind: 'v0.17.0', helm: 'v3.9.4' } ]
steps:
- uses: actions/checkout@v3
with:
ref: v1.13.x
- uses: ./.github/actions/regression-tests
publish_results:
runs-on: ubuntu-22.04
if: ${{ always() }}
needs: [ regression_tests_latest_main, performance_tests_latest_main, regression_tests_14, regression_tests_13 ]
steps:
- uses: actions/checkout@v3
- name: compute-preamble
id: compute-preamble
shell: bash
run: |
echo "SLACK_CHANNEL=C04CJMXAH7A" >> $GITHUB_ENV #edge-nightly-results by default
if [[ ${{github.event_name == 'workflow_dispatch'}} = true ]]; then
preamble="Gloo OSS nightlies (manual run)"
echo "SLACK_CHANNEL=C0314KESVNV" >> $GITHUB_ENV #slack-integration-testing if manually run
elif [[ ${{github.event.schedule == '6 6 * * 1'}} = true ]]; then
preamble="Gloo OSS weeklies (v1.13.x)"
elif [[ ${{github.event.schedule == '10 10 * * 1'}} = true ]]; then
preamble="Gloo OSS weeklies (v1.14.x)"
elif [[ ${{github.event.schedule == '0 5 * * 1-5'}} = true ]]; then
preamble="Gloo OSS nightlies (main)"
fi
echo "Setting PREAMBLE as $preamble"
echo "preamble=$preamble" >> $GITHUB_OUTPUT
- uses: actions/setup-go@v4
with:
go-version-file: go.mod
- uses: actions/download-artifact@v3
- name: send slack message
env:
PARENT_JOB_URL: https://github.com/solo-io/gloo/actions/runs/${{github.run_id}} # parent job hyperlink
PREAMBLE: ${{ steps.compute-preamble.outputs.preamble }} # text to hyperlink at start of slack message
SLACKBOT_BEARER: ${{ secrets.SLACKBOT_BEARER }}
run: |
test_results="$(cat */test-out.json | jq -c --slurp .)"
echo $test_results
go run .github/workflows/helpers/notify-from-json.go $test_results