From c35c9d8211763783c6d3a330b0fd9a3dea67869a Mon Sep 17 00:00:00 2001
From: Christine Kim <125395064+chkim-usgs@users.noreply.github.com>
Date: Tue, 26 Dec 2023 16:26:59 -0700
Subject: [PATCH] Add github workflows (#20)

* Add github workflows

* added deploy step for docs

* updated ci_testing

---------

Co-authored-by: Kelvin Rodriguez <krodriguez@usgs.gov>
---
 .github/workflows/ci_testing.yml | 141 +++++++++++++++++++++++++++++++
 .github/workflows/deploy.yml     |  55 ++++++++++++
 2 files changed, 196 insertions(+)
 create mode 100644 .github/workflows/ci_testing.yml
 create mode 100644 .github/workflows/deploy.yml

diff --git a/.github/workflows/ci_testing.yml b/.github/workflows/ci_testing.yml
new file mode 100644
index 0000000..e9cd46c
--- /dev/null
+++ b/.github/workflows/ci_testing.yml
@@ -0,0 +1,141 @@
+name: CMake
+
+on: [push, pull_request]
+
+env:
+  # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
+  BUILD_TYPE: Release
+
+jobs:
+  build-library:
+
+    runs-on: ${{ matrix.os }}
+    strategy:
+      matrix:
+        os: [ubuntu-latest, macos-latest]
+        python-version: ["3.8", "3.9", "3.10", "3.11"]
+    defaults:
+      run:
+        shell: bash -l {0}
+    env:
+      SSPICE_DEBUG: y
+    steps:
+      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9
+        with:
+          submodules: true
+      - uses: conda-incubator/setup-miniconda@3b0f2504dd76ef23b6d31f291f4913fb60ab5ff3
+        with:
+          miniforge-version: latest
+          use-mamba: true
+          channels: conda-forge
+          activate-environment: ale
+          environment-file: environment.yml
+          auto-activate-base: false
+          auto-update-conda: true
+          python-version: ${{ matrix.python-version }}
+      - name: Check build environment
+        run: |
+          conda list
+      - name: Configure CMake
+        working-directory: ${{github.workspace}}/build
+        run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSPICEQL_BUILD_DOCS=OFF -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/install
+      - name: Build
+        working-directory: ${{github.workspace}}/build
+        # Execute the build.  You can specify a specific target with "--target <NAME>"
+        run: |
+          cmake --build . --config $BUILD_TYPE
+  
+      - name: Test
+        working-directory: ${{github.workspace}}/build
+        # Execute tests defined by the CMake configuration.
+        # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
+        run: ctest -VV -C $BUILD_TYPE
+  
+      - name: Install
+        working-directory: ${{github.workspace}}/build
+        # Execute the install.  You can specify a specific target with "--target <NAME>"
+        run: |
+          cmake --install . --config $BUILD_TYPE
+  
+      - name: Check install
+        working-directory: ${{github.workspace}}/install
+        # Check that the library installed properly
+        run: |
+            if [ "$RUNNER_OS" == "macOS" ]; then
+              test -e lib/libSpiceQL.dylib
+            elif [ "$RUNNER_OS" == "Linux" ]; then
+              test -e lib/libSpiceQL.so
+            fi
+            test -e include/SpiceQL/spiceql.h
+            rm -rf ${{github.workspace}}/build
+            python -c "import pyspiceql"
+  
+      # compair all json files against the schema 
+      - name: check json files
+        working-directory: ${{github.workspace}}/SpiceQL/db/schema
+        run: |
+          for file in *.json;
+              do
+              pwd
+              jsonschema --instance "$file" spiceMissionSchmea.schema.json 
+          done;
+  
+    build-docs:
+      runs-on: ubuntu-latest
+      defaults:
+        run:
+          shell: bash -l {0}
+      steps:
+        - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9
+        - uses: conda-incubator/setup-miniconda@3b0f2504dd76ef23b6d31f291f4913fb60ab5ff3
+          with:
+              miniconda-version: "latest"
+              activate-environment: spiceql
+              environment-file: environment.yml
+              auto-activate-base: false
+              auto-update-conda: true
+  
+        - name: Conda info
+          run: |
+              conda info
+              conda list
+  
+        - name: Create Build Environment
+          # Some projects don't allow in-source building, so create separate build and install
+          # directorie; we'll use them as our working directories for subsequent commands.
+          run: |
+              cmake -E make_directory ${{github.workspace}}/build
+              cmake -E make_directory ${{github.workspace}}/install
+  
+        - name: Configure CMake
+          working-directory: ${{github.workspace}}/build
+          run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSPICEQL_BUILD_LIB=OFF -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/install
+  
+        - name: Build
+          working-directory: ${{github.workspace}}/build
+          # Execute the build.
+          run: |
+            cmake --build . --config $BUILD_TYPE
+  
+        - name: Check Build Docs
+          working-directory: ${{github.workspace}}/build/docs/sphinx
+          # Check for the built docs
+          run: |
+              test -e index.html
+              test -e reference/api.html
+              test -e reference/tutorials.html
+  
+        - name: Install Docs
+          working-directory: ${{github.workspace}}/build
+          # Install the build.
+          run: |
+            cmake --install . --config $BUILD_TYPE
+  
+        - name: Check Install Docs
+          working-directory: ${{github.workspace}}/install
+          # Check for the built docs
+          run: |
+              test -e share/doc/SpiceQL/sphinx/index.html
+              test -e share/doc/SpiceQL/sphinx/reference/api.html
+              test -e share/doc/SpiceQL/sphinx/reference/tutorials.html
+  
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 0000000..9dc1e6a
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,55 @@
+name: Deploy
+
+on:
+  push:
+    branches:
+      - main
+
+env:
+  ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_TOKEN }}
+
+jobs:
+  anaconda-deploy:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      matrix:
+        os: [ubuntu-latest, macos-latest]
+    defaults:
+      run:
+        shell: bash -l {0}
+    steps:
+    - uses: actions/checkout@v2
+    - uses: conda-incubator/setup-miniconda@v2
+      with:
+          miniconda-version: "latest"
+          auto-activate-base: true
+          auto-update-conda: true
+    - name: Setup conda tools
+      run: |
+          conda config --set always_yes yes
+          conda config --set anaconda_upload yes
+          conda install -c conda-forge conda-build anaconda-client conda-verify
+    - name: Build tarbll
+      run: |
+          conda build --user usgs-astrogeology --label dev -c conda-forge -c tudat-team recipe/
+
+  aws-docs-deploy:
+    if: ${{ github.event.workflow_run.conclusion == 'success' }}
+    runs-on: ubuntu-latest
+    defaults:
+      run:
+        shell: bash -el {0}
+    steps:            
+      - name: Set AWS credentials for upload
+        uses: aws-actions/configure-aws-credentials@0e613a0980cbf65ed5b322eb7a1e075d28913a83
+        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
+        working-directory: ${{github.workspace}}/install
+        run: |
+          ls -l share/doc/SpiceQL/sphinx/
+          aws s3 sync --delete share/doc/SpiceQL/sphinx/ s3://asc-public-docs/software_manuals/spiceql/
+          
\ No newline at end of file
-- 
GitLab