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