Skip to content

Commit

Permalink
more restructure
Browse files Browse the repository at this point in the history
  • Loading branch information
ludeeus committed Mar 1, 2024
1 parent 1a328ff commit 4d62b29
Showing 1 changed file with 68 additions and 26 deletions.
94 changes: 68 additions & 26 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,66 +8,99 @@ on:
branches:
- main
schedule:
- cron: "0 0 * * *"
- cron: "0 12 * * *"

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

jobs:
preflight:
if: ${{ github.repository == 'hacs/integration' }}
runs-on: ubuntu-latest
name: Preflight
steps:
- name: Validation preflight
env:
ACTOR: ${{ github.actor }}
EVENT_NAME: ${{ github.event_name }}
REF_NAME: ${{ github.ref_name }}
REF: ${{ github.ref }}
SHA: ${{ github.sha }}
run: |
echo "**Start:** $(date)" >> $GITHUB_STEP_SUMMARY
echo "**Actor:** $ACTOR" >> $GITHUB_STEP_SUMMARY
echo "**Event:** $EVENT_NAME" >> $GITHUB_STEP_SUMMARY
echo "**Ref name:** $REF_NAME" >> $GITHUB_STEP_SUMMARY
echo "**Ref:** $REF" >> $GITHUB_STEP_SUMMARY
echo "**SHA:** $SHA" >> $GITHUB_STEP_SUMMARY
validate-hassfest:
needs:
- "preflight"
runs-on: ubuntu-latest
name: With hassfest
steps:
- name: 📥 Checkout the repository
- name: Checkout the repository
uses: actions/checkout@v4.1.1

- name: 🏃 Hassfest validation
- name: Hassfest validation
uses: "home-assistant/actions/hassfest@master"

validate-hacs:
needs:
- "preflight"
runs-on: ubuntu-latest
name: With HACS Action
if: ${{ github.event_name == 'schedule' }}
steps:
- name: 🏃 HACS validation
- name: HACS validation
uses: hacs/action@main
with:
category: integration

validate-hacs-local:
runs-on: ubuntu-latest
name: With HACS Action (local)
if: ${{ github.event_name != 'schedule' }}
needs:
- "preflight"
runs-on: ubuntu-latest
name: Check ${{matrix.entry.category}} ${{matrix.entry.repository}} with HACS Action (local)
matrix:
entry:
- repository: "hacs/integration"
category: "integration"
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.1

- name: Build Container
run: |
cd action
docker build . \
-t hacs/action:local
docker build . -t hacs/action:local
- name: Run Action
run: |
docker run --name hacs_action_local \
--env INPUT_GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} \
--env INPUT_REPOSITORY=${{github.repository}} \
--env INPUT_CATEGORY=integration \
--env INPUT_REPOSITORY=${{matrix.entry.repository}} \
--env INPUT_CATEGORY=${{matrix.entry.category}} \
hacs/action:local
validata-hacs-data:
runs-on: ubuntu-latest
name: Validate HACS data generation
if: ${{ github.event_name != 'schedule' }}
needs:
- "preflight"
runs-on: ubuntu-latest
name: Check ${{matrix.entry.category}} ${{matrix.entry.repository}} with HACS data generation
matrix:
entry:
- repository: "hacs/integration"
category: "integration"
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.1

- name: Set up Python
uses: actions/setup-python@v4.7.1
id: python
uses: actions/setup-python@v5.0.0
with:
python-version: "3.11"
cache: 'pip'
Expand All @@ -81,26 +114,35 @@ jobs:
scripts/install/pip_packages --requirement requirements_generate_data.txt
- name: Generate data
run: python3 -m scripts.data.generate_category_data integration hacs/integration
run: |
python3 -m scripts.data.generate_category_data \
${{ matrix.entry.category }} \
${{ matrix.entry.repository }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Validate output with JQ
run: |
jq -c . outputdata/integration/data.json
jq -c . outputdata/integration/repositories.json
jq -c . outputdata/${{ matrix.entry.category }}/data.json
jq -c . outputdata/${{ matrix.entry.category }}/repositories.json
validate-homeassistant:
name: With Home Assistant
needs:
- "preflight"
runs-on: ubuntu-latest
name: With Home Assistant ${{ matrix.channel }}
strategy:
matrix:
channel: [stable, beta, dev, "2023.6.0"]
runs-on: ubuntu-latest
channel:
- "stable"
- "beta"
- "dev"
- "2023.6.0"
steps:
- name: 📥 Checkout the repository
- name: Checkout the repository
uses: actions/checkout@v4.1.1

- name: 📋 Copy sample configuration for Home Assistant
- name: Copy sample configuration for Home Assistant
run: |
mkdir ./test_configuration
bash scripts/install/frontend
Expand All @@ -109,7 +151,7 @@ jobs:
echo "hacs:" >> ./test_configuration/configuration.yaml
echo " token: CHANGE_ME" >> ./test_configuration/configuration.yaml
- name: 🛠️ Setup Home Assistant
- name: Setup Home Assistant
id: homeassistant
uses: ludeeus/setup-homeassistant@main
with:
Expand All @@ -119,7 +161,7 @@ jobs:
notify_on_failure:
runs-on: ubuntu-latest
name: Trigger Discord notification when jobs fail
needs: ["validate-hassfest", "validate-hacs", "validate-homeassistant"]
needs: ["preflight","validate-hassfest", "validate-hacs", "validate-homeassistant"]
if: ${{ always() && contains(join(needs.*.result, ','), 'failure') && github.event_name == 'schedule' }}
steps:
- name: Send notification
Expand Down

0 comments on commit 4d62b29

Please sign in to comment.