Support I/O schema v4.4 #241
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: deploy | |
"on": | |
push: | |
branches: [main] | |
workflow_dispatch: {} | |
jobs: | |
test: | |
uses: kernelci/kcidb/.github/workflows/test.yml@main | |
secrets: | |
GCLOUD_PROJECT: ${{ secrets.GCLOUD_PROJECT }} | |
GCLOUD_SA_KEY: ${{ secrets.GCLOUD_SA_KEY }} | |
deploy_to_staging: | |
needs: test | |
runs-on: ubuntu-latest | |
environment: staging | |
concurrency: staging | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Check credentials | |
env: | |
GCLOUD_PROJECT: ${{ secrets.GCLOUD_PROJECT }} | |
GCLOUD_SA_KEY: ${{ secrets.GCLOUD_SA_KEY }} | |
run: | | |
# Check credentials | |
CREDENTIALS_PRESENT=true | |
function check() { | |
if eval "test -z \"\$$1\""; then | |
echo "$1 secret is missing." >&2 | |
CREDENTIALS_PRESENT=false | |
fi | |
} | |
check GCLOUD_PROJECT | |
check GCLOUD_SA_KEY | |
if "$CREDENTIALS_PRESENT"; then | |
echo "All required credentials are present, continuing." >&2 | |
else | |
echo "Required credentials are missing, aborting." >&2 | |
fi | |
"$CREDENTIALS_PRESENT" | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.9 | |
- name: Install | |
run: | | |
python -m pip install --upgrade pip setuptools | |
pip3 install --upgrade '.[dev]' | |
- name: Authenticate to Google Cloud | |
id: auth | |
uses: google-github-actions/[email protected] | |
with: | |
project_id: ${{ secrets.GCLOUD_PROJECT }} | |
credentials_json: ${{ secrets.GCLOUD_SA_KEY }} | |
create_credentials_file: true | |
export_environment_variables: true | |
- name: Setup Google Cloud SDK | |
uses: google-github-actions/[email protected] | |
- name: Deploy to Staging and Test | |
run: | | |
declare -a args=( | |
kernelci-staging "" | |
--smtp-mocked | |
) | |
./cloud deploy "${args[@]}" -v | |
KCIDB_DEPLOYMENT="This deployment is empty" \ | |
./cloud shell "${args[@]}" --heavy-asserts -- \ | |
pytest --tb=native --verbosity=2 --log-level=DEBUG \ | |
--durations=0 --durations-min=1 | |
deploy_to_production: | |
needs: deploy_to_staging | |
runs-on: ubuntu-latest | |
environment: production | |
concurrency: production | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Check credentials | |
env: | |
GCLOUD_PROJECT: ${{ secrets.GCLOUD_PROJECT }} | |
GCLOUD_SA_KEY: ${{ secrets.GCLOUD_SA_KEY }} | |
run: | | |
# Check credentials | |
CREDENTIALS_PRESENT=true | |
function check() { | |
if eval "test -z \"\$$1\""; then | |
echo "$1 secret is missing." >&2 | |
CREDENTIALS_PRESENT=false | |
fi | |
} | |
check GCLOUD_PROJECT | |
check GCLOUD_SA_KEY | |
if "$CREDENTIALS_PRESENT"; then | |
echo "All required credentials are present, continuing." >&2 | |
else | |
echo "Required credentials are missing, aborting." >&2 | |
fi | |
"$CREDENTIALS_PRESENT" | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.9 | |
- name: Install | |
run: | | |
python -m pip install --upgrade pip setuptools | |
pip3 install --upgrade '.[dev]' | |
- name: Authenticate to Google Cloud | |
id: auth | |
uses: google-github-actions/[email protected] | |
with: | |
project_id: ${{ secrets.GCLOUD_PROJECT }} | |
credentials_json: ${{ secrets.GCLOUD_SA_KEY }} | |
create_credentials_file: true | |
export_environment_variables: true | |
- name: Setup Google Cloud SDK | |
uses: google-github-actions/[email protected] | |
- name: Deploy Playground | |
run: | | |
declare -a args=( | |
kernelci-production "playground" | |
--smtp-mocked | |
--optimize=2 | |
) | |
./cloud deploy "${args[@]}" -v | |
- name: Deploy Production | |
run: | | |
declare -r cost_thresholds_json='[ | |
100, | |
200, | |
300, | |
400, | |
500, | |
600, | |
[700, "./cloud shutdown kernelci-production \"\" -v"] | |
]' | |
declare -a args=( | |
kernelci-production "" | |
--grafana-url=https://kcidb.kernelci.org | |
--grafana-public | |
--grafana-anonymous | |
[email protected] | |
--cost-thresholds="$cost_thresholds_json" | |
) | |
./cloud deploy "${args[@]}" -v |