Skip to content

Host your Allure test reports on the web with history, retries, and Slack integration—no server required.

License

Notifications You must be signed in to change notification settings

cybersokari/allure-report-deployer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Allure Report Deployer

Deploy Docker Image Version (latest semver)

Host your Allure test reports on the web with history, retries, and Slack integration—no server required.

Example report: https://gatedaccessdev.web.app

Demo

📚 Table of Contents

  1. Quick Start
  2. How it works
  3. Configurations
  4. Troubleshooting and FAQs
  5. License
  6. Contributing

Usage

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

🚀 Quick Start

Prerequisites

  1. Firebase/GCP Credentials:

    • Create a Firebase/GCP service account.
    • Download the service-account-file.json JSON file.
  2. Firebase/Google Cloud Storage Bucket:

    • Create a bucket to store test results and reports. You can use the default.

GitHub

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  |

Gitlab

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

Codemagic

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

Local test runs

1. Install the CLI

npm install -g allure-deployer

2. Set your Firebase credentials

allure-deployer gcp-json:set ./gcp-key.json

3. Set your Firebase storage bucket

allure-deployer bucket:set <my-bucket-name>

4. Set Slack credentials (Optional)

allure-deployer slack:set <channel> <token>

5. Generate and host your reports

allure-deployer deploy path/to/allure-results my-report-name \
          --show-history \
          --show-retries

Configurations

GitHub Action

https://github.com/marketplace/actions/allure-deployer-action

Inputs

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

Environment Variables

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 and SLACK_CHANNEL are configured to enable Slack integration.

🐳 Docker

docker pull sokari/allure-deployer:latest

Environment Variables

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

Mount Volumes

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.

🛠️ How It Works

🌐 Firebase Hosting

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.

☁️ Cloud Storage

Your files are backed up as a .zip archive when you set SHOW_HISTORY or SHOW_RETRIES.

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

Test result files in Firebase Storage

🕗🔄 History and Retries

History

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

Retries

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

🛠️ Slack Integration

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.

Slack app notification example

🛠️ Troubleshooting and FAQs

🛠️️ Troubleshooting

1. Allure Report Website Deployment Fails

  • 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:
gcloud auth activate-service-account --key-file=/path/to/credentials.json
gcloud firebase hosting:list

2. Files Not Uploaded to Firebase

  • 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.

❓ FAQs

Q1: Can I use this tool without Google Cloud Storage?

  • A: Yes, you can generate and share reports without using cloud storage. However, enabling STORAGE_BUCKET allows you back up results and history files.

Q2: What is the maximum number of live report URLs?


Q3: Can I deploy reports to multiple Firebase sites?

  • A: Yes, each deployment creates a new report site. This allows you to manage separate URLs for different test runs or environments.

Q4: Do I need a paid Firebase plan?

  • 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

Q5: What happens if I don’t set REPORT_NAME?

  • A: If REPORT_NAME is not set, Allure Report will be used as your report id.

Q6: How do I configure Slack notifications?

  • 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.

Q7: Can I merge results from multiple directories?

  • A: Not directly. You will need to merge allure-results directories manually before running the container.

Q8: Is Docker required to use this tool?

  • A: Yes, Docker is a core dependency for this project. Ensure Docker is installed and properly configured on your system.

License

This project is licensed under the BSD-3 License. See the LICENSE file for details.

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests for bug fixes or new features.