Test #153
Workflow file for this run
This file contains hidden or 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: Test | |
| on: | |
| workflow_dispatch: | |
| # Use a manual approval process before PR's are given access to | |
| # the secrets which are required to run the integration tests. | |
| # The PR code should be manually approved to see if it can be trusted. | |
| # When in doubt, do not approve the test run. | |
| # Reference: https://dev.to/petrsvihlik/using-environment-protection-rules-to-secure-secrets-when-building-external-forks-with-pullrequesttarget-hci | |
| pull_request_target: | |
| branches: [ main ] | |
| merge_group: | |
| permissions: | |
| contents: read | |
| jobs: | |
| approve: | |
| # Note: Use approval as a job so that the downstream jobs are only prompted once (if more than 1 matrix job is defined) | |
| name: Approve | |
| environment: | |
| # For security reasons, all pull requests need to be approved first before granting access to secrets | |
| # So the environment should be set to have a reviewer/s inspect it before approving it | |
| name: ${{ github.event_name == 'pull_request_target' && 'Test Pull Request' || 'Test Auto' }} | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Wait for approval | |
| run: echo "Approved" | |
| test: | |
| name: Test | |
| needs: [approve] | |
| environment: | |
| name: Test Auto | |
| runs-on: ubuntu-22.04 | |
| permissions: | |
| contents: read | |
| env: | |
| COMPOSE_PROJECT_NAME: ci_${{github.run_id}}_${{github.run_attempt || '1'}} | |
| DEVICE_ID: ci_${{github.run_id}}_${{github.run_attempt || '1'}} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || '' }} | |
| fetch-depth: 0 | |
| - name: create .env file | |
| run: | | |
| touch .env | |
| echo "DEVICE_ID=$DEVICE_ID" >> .env | |
| echo 'C8Y_BASEURL="${{ secrets.C8Y_BASEURL }}"' >> .env | |
| echo 'C8Y_USER="${{ secrets.C8Y_USER }}"' >> .env | |
| echo 'C8Y_PASSWORD="${{ secrets.C8Y_PASSWORD }}"' >> .env | |
| cat .env | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.9' | |
| cache: 'pip' | |
| cache-dependency-path: | | |
| tests/requirements.txt | |
| - uses: taiki-e/install-action@just | |
| # | |
| # Test | |
| # | |
| - name: Install dependencies | |
| run: | | |
| just venv | |
| - name: Start demo | |
| run: | | |
| just up -d | |
| just bootstrap --no-prompt | |
| - name: Setup tests | |
| run: just setup | |
| - name: Run tests | |
| run: just test | |
| - name: Upload test results | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: reports | |
| path: output | |
| - name: Stop demo | |
| if: always() | |
| run: just down-all | |
| - uses: reubenmiller/setup-go-c8y-cli@main | |
| if: always() | |
| - name: Cleanup Devices | |
| if: always() | |
| run: | | |
| just cleanup "$DEVICE_ID" | |
| generate_report: | |
| name: Publish report | |
| if: ${{ always() && github.event_name == 'pull_request_target' }} | |
| needs: [approve, test] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| # Required to publish system test results to the PR | |
| issues: write | |
| pull-requests: write | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Download reports | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: reports | |
| path: reports | |
| - name: Send report to commit | |
| uses: joonvena/[email protected] | |
| with: | |
| gh_access_token: ${{ secrets.GITHUB_TOKEN }} |