Skip to content

Commit

Permalink
CI and PROD selection
Browse files Browse the repository at this point in the history
  • Loading branch information
Nitin Sreeram committed Jun 24, 2024
1 parent 1da8f2e commit 928f0b3
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 13 deletions.
10 changes: 10 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
name: CI
on:
workflow_dispatch:
inputs:
test_env:
type: choice
description: 'Select the wether to run the tests in the CI environment or Production environment'
default: 'PROD'
options:
- CI
- PROD
defaults:
run:
working-directory: .tests
Expand All @@ -14,9 +22,11 @@ jobs:
env:
CSAE_ENV_PASSWORD: '${{ secrets.CSAE_ENV_PASSWORD }}'
CSAE_CLEARSCAPE_API_KEY: '${{ secrets.CSAE_CLEARSCAPE_API_KEY }}'
CSAE_CI_CLEARSCAPE_API_KEY: '${{ secrets.CSAE_CI_CLEARSCAPE_API_KEY }}'
CSAE_PARALLEL_TESTS_COUNT: '${{ vars.CSAE_PARALLEL_TESTS_COUNT }}'
CSAE_WORKERS_COUNT: '${{ vars.CSAE_WORKERS_COUNT }}'
CSAE_CI_JOB_IDX: ${{ matrix.idx }}
TEST_ENV: ${{ github.event.inputs.test_env }}
CSAE_CI_JOB_COUNT: 10
name: Job ${{ matrix.idx }}
timeout-minutes: 1440
Expand Down
27 changes: 14 additions & 13 deletions .tests/environments.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import axios from 'axios';

const API_KEY = process.env.CSAE_CLEARSCAPE_API_KEY;
const url = 'https://api.clearscape.teradata.com/environments';
const API_KEY = process.env.TEST_ENV === 'CI' ? process.env.CSAE_CI_CLEARSCAPE_API_KEY : process.env.CSAE_CLEARSCAPE_API_KEY;
const url = process.env.TEST_ENV === 'CI' ? 'https://api.ci.clearscape.teradata.com/environments' : 'https://api.clearscape.teradata.com/environments';

const CSAE_ENV_PASSWORD = process.env.CSAE_ENV_PASSWORD || 'asdfasdf';
const ENV_PREFIX = process.env.GITHUB_RUN_ID? `${process.env.GITHUB_RUN_ID}-${process.env.CSAE_CI_JOB_IDX}`:'env';
const ENV_PREFIX = process.env.GITHUB_RUN_ID ? `${process.env.GITHUB_RUN_ID}-${process.env.CSAE_CI_JOB_IDX}` : 'env';
export class Environments {
public readonly envName: string;
public readonly region: string;
Expand All @@ -17,7 +18,7 @@ export class Environments {
this.password = password;
}
public list() {
return axios.get(url,{
return axios.get(url, {
headers: {
'Authorization': `Bearer ${API_KEY}`
}
Expand All @@ -27,7 +28,7 @@ export class Environments {
public async create() {
const list = await this.list();
const envDetails = list.find((env: any) => env.name === this.envName);
if(envDetails) {
if (envDetails) {
this.envDetails = envDetails;
if (envDetails.state === 'STOPPED') {
await this.start();
Expand Down Expand Up @@ -73,23 +74,23 @@ export class Environments {
});
}

public getJuypterUrl(notebookUrl:string) {
const rawUrl = this.envDetails.services.filter((service: any) => service.name === 'Jupyterlab')[0].url.split('/Demo.index?token=');
const url = rawUrl[0];
const token = rawUrl[1];
return `${url}/${notebookUrl}?token=${token}`;
public getJuypterUrl(notebookUrl: string) {
const rawUrl = this.envDetails.services.filter((service: any) => service.name === 'Jupyterlab')[0].url.split('/Demo.index?token=');
const url = rawUrl[0];
const token = rawUrl[1];
return `${url}/${notebookUrl}?token=${token}`;
}
}

export class EnvPool {
private envPool: Environments[]=[];
private envPool: Environments[] = [];
constructor(private maxEnv: number) {
for (let i = 0; i < maxEnv; i++) {
for (let i = 0; i < maxEnv; i++) {
this.envPool.push(new Environments(`jupyter-demos-${ENV_PREFIX}-${i}`, 'us-central', CSAE_ENV_PASSWORD));
}
}

public async getEnv(index:number): Promise<Environments>{
public async getEnv(index: number): Promise<Environments> {
const rrIndex = (index) % this.maxEnv;
const env = this.envPool[rrIndex];
await env.create();
Expand Down

0 comments on commit 928f0b3

Please sign in to comment.