-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Transport improvements for 2024-W31 #212
Merged
Merged
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
c56812d
Update references in doc/transport/input.rst
khaeru 188f916
Bump mypy, ruff versions in pre-commit config
khaeru 5ec3720
Remove `dev` branch mentions in "transport" CI workflow
khaeru 4071466
Dispatch "transport" CI workflow in message_data
khaeru 695cba7
Ignore E721 in .transport.test_emission
khaeru b90d992
Type hint .transport.{CHN_IND,roadmap} (#210)
khaeru 84bdc4d
Display message_data GHA run URL
khaeru de2446f
Adjust pyproject.toml, MANIFEST.in
khaeru File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,8 @@ | ||
name: MESSAGEix-Transport | ||
|
||
env: | ||
target: transport.yaml --repo=iiasa/message_data | ||
|
||
# Starting point of the workflow. | ||
# Use this value to build from a certain scenario: | ||
# base: --url="ixmp://ixmp-dev/MESSAGEix-GLOBIOM 1.1-R12/baseline_DEFAULT#21" | ||
|
@@ -12,11 +14,11 @@ env: | |
from-step: "" | ||
|
||
on: | ||
# Uncomment these lines for debugging, but leave them commented on 'main'/'dev' | ||
# Uncomment these lines for debugging, but leave them commented on 'main' | ||
# pull_request: | ||
# branches: [ main, dev ] | ||
# branches: [ main ] | ||
# push: | ||
# branches: [ main, dev ] | ||
# branches: [ main ] | ||
schedule: | ||
- cron: "0 1 * * *" # 01:00 UTC = 02:00 CET = 03:00 CEST | ||
workflow_dispatch: {} | ||
|
@@ -27,186 +29,24 @@ concurrency: | |
cancel-in-progress: true | ||
|
||
jobs: | ||
report: | ||
name: MESSAGEix-Transport ${{ matrix.SSP }}${{ matrix.policy }} | ||
# Distribute jobs across any available self-hosted runner(s) | ||
# runs-on: self-hosted | ||
# Use one or a few specific runner(s) | ||
runs-on: [ self-hosted, iiasa-self-hosted-l2 ] | ||
|
||
strategy: | ||
matrix: | ||
# These correspond to short labels used for workflow step names | ||
SSP: | ||
- SSP1 | ||
- SSP2 | ||
- SSP3 | ||
- SSP4 | ||
- SSP5 | ||
policy: | ||
- " policy" | ||
- "" | ||
|
||
steps: | ||
- name: Clean workspace | ||
run: | | ||
rm -rf ${{ github.workspace }}/report/* | ||
|
||
- uses: webfactory/[email protected] | ||
with: | ||
ssh-private-key: | | ||
${{ secrets.MESSAGE_BUILDINGS_PRIVATE_KEY }} | ||
${{ secrets.MESSAGE_TRADE_PRIVATE_KEY }} | ||
${{ secrets.NAVIGATE_WORKFLOW_PRIVATE_KEY }} | ||
|
||
- uses: actions/checkout@v4 | ||
with: | ||
path: message_data | ||
lfs: true | ||
# On GitHub Actions | ||
# submodules: true | ||
# On self-hosted runners | ||
submodules: false | ||
|
||
# NB Needed for self-hosted runner, not for GitHub | ||
- name: Check out Git LFS files | ||
working-directory: message_data | ||
run: git lfs checkout | ||
|
||
# Other repositories required for testing | ||
- name: Check out message-static-data | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: iiasa/message-static-data | ||
token: ${{ secrets.MESSAGE_STATIC_DATA_PAT }} | ||
path: message-static-data | ||
lfs: true | ||
# Only check out the following files to limit bandwidth usage. | ||
# Respectively | ||
# 1. IEA Extended World Energy Balances, OECD source, 2022 edition | ||
sparse-checkout: | | ||
iea/372f7e29-en.zip | ||
sparse-checkout-cone-mode: false | ||
|
||
- name: Connect static data to message_data | ||
run: cp -rsv $(realpath message-static-data)/* message_data/data/ | ||
|
||
- uses: actions/checkout@v4 | ||
with: | ||
repository: iiasa/MESSAGE_Buildings | ||
path: buildings | ||
ssh-key: ${{ secrets.MESSAGE_BUILDINGS_PRIVATE_KEY }} | ||
|
||
# NB Needed for self-hosted runner, not for GitHub | ||
- uses: actions/setup-java@v4 | ||
with: | ||
distribution: temurin | ||
java-version: "17" | ||
|
||
- uses: actions/setup-python@v5 | ||
with: | ||
# Latest version testable on GitHub Actions | ||
python-version: "3.12" | ||
cache: pip | ||
cache-dependency-path: "**/pyproject.toml" | ||
|
||
- uses: iiasa/actions/setup-gams@main | ||
with: | ||
version: 35.2.0 | ||
license: ${{ secrets.GAMS_LICENSE }} | ||
|
||
# NB the IIASA-hosted runner does not have permissions to do "sudo apt-get", | ||
# so the following doesn't work. Rather, the necessary packages | ||
# (graphviz libgraphviz-dev pkg-config) are manually installed on the | ||
# host system | ||
# - uses: ts-graphviz/setup-graphviz@v2 | ||
|
||
# By default, the next step installs dependencies from PyPI. | ||
# To run against unreleased code (on `main`, or other branches for open | ||
# PRs), uncomment or modify the lines below as appropriate. | ||
# - genno and message-ix-models are released frequently and *should* be | ||
# installed from PyPI, with only temporary exceptions. | ||
# - ixmp and message-ix are released less frequently and *may* be installed | ||
# from `main` | ||
- name: Force upgrade to unreleased dependencies | ||
run: | | ||
# pip install --upgrade "genno @ git+https://github.com/khaeru/genno.git@main" | ||
pip install --upgrade "ixmp @ git+https://github.com/iiasa/ixmp.git@main" | ||
pip install --upgrade "message_ix @ git+https://github.com/iiasa/message_ix.git@main" | ||
# Temporary, pending a release that includes iiasa/message-ix-models#161, #166 | ||
pip install --upgrade "message-ix-models[iea-web] @ git+https://github.com/iiasa/message-ix-models.git@main" | ||
|
||
# Upgrade matplotlib | ||
# pyam pins matplotlib < 3.7.1, which conflicts with plotnine per | ||
# https://github.com/has2k1/plotnine/pull/751. Override. | ||
pip install --upgrade matplotlib | ||
|
||
- name: Install package; upgrade dependencies | ||
working-directory: message_data | ||
run: pip install --upgrade --upgrade-strategy=eager --editable .[dl,scgen,tests,transport] | ||
|
||
- name: Configure | ||
run: | | ||
from pathlib import Path | ||
|
||
# Ensure keys are defined | ||
import message_data.model.buildings | ||
from ixmp import config | ||
|
||
config.add_platform( | ||
"ixmp-dev", | ||
"jdbc", | ||
"oracle", | ||
"x8oda.iiasa.ac.at:1521/PIXMP2.iiasa.ac.at", | ||
"${{ secrets.IXMP_DEV_USER }}", | ||
"${{ secrets.IXMP_DEV_PASS }}", | ||
jvmargs="-Xmx16G", | ||
) | ||
|
||
p = Path("${{ github.workspace }}") | ||
config.set("message local data", p / "report") | ||
config.set("message solve options", {"iis": 1, "tilim": 60 * 30}) | ||
config.set("message buildings dir", p / "buildings") | ||
config.save() | ||
|
||
# Equivalent to "(ixmp|message-ix|mix-models) config show" | ||
print(config.path.read_text()) | ||
shell: python | ||
|
||
- name: Fetch data | ||
run: | | ||
mix-models fetch "SSP-Update-3.0" | ||
mix-models fetch "SSP-Update-3.0.1" | ||
|
||
- name: Run MESSAGEix-Transport workflow "${{ env.from-step }}" → "${{ matrix.SSP }}${{ matrix.policy }} reported" | ||
run: | | ||
mix-models \ | ||
${{ env.base }} \ | ||
transport run \ | ||
--base=auto --nodes=R12 --model-extra="ci nightly" \ | ||
--from="${{ env.from-step }}" \ | ||
"${{ matrix.SSP }}${{ matrix.policy }} reported" \ | ||
--go | ||
continue-on-error: true | ||
|
||
- name: Upload results as a build artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: MESSAGEix-Transport ${{ matrix.SSP }}${{ matrix.policy }} | ||
path: | | ||
${{ github.workspace }}/report/ | ||
!${{ github.workspace }}/report/cache/ | ||
if-no-files-found: error | ||
continue-on-error: true | ||
|
||
collate: | ||
name: Collate outputs | ||
needs: report | ||
runs-on: self-hosted | ||
dispatch: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Merge artifacts | ||
uses: actions/upload-artifact/merge@v4 | ||
with: | ||
name: MESSAGEix-Transport | ||
delete-merged: true | ||
- name: Invoke "transport.yaml" workflow in message_data | ||
env: | ||
GH_TOKEN: ${{ secrets.MESSAGE_DATA_DISPATCH_TOKEN }} | ||
run: | | ||
gh workflow run \ | ||
${{ env.target }} --ref fix/transport-workflow \ | ||
--field ref=${{ github.ref }} \ | ||
--field sha=${{ github.sha }} \ | ||
--field base=${{ env.base }} \ | ||
--field from-step=${{ env.from-step }} | ||
|
||
sleep 5 | ||
|
||
gh run list \ | ||
--workflow=${{ env.target }} \ | ||
--json url,status \ | ||
--jq 'map(select(.status != "completed"))[0].url' >> $GITHUB_STEP_SUMMARY |
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great, I especially like the dispatch summary linking directly to the message_data run :)