Skip to content
This repository has been archived by the owner on Apr 2, 2024. It is now read-only.

End to End

End to End #3003

Workflow file for this run

name: End to End
defaults:
run:
shell: bash --noprofile --norc -eo pipefail {0}
on:
push:
branches: [master, main, force_test, release-*, staging, trying]
pull_request:
branches: ['**']
schedule:
- cron: "6 0 * * *"
# Allows to embed this workflow into another repository (e.g. promscale_extension)
# See .github/README.md in timescale/promscale_extension
workflow_call:
inputs:
docker_image_prefix:
required: true
type: string
ref:
required: false
type: string
default: ${{ github.ref }}
env:
golang-version: 1.19.4
jobs:
pick_docker_image:
name: pick_docker_image
runs-on: ubuntu-latest
outputs:
docker_image_12: ${{ steps.metadata.outputs.docker_image_12 }}
docker_image_13: ${{ steps.metadata.outputs.docker_image_13 }}
docker_image_14: ${{ steps.metadata.outputs.docker_image_14 }}
docker_image_15: ${{ steps.metadata.outputs.docker_image_15 }}
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v3
with:
repository: timescale/promscale
ref: ${{ inputs.ref }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Figure out database container image from branch name
id: metadata
run: |
if [[ "${{ github.event_name }}" =~ 'workflow_call' ]]; then
docker_image_12=$(echo ${{inputs.docker_image_prefix}}-pg12)
docker_image_13=$(echo ${{inputs.docker_image_prefix}}-pg13)
docker_image_14=$(echo ${{inputs.docker_image_prefix}}-pg14)
docker_image_15=$(echo ${{inputs.docker_image_prefix}}-pg15)
else
branch_name=$(echo ${{github.head_ref || github.ref_name}} | sed 's#/#-#')
possible_branch_tag=$(echo ${branch_name}-ts2)
extension_version=$(cat EXTENSION_VERSION | tr -d '[:space:]')
stable_branch_tag=$(echo ${extension_version}-ts2)
image_base="ghcr.io/timescale/dev_promscale_extension"
docker_image_12=$(./scripts/fallback-docker.sh ${image_base}:${possible_branch_tag}-pg12 ${image_base}:${stable_branch_tag}-pg12)
docker_image_13=$(./scripts/fallback-docker.sh ${image_base}:${possible_branch_tag}-pg13 ${image_base}:${stable_branch_tag}-pg13)
docker_image_14=$(./scripts/fallback-docker.sh ${image_base}:${possible_branch_tag}-pg14 ${image_base}:${stable_branch_tag}-pg14)
docker_image_15=$(./scripts/fallback-docker.sh ${image_base}:${possible_branch_tag}-pg15 ${image_base}:${stable_branch_tag}-pg15)
fi;
echo "docker_image_12=${docker_image_12}" >> ${GITHUB_OUTPUT}
echo "docker_image_13=${docker_image_13}" >> ${GITHUB_OUTPUT}
echo "docker_image_14=${docker_image_14}" >> ${GITHUB_OUTPUT}
echo "docker_image_15=${docker_image_15}" >> ${GITHUB_OUTPUT}
test-end-to-end:
name: e2e
needs: pick_docker_image
runs-on: ubuntu-latest
strategy:
matrix:
test-setups:
- {name: "Singlenode (15)", shortname: "singlenode-15", multi: false, pg: 15}
- {name: "Singlenode (14)", shortname: "singlenode-14", multi: false, pg: 14}
- {name: "Singlenode (13)", shortname: "singlenode-13", multi: false, pg: 13}
- {name: "Singlenode (12)", shortname: "singlenode-12", multi: false, pg: 12}
# TODO (james): Skipping multinode because tests are broken for now
# - {name: "Multinode", shortname: "multinode", multi: true, pg: 14}
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v3
with:
repository: timescale/promscale
ref: ${{ inputs.ref }}
- name: Checkout test data files
run: wget https://github.com/timescale/promscale-test-data/raw/main/traces-dataset.sz -O pkg/tests/testdata/traces-dataset.sz
- name: Set up Go ${{ env.golang-version }}
uses: actions/[email protected]
with:
go-version: ${{ env.golang-version }}
id: go
- name: Use Go module caching
uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Test ${{ matrix.test-setups.name }}
env:
DOCKER_IMAGE: ${{ needs.pick_docker_image.outputs[ format('docker_image_{0}', matrix.test-setups.pg) ] }}
MULTI: ${{ matrix.test-setups.multi }}
SHORTNAME: ${{ matrix.test-setups.shortname }}
run: go test -race -timeout=30m ./pkg/tests/end_to_end_tests/ -use-multinode=$MULTI -timescale-docker-image=$DOCKER_IMAGE
test-jaeger-storage-integration:
name: jaeger-storage-integration
needs: pick_docker_image
runs-on: ubuntu-latest
strategy:
matrix:
test-setups:
- {name: "Singlenode (15)", shortname: "singlenode-15", multi: false, pg: 15}
- {name: "Singlenode (14)", shortname: "singlenode-14", multi: false, pg: 14}
- {name: "Singlenode (13)", shortname: "singlenode-13", multi: false, pg: 13}
- {name: "Singlenode (12)", shortname: "singlenode-12", multi: false, pg: 12}
# TODO (james): Skipping multinode because tests are broken for now
# - {name: "Multinode", shortname: "multinode", multi: true, pg: 14}
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v3
with:
repository: timescale/promscale
ref: ${{ inputs.ref }}
- name: Set up Go ${{ env.golang-version }}
uses: actions/[email protected]
with:
go-version: ${{ env.golang-version }}
id: go
- name: Use Go module caching
uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Test ${{ matrix.test-setups.name }}
env:
DOCKER_IMAGE: ${{ needs.pick_docker_image.outputs[ format('docker_image_{0}', matrix.test-setups.pg) ] }}
MULTI: ${{ matrix.test-setups.multi }}
SHORTNAME: ${{ matrix.test-setups.shortname }}
run: go test -v -race -timeout=30m ./pkg/tests/end_to_end_tests/ -use-multinode=$MULTI -timescale-docker-image=$DOCKER_IMAGE -tags=jaeger_storage_test -run="^TestJaegerStorageIntegration/"
upgrade_test:
name: upgrade_tests
needs: pick_docker_image
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v3
with:
repository: timescale/promscale
ref: ${{ inputs.ref }}
- name: Set up Go ${{ env.golang-version }}
uses: actions/[email protected]
with:
go-version: ${{ env.golang-version }}
id: go
- name: Use Go module caching
uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Test Upgrade from PG12
env:
DOCKER_IMAGE: ${{ needs.pick_docker_image.outputs.docker_image_12 }}
run: go test -race -v -timeout=30m ./pkg/tests/upgrade_tests/ -timescale-docker-image=$DOCKER_IMAGE
# Added to summarize the matrix
tests-result:
name: e2e results
if: always()
needs:
- test-end-to-end
- test-jaeger-storage-integration
runs-on: ubuntu-latest
steps:
- name: Mark the job as a success
if: needs.test-end-to-end.result == 'success' && needs.test-jaeger-storage-integration.result == 'success'
run: exit 0
- name: Mark the job as a failure
if: needs.test-end-to-end.result != 'success' || needs.test-jaeger-storage-integration.result != 'success'
run: exit 1