Skip to content

Commit

Permalink
Copying workflows from odc-tools with edits
Browse files Browse the repository at this point in the history
  • Loading branch information
Kirill888 committed Oct 12, 2021
1 parent 679174a commit aea4936
Show file tree
Hide file tree
Showing 3 changed files with 446 additions and 0 deletions.
377 changes: 377 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,377 @@
name: Run Code Checks

on:
pull_request:
push:

jobs:
build-wheels:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Setup Python
uses: actions/setup-python@v1
with:
python-version: 3.8

- uses: actions/cache@v2
id: wheels_cache
with:
path: ./wheels
key: wheels-${{ github.sha }}

- name: Install Dependencies
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade setuptools
python -m pip install --upgrade \
toml \
wheel \
twine
python -m pip freeze
- name: Build Clean Packages
run: |
mkdir -p ./wheels/clean
python setup.py bdist_wheel --dist-dir ./wheels/clean/
python setup.py sdist --dist-dir ./wheels/clean/
find ./wheels/clean -type f
- name: Patch Package Versions
run: |
find . -name _version.py | xargs python ./scripts/patch_version.py ${GITHUB_RUN_NUMBER:-0}
- name: Build Dev Packages
run: |
mkdir -p ./wheels/dev
python setup.py bdist_wheel --dist-dir ./wheels/dev/
python setup.py sdist --dist-dir ./wheels/dev/
find ./wheels/dev -type f
build-test-env-base:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- uses: actions/cache@v2
id: conda_cache
with:
path: |
_test_env
key: ${{ runner.os }}-test-env-py38-${{ hashFiles('tests/test-env-py38.yml') }}

- uses: conda-incubator/setup-miniconda@v2
if: steps.conda_cache.outputs.cache-hit != 'true'
with:
channels: conda-forge,defaults
channel-priority: true
activate-environment: ""
mamba-version: "*"
use-mamba: true

- name: Dump Conda Environment Info
shell: bash -l {0}
if: steps.conda_cache.outputs.cache-hit != 'true'
run: |
conda info
conda list
mamba -V
conda config --show-sources
conda config --show
printenv | sort
- name: Build Python Environment for Testing
shell: bash -l {0}
if: steps.conda_cache.outputs.cache-hit != 'true'
run: |
mamba env create -f tests/test-env-py38.yml -p _test_env
- name: Check Python Env
shell: bash -l {0}
if: steps.conda_cache.outputs.cache-hit != 'true'
run: |
mamba env export -p _test_env
test-with-coverage:
runs-on: ubuntu-latest

needs:
- build-test-env-base

steps:
- uses: actions/checkout@v2

- name: Get Conda Environment from Cache
uses: actions/cache@v2
id: conda_cache
with:
path: |
_test_env
key: ${{ runner.os }}-test-env-py38-${{ hashFiles('tests/test-env-py38.yml') }}

- name: Update PATH
shell: bash
run: |
echo "$(pwd)/_test_env/bin" >> $GITHUB_PATH
- name: Install in Edit mode
shell: bash
run: |
which python
which createdb
which datacube
pip install -e . --no-deps
- name: Start Test DB
shell: bash
run: |
echo "Launching test db"
pgdata=$(pwd)/.dbdata
initdb -D ${pgdata} --auth-host=md5 --encoding=UTF8
pg_ctl -D ${pgdata} -l "${pgdata}/pg.log" start
createdb datacube
datacube system init
env:
DATACUBE_DB_URL: postgresql:https:///datacube

- name: Run Tests
shell: bash
run: |
datacube system check
echo "Running Tests"
pytest --cov=. \
--cov-report=html \
--cov-report=xml:coverage.xml \
--timeout=30 \
tests
env:
AWS_DEFAULT_REGION: us-west-2
DASK_TEMPORARY_DIRECTORY: /tmp/dask
DATACUBE_DB_URL: postgresql:https:///datacube

- name: Upload Coverage
if: |
github.repository == 'opendatacube/odc-stac'
uses: codecov/codecov-action@v1
with:
fail_ci_if_error: false
verbose: false


test-wheels:
runs-on: ubuntu-latest

needs:
- build-test-env-base
- build-wheels

steps:
- uses: actions/checkout@v2

- name: Get Wheels from Cache
uses: actions/cache@v2
id: wheels_cache
with:
path: ./wheels
key: wheels-${{ github.sha }}

