Skip to content
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

Add downstream ci #68

Merged
merged 17 commits into from
Oct 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/ci-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
dependencies: |
ecmwf/ecbuild
MathisRosenhauer/libaec@master
ecmwf/eccodes
dependency_branch: develop
parallelism_factor: 8
self_build: false
14 changes: 14 additions & 0 deletions .github/ci-hpc-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
build:
python: '3.10'
modules:
- ninja
dependencies:
- ecmwf/ecbuild@develop
- ecmwf/eccodes@develop
python_dependencies:
- ecmwf/eccodes-python@develop
env:
- ECCODES_SAMPLES_PATH=$ECCODES_DIR/share/eccodes/samples
- ECCODES_DEFINITION_PATH=$ECCODES_DIR/share/eccodes/definitions
parallel: 64
requirements: tests/downstream-ci-requirements.txt
76 changes: 76 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: ci

on:
# Trigger the workflow on push to master or develop, except tag creation
push:
branches:
- 'master'
- 'develop'
tags-ignore:
- '**'

# Trigger the workflow on pull request
pull_request: ~

# Trigger the workflow manually
workflow_dispatch: ~

# Trigger after public PR approved for CI
pull_request_target:
types: [labeled]

jobs:
# Run CI including downstream packages on self-hosted runners
downstream-ci:
name: downstream-ci
if: ${{ !github.event.pull_request.head.repo.fork && github.event.action != 'labeled' || github.event.label.name == 'approved-for-ci' }}
uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci.yml@main
with:
pdbufr: ecmwf/pdbufr@${{ github.event.pull_request.head.sha || github.sha }}
codecov_upload: true
secrets: inherit

# # Run CI of private downstream packages on self-hosted runners
# private-downstream-ci:
# name: private-downstream-ci
# needs: [downstream-ci]
# if: (success() || failure()) && ${{ !github.event.pull_request.head.repo.fork && github.event.action != 'labeled' || github.event.label.name == 'approved-for-ci' }}
# runs-on: ubuntu-latest
# permissions:
# pull-requests: write
# steps:
# - name: Dispatch private downstream CI
# uses: ecmwf-actions/dispatch-private-downstream-ci@v1
# with:
# token: ${{ secrets.GH_REPO_READ_TOKEN }}
# owner: ecmwf-actions
# repository: private-downstream-ci
# event_type: downstream-ci
# payload: '{"metkit": "ecmwf/metkit@${{ github.event.pull_request.head.sha || github.sha }}"}'

# Build downstream packages on HPC
downstream-ci-hpc:
name: downstream-ci-hpc
if: ${{ !github.event.pull_request.head.repo.fork && github.event.action != 'labeled' || github.event.label.name == 'approved-for-ci' }}
uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci-hpc.yml@main
with:
pdbufr: ecmwf/pdbufr@${{ github.event.pull_request.head.sha || github.sha }}
secrets: inherit

# # Run CI of private downstream packages on HPC
# private-downstream-ci-hpc:
# name: private-downstream-ci-hpc
# needs: [downstream-ci-hpc]
# if: (success() || failure()) && ${{ !github.event.pull_request.head.repo.fork && github.event.action != 'labeled' || github.event.label.name == 'approved-for-ci' }}
# runs-on: ubuntu-latest
# permissions:
# pull-requests: write
# steps:
# - name: Dispatch private downstream CI
# uses: ecmwf-actions/dispatch-private-downstream-ci@v1
# with:
# token: ${{ secrets.GH_REPO_READ_TOKEN }}
# owner: ecmwf-actions
# repository: private-downstream-ci
# event_type: downstream-ci-hpc
# payload: '{"metkit": "ecmwf/metkit@${{ github.event.pull_request.head.sha || github.sha }}"}'
10 changes: 10 additions & 0 deletions .github/workflows/label-public-pr-yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Manage labels of pull requests that originate from forks
name: label-public-pr

on:
pull_request_target:
types: [opened, synchronize]

jobs:
label:
uses: ecmwf-actions/reusable-workflows/.github/workflows/label-pr.yml@v2
7 changes: 5 additions & 2 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
version: 2
formats: []
build:
os: "ubuntu-22.04"
tools:
python: "3.9"
python:
version: 3.8
install:
- requirements: docs/requirements.txt
- requirements: docs/requirements.txt
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ recursive-include tests *.py
recursive-include tests *.yml
recursive-include tests *.csv
recursive-include docs *
recursive-include tests *.txt

2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def parse_version_from(path: str) -> str:
url="https://github.com/ecmwf/pdbufr",
packages=setuptools.find_packages(),
include_package_data=True,
install_requires=["attrs", "eccodes", "pandas"],
install_requires=["attrs", "eccodes", "pandas", "hypothesis"],
extras_require={"tests": ["flake8", "pytest", "pytest-cov", "requests"]},
zip_safe=True,
keywords="eccodes bufr pandas",
Expand Down
1 change: 1 addition & 0 deletions tests/downstream-ci-requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
requests
16 changes: 12 additions & 4 deletions tests/test_40_sample_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -734,6 +734,14 @@ def test_ens_compressed() -> None:


def test_sat_compressed_1() -> None:
def timestamp(s: str) -> T.Any:
ts = pd.Timestamp(s)
try:
ts = ts.as_unit("ns")
except:
pass
return ts

columns = [
"data_datetime",
"latitude",
Expand All @@ -745,7 +753,7 @@ def test_sat_compressed_1() -> None:
]

expected_first_row = {
"data_datetime": pd.Timestamp("2015-08-21 01:59:05"),
"data_datetime": timestamp("2015-08-21 01:59:05"),
"latitude": -44.83389,
"longitude": 171.1635,
"nonCoordinateLatitude": -44.82399,
Expand All @@ -755,7 +763,7 @@ def test_sat_compressed_1() -> None:
}

expected_second_row = {
"data_datetime": pd.Timestamp("2015-08-21 01:59:05"),
"data_datetime": timestamp("2015-08-21 01:59:05"),
"latitude": -44.83389,
"longitude": 171.1635,
"nonCoordinateLatitude": -44.82399,
Expand All @@ -765,7 +773,7 @@ def test_sat_compressed_1() -> None:
}

expected_12_row = {
"data_datetime": pd.Timestamp("2015-08-21 01:59:05"),
"data_datetime": timestamp("2015-08-21 01:59:05"),
"latitude": -44.83389,
"longitude": 171.1635,
"nonCoordinateLatitude": -44.82399,
Expand All @@ -775,7 +783,7 @@ def test_sat_compressed_1() -> None:
}

expected_13_row = {
"data_datetime": pd.Timestamp("2015-08-21 01:59:06"),
"data_datetime": timestamp("2015-08-21 01:59:06"),
"latitude": -44.77121,
"longitude": 171.1515,
"nonCoordinateLatitude": -44.76132,
Expand Down
Loading