Skip to content

ISIS 9.0.0 Public Release #10

ISIS 9.0.0 Public Release

ISIS 9.0.0 Public Release #10

name: Github Actions - Build Anaconda Release
env:
ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_TOKEN }}
ENCRYPTION_KEY: ${{ secrets.KDU_ENC_KEY }}
on:
workflow_dispatch:
release:
types: [prereleased, released]
push:
branches:
- '*.*.*_RC*'
- '*.*.*_LTS'
jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-14-large]
runs-on: ${{ matrix.os }}
outputs:
isis_version: ${{ steps.set_version.outputs.isis_version }}
built_package: ${{ steps.build_release.outputs.built_package }}
steps:
- uses: actions/checkout@v4
- name: Set ISIS_VERSION
id: set_version
run: echo "isis_version=${{ github.event.release.tag_name || github.ref_name }}" >> "$GITHUB_OUTPUT"
- name: Set up Mambaforge
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-variant: Miniforge3
auto-update-conda: true
use-mamba: true
- name: Build Release
env:
ISIS_VERSION: ${{ steps.set_version.outputs.isis_version }}
run: |
mamba install conda-build anaconda-client
git fetch origin
if [[ "$ISIS_VERSION" =~ .*_RC[0-9]$ ]]; then
git checkout $ISIS_VERSION
else
git checkout refs/tags/$ISIS_VERSION
fi
cd recipe
echo $ENCRYPTION_KEY | openssl enc -aes-256-cbc -d -in kakadu/kakadu_7_9.zip.enc -out kakadu/kakadu_7_9.zip -pbkdf2 -iter 10000 -pass stdin
unzip -j kakadu/kakadu_7_9.zip -d /tmp/kakadu_7_9 -x "__MACOSX/*"
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' "s|/isisData/kakadu|/tmp/kakadu_7_9|g" build.sh
else
sed -i "s|/isisData/kakadu|/tmp/kakadu_7_9|g" build.sh
fi
if [[ "$ISIS_VERSION" =~ .*_RC[0-9]$ ]]; then
conda build . -c usgs-astrogeology -c conda-forge --override-channels --user usgs-astrogeology --label RC
elif [[ "$ISIS_VERSION" =~ .*_LTS$ ]]; then
conda build . -c usgs-astrogeology -c conda-forge --override-channels --user usgs-astrogeology --label LTS
else
conda build . -c usgs-astrogeology -c conda-forge --override-channels --user usgs-astrogeology --label main
fi
BUILT_DIR=$(conda info --base)/conda-bld
BUILT_PACKAGE=$(find "$BUILT_DIR" -name "isis-${ISIS_VERSION}-*.conda" | head -n1)
echo "built_package=$BUILT_PACKAGE" >> "$GITHUB_OUTPUT"
test:
runs-on: ${{ matrix.os }}
needs: build
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-14-large]
env:
ISIS_VERSION: ${{ needs.build.outputs.isis_version }}
steps:
- name: Set up Miniforge
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-variant: Miniforge3
auto-update-conda: true
activate-environment: isis-test
use-mamba: true
mamba-version: "1.5.3"
- name: Conda install and test spiceinit
run: |
source "${CONDA}/etc/profile.d/conda.sh"
conda activate isis-test
if [[ "$ISIS_VERSION" =~ .*_RC[0-9]$ ]]; then
conda install -c conda-forge -c usgs-astrogeology usgs-astrogeology/label/RC::isis=${ISIS_VERSION} -y
elif [[ "$ISIS_VERSION" =~ .*_LTS$ ]]; then
conda install -c conda-forge -c usgs-astrogeology usgs-astrogeology/label/LTS::isis=${ISIS_VERSION} -y
else
conda install -c conda-forge -c usgs-astrogeology isis=${ISIS_VERSION} -y
fi
export ISISROOT=$CONDA_PREFIX
conda list isis
spiceinit -h
- name: Cleanup Anaconda package if spiceinit fails
if: failure()
run: |
echo "Cleaning up Anaconda download..."
BUILT_PACKAGE=${{ needs.build.outputs.built_package }}
echo "Removing package: $BUILT_PACKAGE"
anaconda --token ${{ secrets.ANACONDA_TOKEN }} remove usgs-astrogeology/isis/${BUILT_PACKAGE} -y
docs:
name: Build and Upload ISIS Public Release Docs
runs-on: ubuntu-latest
needs: test
env:
ISIS_VERSION: ${{ needs.build.outputs.isis_version }}
if: |
success() &&
!contains(needs.build.outputs.isis_version, '_RC') &&
!contains(needs.build.outputs.isis_version, '_LTS')
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Conda for doc build
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-variant: Miniforge3
auto-update-conda: true
environment-file: environment.yml
activate-environment: isis
use-mamba: true
- name: Build documentation
run: |
source "${CONDA}/etc/profile.d/conda.sh"
conda activate isis
mkdir build && cd build
export ISISROOT=$(pwd)
cmake -GNinja ../isis
ninja docs
- name: Set AWS credentials for upload
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-west-2
- name: Upload to S3
run: |
cd /home/runner/work/ISIS3/ISIS3/build/docs
if [ -d "${ISIS_VERSION}" ]; then
cd "${ISIS_VERSION}"
echo "Uploading documentation to S3..."
aws s3 sync ./ s3://asc-public-docs/isis-site/${ISIS_VERSION}/ --delete
else
echo "Error: docs/${ISIS_VERSION} directory not found!"
exit 1
fi