diff --git a/.github/actions/setup-muse2-release/action.yml b/.github/actions/setup-muse2-release/action.yml deleted file mode 100644 index 680045f..0000000 --- a/.github/actions/setup-muse2-release/action.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Setup MUSE2 from latest release -description: Download latest MUSE2 release asset for current OS and configure MUSE2_PATH -inputs: - github_token: - description: GitHub token for API access - required: true - muse2_exe: - description: MUSE2 executable name for the current OS - required: true -runs: - using: composite - steps: - - name: Download MUSE2 release asset - shell: bash - env: - GITHUB_TOKEN: ${{ inputs.github_token }} - run: | - gh release download \ - --repo EnergySystemsModellingLab/MUSE2 \ - --pattern "${{ runner.os == 'Windows' && 'muse2_windows*.zip' || runner.os == 'macOS' && 'muse2_macos_arm*.tar.gz' || 'muse2_linux*.tar.gz' }}" \ - --output "muse2_asset_download" \ - --clobber - - - name: Extract and set MUSE2_PATH (Linux / macOS) - if: runner.os == 'Linux' || runner.os == 'macOS' - shell: bash - run: | - mkdir -p muse2_bin - tar -xf muse2_asset_download -C muse2_bin - chmod +x "muse2_bin/${{ inputs.muse2_exe }}" - echo "MUSE2_PATH=${{ github.workspace }}/muse2_bin/${{ inputs.muse2_exe }}" >> "$GITHUB_ENV" - - - name: Extract and set MUSE2_PATH (Windows) - if: runner.os == 'Windows' - shell: pwsh - run: | - New-Item -ItemType Directory -Force -Path muse2_bin | Out-Null - Rename-Item -Path "muse2_asset_download" -NewName "muse2_asset_download.zip" - Expand-Archive -Path "muse2_asset_download.zip" -DestinationPath muse2_bin -Force - $exePath = "${{ github.workspace }}\muse2_bin\${{ inputs.muse2_exe }}" - echo "MUSE2_PATH=$exePath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a947b5c..a485097 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,5 @@ -name: Test against MUSE2 +name: Test with MUSE2 + on: push: branches: [main] @@ -6,19 +7,45 @@ on: schedule: - cron: 0 5 * * 1 workflow_dispatch: - workflow_call: + release: + types: [published] jobs: - # test_release: - # name: Latest MUSE2 release - # uses: ./.github/workflows/test-with-muse2.yml - # with: - # muse2_source: release - # secrets: inherit - - test_main: - name: Current MUSE2 main branch - uses: ./.github/workflows/test-with-muse2.yml - with: - muse2_source: main - secrets: inherit + test: + name: Run Pytest + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + + steps: + - uses: actions/checkout@v6 + + - uses: astral-sh/setup-uv@v7 + with: + enable-cache: true + prune-cache: false + activate-environment: true + python-version: '3.14' + + - name: Install dependencies + run: uv sync + + - name: Setup MUSE2 from main + uses: ./.github/actions/setup-muse2-main + + - name: Verify MUSE2 installation + uses: ./.github/actions/verify-muse2 + + - name: Run tests + run: pytest + + - name: Upload coverage to Codecov + # Latest linux release only - they should all be the same + if: runner.os == 'Linux' && github.event_name == 'release' + uses: codecov/codecov-action@v6 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./coverage.xml + fail_ci_if_error: true diff --git a/.github/workflows/test-with-muse2.yml b/.github/workflows/test-with-muse2.yml deleted file mode 100644 index a10eaa7..0000000 --- a/.github/workflows/test-with-muse2.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: Test with MUSE2 - -on: - workflow_call: - inputs: - muse2_source: - description: Which MUSE2 source to test against (release or main) - required: true - type: string - secrets: - CODECOV_TOKEN: - required: true - -jobs: - test: - name: Run Pytest - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - include: - - os: ubuntu-latest - python-version: '3.14' - muse2_exe: muse2 - - os: windows-latest - python-version: '3.14' - muse2_exe: muse2.exe - - os: macos-latest - python-version: '3.14' - muse2_exe: muse2 - - steps: - - uses: actions/checkout@v6 - - - uses: astral-sh/setup-uv@v7 - with: - enable-cache: true - prune-cache: false - activate-environment: true - python-version: ${{ matrix.python-version }} - - - name: Install dependencies - run: uv sync - - - name: Setup MUSE2 from main - if: inputs.muse2_source == 'main' - uses: ./.github/actions/setup-muse2-main - - - name: Setup MUSE2 from latest release - if: inputs.muse2_source == 'release' - uses: ./.github/actions/setup-muse2-release - with: - github_token: ${{ github.token }} - muse2_exe: ${{ matrix.muse2_exe }} - - - name: Verify MUSE2 installation - uses: ./.github/actions/verify-muse2 - - - name: Run tests - run: pytest - - - name: Upload coverage to Codecov - # Latest linux release only - they should all be the same - if: runner.os == 'Linux' && inputs.muse2_source == 'release' - uses: codecov/codecov-action@v6 - with: - token: ${{ secrets.CODECOV_TOKEN }} - files: ./coverage.xml - fail_ci_if_error: true