Host your Allure test reports on the web with history, retries, and Slack integration—no server required.
Example report: https://gatedaccessdev.web.app
This package can be used three different ways:
-
🤖 A GitHub Action as part of your CI/CD process
-
🐳 A Docker image that you can run anywhere
-
🖥 A CLI that you run in your terminal and CI
-
Firebase/GCP Credentials:
- Create a Firebase/GCP service account.
- Download the
service-account-file.json
JSON file.
-
Firebase/Google Cloud Storage Bucket:
- Create a bucket to store test results and reports. You can use the default.
1. Add the Allure Deployer GitHub Action to your workflow and run it.
name: Your awesome workflow
on:
push:
jobs:
test-action:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.5
- name: Run your tests and create Allure results
run: |
echo ' Nothing here for now, waiting for results'
- name: Allure Deployer Action
uses: cybersokari/allure-deployer-action@v1.1.7
env:
SLACK_TOKEN: ${{secrets.SLACK_TOKEN}}
GOOGLE_CREDENTIALS_JSON: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }}
with:
allure_results_path: 'path/to/allure-results'
report_name: 'Notification module Q2'
storage_bucket: ${{vars.storage-bucket}}
slack_channel: ${{vars.SLACK_CHANNEL}}
show_history: 'true'
show_retries: 'true'
2. Check your GitHub Actions summary:
Live report website example: https://gatedaccessdev.web.app
📊 Your Test Report is ready
Test Report: https://your-example-url.web.app
File Storage: https://console.firebase.google.com/project/${project-id}/storage/${storage-bucket}/files
| 📂 Files Uploaded | 🔍 Files Processed | ⏱ Duration |
|-------------------|--------------------|------------|
| 5 | 49 | 8 seconds |
Add the docker image to your Gitlab workflow and run it.
sokari/allure-deployer:latest
stages:
- test
- deploy
variables:
DOCKER_IMAGE: sokari/allure-deployer:latest
STORAGE_BUCKET: my-test-results-bucket
PREFIX: project-123
REPORT_NAME: Notification module Q2
before_script:
- mkdir -p ./allure-results
test:
stage: test
script:
- echo "Running tests..."
# Simulate test execution and output results
- mkdir -p allure-results
# Add real test commands here
artifacts:
paths:
- allure-results/
expire_in: 1 day
deploy:
stage: deploy
image: docker:latest
services:
- docker:dind
before_script:
- echo "Logging in to Docker Hub"
- docker login -u "$DOCKERHUB_USERNAME" -p "$DOCKERHUB_TOKEN"
script:
- echo "Deploying Allure Reports..."
- docker run --rm \
-e STORAGE_BUCKET=$STORAGE_BUCKET \
-e PREFIX=$PREFIX \
-e REPORT_NAME=$REPORT_NAME \
-e SHOW_HISTORY=true \
-e SHOW_RETRIES=true \
-v ${CI_PROJECT_DIR}/allure-results:/allure-results \
-v ${GCP_CREDENTIALS_FILE_PATH}:/credentials/key.json \
sokari/allure-deployer:latest
only:
- main
dependencies:
- test
See the Docker configuration section for more info
Use the CLI in your Codemagic workflow.
workflows:
android-allure:
name: Android Allure Report
max_build_duration: 30
instance_type: linux_x2
scripts:
- name: Build Android apk # 1. Build apk
script:
- name: Git clone Appium project # 2. Clone Appium project if required
script: |
git clone https://github.com/my-appium-project
- name: Install Appium Deps # 3. Install Appium dependencies
script: |
cd appium && npm install --force
- name: Launch Android Emulator # 4. Start Codemagic Android Emulator
script: |
FIRST_AVD=$(emulator -list-avds | head -n 1) \
&& emulator -avd "$FIRST_AVD" & adb wait-for-device
- name: Run Appium test # 5. Run test and generate Allure results
script: |
cd appium && npm run android
- name: Run Allure Report Deployer # 6. Generate and deploy reports
script: |
npm i -g allure-deployer
cd appium && echo $ALLURE_GOOGLE_KEY >> service-key.json
allure-deployer deploy path/to/allure-results my-report-name \
--gcp-json /credentials/key.json \
--show-history \
--show-retries \
--slack-token $SLACK_TOKEN \
--slack-channel $SLACK_CHANNEL
artifacts:
- android/app/build/outputs/**/*.apk
npm install -g allure-deployer
allure-deployer gcp-json:set ./gcp-key.json
allure-deployer bucket:set <my-bucket-name>
allure-deployer slack:set <channel> <token>
allure-deployer deploy path/to/allure-results my-report-name \
--show-history \
--show-retries
https://github.com/marketplace/actions/allure-deployer-action
Input | Description | Required | Default |
---|---|---|---|
allure_results_path |
Path to the directory containing Allure results files. | ✅ Yes | /allure-results |
report_name |
The name/title of your report. | ❌ No | Allure Report |
storage_bucket |
Name of the Google Cloud Storage bucket for backup and history storage. | ❌ No | None |
slack_channel |
ID of the Slack channel to send notifications about report links. | ❌ No | None |
show_history |
Display history from previous test runs. | ❌ No | true |
show_retries |
Include retries from previous test runs. | ❌ No | true |
prefix |
Path prefix in the Cloud Storage bucket for archiving files. | ❌ No | None |
Variable | Description | Example | Required | Default |
---|---|---|---|---|
SLACK_TOKEN |
Token for Slack App to send notifications with report URLs. | xoxb-XXXXXXXXXX-XXXXXXXX |
❌ No | None |
GCP_CREDENTIALS_JSON |
Content of the Google Cloud service account credentials file. | ${{ secrets.GCP_APPLICATION_CREDENTIALS }} |
✅ Yes | None |
Notes: |
GCP_CREDENTIALS_JSON
must be set with a service account that has access to Firebase Hosting and Cloud Storage.- Ensure
SLACK_TOKEN
andSLACK_CHANNEL
are configured to enable Slack integration.
docker pull sokari/allure-deployer:latest
Variable | Description | Example | Default |
---|---|---|---|
STORAGE_BUCKET |
Google Cloud Storage bucket name | project-id.firebasestorage.app | None |
PREFIX |
A path in your Storage bucket. Optional. | project-123 | None |
REPORT_NAME |
The name/title of your report | Space ship report | Alure Report |
SHOW_HISTORY |
Show history in the current report by pulling the history from the last Cloud Storage backup | true | true |
SHOW_RETRIES |
Show retries in the current report by pulling result files from all archives in Cloud Storage | true | true |
SLACK_TOKEN |
Your Slack App token | xoxb-XXXXXXXXXX-XXXXXXXX | None |
SLACK_CHANNEL |
The Slack channel ID or conversation to notify with Allure report details | DC56JYGT8 | None |
Host | Container | Description |
---|---|---|
/path/to/allure-results |
/allure-results |
Allure test results directory. |
/path/to/credentials.json |
/credentials/key.json |
Google Cloud service account JSON file. |
Notes: |
- Ensure that the directories and files exist on your local machine or CI environment.
- Use absolute paths to avoid errors with relative paths in Docker commands.
Allure Report Deployer hosts your Reports on Firebase Hosting and saves your history and
results files in Firebase/GCP storage.
A secure URL will be generated and displayed in the console logs.
If configured, the URL will also appear in GitHub Summary and Slack notifications.
For more information, check the Configuration section.
Your files are backed up as a .zip
archive when you set SHOW_HISTORY
or SHOW_RETRIES
.
SHOW_RETRIES
adds all the files in your/allure-results
mount directory to the archiveSHOW_HISTORY
adds thehistory
subdirectory of your latest report to the archive
Example of an archive when both SHOW_RETRIES
and SHOW_RETRIES
are enabled
1784839939391.zip/
├── history/
│ ├── categories-trend.json
│ ├── duration-trend.json
│ ├── history-trend.json
│ ├── history.json
│ └── retry-trend.json
├── 01f49176-82b1-462d-aa15-bd0369600617-result.json
├── 2f10bad1-2f73-46ab-b2ef-28fc010f4473-container.json
├── 3abc8f5d-8292-45fa-9c0c-d0e1bfc8d173-container.json
├── 4cb007b9-e103-4518-a3b0-5ef98e178367-attachment.webm
├── 4dd05185-1dd4-4981-a860-9db6cd66532a-attachment.webm
├── 4f4d3f28-f6a2-4e0b-8f72-cf37763a4cd0-attachment.webm
├── 7a71a49f-4b80-4cde-a3d2-37813e6a51f3-attachment.webm
├── 7b1f36ef-ce18-4cfe-af8d-17af3a42995d-result.json
├── 7fbde46e-3030-4836-8399-7d537d568b6a-result.json
├── 07febc1-46d1-4fc6-8175-9e167e2ad760-attachment.webm
├── 8d25f178-46dc-4779-87c5-3f82e44e3630-container.json
├── 8fde3b8a-7632-4c87-9c28-4c66b1b99383-attachment.webm
├── 9a6c98c8-3773-4a1e-b1d7-267fc2b7887b-result.json
├── 9c0689aa-3a6c-4580-9f00-427f941ba2ac-container.json
├── 21f27bd5-d1c6-40e1-bc79-9747b3dbe93f-result.json
└── 39aea642-05b4-4b01-8944-d8e02f184e30-container.json
Zipped archives examples in the Firebase Developer console
Set SHOW_HISTORY
to true
to enable history in your incoming test report.
This feature uses the history of your last archive in Cloud Storage, which means that
you will need to enable SHOW_HISTORY
so that your history file will be uploaded to storage
for subsequent SHOW_HISTORY
usage.
This is enabled by default.
See how Allure History works
Set SHOW_RETRIES
to true to show retries in the incoming test report.
This feature combines all the test result files from Cloud Storage before running the new report
Enable SHOW_RETRIES
so that all your test result files will be uploaded to Cloud Storage for
subsequent test report generation.
See how Allure Retries work
To notify stakeholders with secure test report links after each test run,
create a simple Slack app and set SLACK_TOKEN
and SLACK_CHANNEL
environment variable when you run the Docker image.
- Problem: Issues with Google Cloud credentials or permissions.
- Solution:
- Verify the path to your Google credentials is mounted to
/credentials/key.json
on the docker container. - Ensure the credential file belongs to a service account with the required permissions for Firebase Hosting and Cloud Storage.
- Run the following commands to test credentials:
- Verify the path to your Google credentials is mounted to
gcloud auth activate-service-account --key-file=/path/to/credentials.json
gcloud firebase hosting:list
- Problem: Misconfigured
STORAGE_BUCKET
. - Solution:
- Verify the
STORAGE_BUCKET
environment variable matches the name of your Google Cloud Storage bucket. - Confirm the Google credential file has write access to the bucket.
- Verify the
- A: Yes, you can generate and share reports without using cloud storage. However, enabling
STORAGE_BUCKET
allows you back up results and history files.
- A: 36, due to Firebase limitation:
- A: Yes, each deployment creates a new report site. This allows you to manage separate URLs for different test runs or environments.
- A: No, the free Firebase plan is sufficient to host your reports. However, you will need to enable billing to use cloud storage, which has free 5GB of storage
- A: If
REPORT_NAME
is not set,Allure Report
will be used as your report id.
- A: Set the following environment variables:
SLACK_TOKEN
: Your Slack Bot's token.SLACK_CHANNEL
: The ID of the channel where you want to send notifications.- Test the bot by sending a manual message before integrating with the container.
- A: Not directly. You will need to merge allure-results directories manually before running the container.
- A: Yes, Docker is a core dependency for this project. Ensure Docker is installed and properly configured on your system.
This project is licensed under the BSD-3 License. See the LICENSE file for details.
Contributions are welcome! Feel free to open issues or submit pull requests for bug fixes or new features.