- name: Get Conda Environment from Cache
uses: actions/cache@v2
id: conda_cache
with:
path: |
_test_env
key: ${{ runner.os }}-test-env-py38-${{ hashFiles('tests/test-env-py38.yml') }}

- name: Update PATH
shell: bash
run: |
echo "$(pwd)/_test_env/bin" >> $GITHUB_PATH
- name: Install wheels for testing
shell: bash
run: |
which python
which createdb
which datacube
ls -lh wheels/clean
python -m pip install --no-deps wheels/clean/*whl
python -m pip check || true
- name: Start Test DB
shell: bash
run: |
echo "Launching test db"
pgdata=$(pwd)/.dbdata
initdb -D ${pgdata} --auth-host=md5 --encoding=UTF8
pg_ctl -D ${pgdata} -l "${pgdata}/pg.log" start
createdb datacube
datacube system init
env:
DATACUBE_DB_URL: postgresql:https:///datacube

- name: Run Tests
shell: bash
run: |
datacube system check
echo "Running Tests"
pytest --timeout=30 tests
env:
AWS_DEFAULT_REGION: us-west-2
DASK_TEMPORARY_DIRECTORY: /tmp/dask
DATACUBE_DB_URL: postgresql:https:///datacube

publish-s3:
if: |
github.event_name == 'push'
&& github.repository == 'opendatacube/odc-stac'
&& github.ref == 'refs/heads/develop'
needs:
- build-wheels
- test-wheels

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Config
id: cfg
if: |
github.ref == 'refs/heads/develop'
&& github.event_name == 'push'
&& github.repository == 'opendatacube/odc-stac'
run: |
echo "::set-output name=publish::yes"
- uses: actions/cache@v2
id: wheels_cache
if: steps.cfg.outputs.publish == 'yes'
with:
path: ./wheels
key: wheels-${{ github.sha }}

- name: Prepare for upload to S3
if: steps.cfg.outputs.publish == 'yes'
run: |
mkdir -p ./pips
./scripts/mk-pip-tree.sh ./wheels/dev/ ./pips
find ./pips -type f
- name: Upload to S3
if: steps.cfg.outputs.publish == 'yes'
run: |
echo "Using Keys: ...${AWS_ACCESS_KEY_ID:(-4)}/...${AWS_SECRET_ACCESS_KEY:(-4)}"
aws s3 ls "${S3_DST}"
aws s3 sync ./pips/ "${S3_DST}"
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: 'ap-southeast-2'
AWS_REGION: 'ap-southeast-2'
S3_DST: 's3:https://datacube-core-deployment/'


publish-pypi:
if: |
github.event_name == 'push'
&& github.repository == 'opendatacube/odc-stac'
&& (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/pypi/publish')
needs:
- build-wheels
- test-wheels

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Config
if: |
github.event_name == 'push'
&& github.repository == 'opendatacube/odc-stac'
&& (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/pypi/publish')
id: cfg
run: |
echo "::set-output name=publish::yes"
- name: Setup Python
if: steps.cfg.outputs.publish == 'yes'
uses: actions/setup-python@v1
with:
python-version: 3.8

- name: Install Twine
if: steps.cfg.outputs.publish == 'yes'
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade setuptools
python -m pip install --upgrade \
toml \
wheel \
twine
python -m pip freeze
- uses: actions/cache@v2
id: wheels_cache
if: steps.cfg.outputs.publish == 'yes'
with:
path: ./wheels
key: wheels-${{ github.sha }}

- name: Upload to PyPI
if: steps.cfg.outputs.publish == 'yes'
env:
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
TWINE_USERNAME: __token__

run: |
ls pips/${PKG}
twine upload --non-interactive --skip-existing wheels/clean/*
check-docs:
runs-on: ubuntu-latest

needs:
- build-test-env-base

steps:
- uses: actions/checkout@v2

- name: Get Conda Environment from Cache
uses: actions/cache@v2
id: conda_cache
with:
path: |
_test_env
key: ${{ runner.os }}-test-env-py38-${{ hashFiles('tests/test-env-py38.yml') }}

- name: Update PATH
shell: bash
run: |
echo "$(pwd)/_test_env/bin" >> $GITHUB_PATH
- name: Install in Edit mode
shell: bash
run: |
pip install -e . --no-deps
- name: Build STAC docs
shell: bash
run: |
make -C docs html
Loading

0 comments on commit aea4936

Please sign in to comment.