Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 56 additions & 19 deletions .github/workflows/schedule.yaml → .github/workflows/nightly.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Copyright 2025 Canonical Ltd.
# See LICENSE file for licensing details.
name: Scheduled run
name: Nightly tests

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
schedule:
- cron: '53 0 * * *' # Daily at 00:53 UTC
# Triggered on schedule by .github/workflows/scheduled_ci_*.yaml on default branch
workflow_dispatch:

jobs:
build:
Expand All @@ -22,6 +22,9 @@ jobs:
uses: canonical/data-platform-workflows/.github/workflows/build_charm.yaml@v48.1.2
with:
path-to-charm-directory: ${{ matrix.path }}
permissions:
actions: read
contents: read

integration-test:
name: Integration tests
Expand Down Expand Up @@ -85,17 +88,36 @@ jobs:
# git push origin gh-pages-beta
# )
- name: Checkout GitHub pages branch
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
ref: gh-pages-beta
path: repo/
# ${{ steps.branch.outputs.branch }} will be 8_4_edge for 8.4/edge, 8_0_edge for 8.0/edge and so forth
- name: Parse branch name
id: branch
shell: python
run: |
import os

if not os.environ["VAR_REF"].startswith("refs/heads/"):
raise Exception(
"Allure Report generation assumes `workflow_dispatch` is triggered on a branch"
)
output = f"branch={os.environ['VAR_REF_NAME'].replace('.', '_').replace('/', '_')}"
print(output)
with open(os.environ["GITHUB_OUTPUT"], "a") as file:
file.write(output)
env:
VAR_REF: ${{ github.ref }}
VAR_REF_NAME: ${{ github.ref_name }}
- name: Download default test results
# Default test results in case the integration tests time out or runner set up fails
# (So that Allure report will show "unknown"/"failed" test result, instead of omitting the test)
uses: actions/download-artifact@v8
with:
path: allure-default-results/
name: allure-default-results-integration-test
pattern: allure-default-results-integration-test-*
merge-multiple: true
- name: Download test results
uses: actions/download-artifact@v8
with:
Expand Down Expand Up @@ -145,50 +167,65 @@ jobs:
default_result.path.rename(actual_results / default_result.path.name)
- name: Load test report history
run: |
if [[ -d repo/_latest/history/ ]]
if [[ -d repo/${ALLURE_REPORT_DIR}/_latest/history/ ]]
then
echo 'Loading history'
cp -r repo/_latest/history/ allure-results/
cp -r repo/${ALLURE_REPORT_DIR}/_latest/history/ allure-results/
fi
env:
ALLURE_REPORT_DIR: ${{ steps.branch.outputs.branch }}
- name: Create executor.json
shell: python
run: |
# Reverse engineered from https://github.com/simple-elf/allure-report-action/blob/eca283b643d577c69b8e4f048dd6cd8eb8457cfd/entrypoint.sh
import json
import os

DATA = {
"name": "GitHub Actions",
"type": "github",
"buildOrder": ${{ github.run_number }}, # TODO future improvement: use run ID
"buildName": "Run ${{ github.run_id }}",
"buildUrl": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
"reportUrl": "../${{ github.run_number }}/",
"buildOrder": os.environ["VAR_RUN_NUMBER"], # TODO future improvement: use run ID
"buildName": f"Run {os.environ["VAR_RUN_ID"]}",
"buildUrl": f"https://github.com/{os.environ["VAR_REPOSITORY"]}/actions/runs/{os.environ["VAR_RUN_ID"]}",
"reportUrl": f"../{os.environ["VAR_RUN_NUMBER"]}/",
}
with open("allure-results/executor.json", "w") as file:
json.dump(DATA, file)
env:
VAR_RUN_NUMBER: ${{ github.run_number }}
VAR_RUN_ID: ${{ github.run_id }}
VAR_REPOSITORY: ${{ github.repository }}
- name: Generate Allure report
run: allure generate
- name: Create index.html
shell: python
run: |
import os

DATA = f"""<!DOCTYPE html>
<meta charset="utf-8">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="refresh" content="0; url=${{ github.run_number }}">
<meta http-equiv="refresh" content="0; url={os.environ['VAR_RUN_NUMBER']}">
"""
with open("repo/index.html", "w") as file:
report_dir = os.environ["ALLURE_REPORT_DIR"]
with open(f"repo/{report_dir}/index.html", "w") as file:
file.write(DATA)
env:
VAR_RUN_NUMBER: ${{ github.run_number }}
ALLURE_REPORT_DIR: ${{ steps.branch.outputs.branch }}
- name: Update GitHub pages branch
working-directory: repo/
working-directory: repo/${{ steps.branch.outputs.branch }}/
# TODO future improvement: commit message
run: |
mkdir '${{ github.run_number }}'
mkdir "${VAR_RUN_NUMBER}"
rm -f _latest
ln -s '${{ github.run_number }}' _latest
cp -r ../allure-report/. _latest/
git add .
ln -s "${VAR_RUN_NUMBER}" _latest
cp -r ../../allure-report/. _latest/
git add ..
git config user.name "GitHub Actions"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git commit -m "Allure report ${{ github.run_number }}"
git commit -m "Allure report ${VAR_RUN_NUMBER}"
# Uses token set in checkout step
git push origin gh-pages-beta
env:
VAR_RUN_NUMBER: ${{ github.run_number }}
Loading