ISIS 9.0.0 Public Release #10
This file contains hidden or 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
| 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 |