Skip to content

AWS Deployment

AWS Deployment #66

name: AWS Deployment
on:
schedule:
- cron: "0 0 * * MON"
workflow_dispatch:
inputs:
branch:
description: 'Nebari branch to deploy, test, destroy'
required: true
default: develop
type: string
image-tag:
description: 'Nebari image tag created by the nebari-docker-images repo'
required: true
default: main
type: string
tf-log-level:
description: 'Change Terraform log levels'
required: false
default: info
type: choice
options:
- info
- warn
- debug
- trace
- error
env:
AWS_DEFAULT_REGION: "us-west-2"
NEBARI_GH_BRANCH: ${{ github.event.inputs.branch || 'develop' }}
NEBARI_IMAGE_TAG: ${{ github.event.inputs.image-tag || 'main' }}
TF_LOG: ${{ github.event.inputs.tf-log-level || 'info' }}∏
NO_PROVIDER_CREDENTIALS_aws: false
jobs:
# Used to skip cloud provider checks due to "jobs" not supporting {{ env }} variables contexts.
check-for-credentials_aws:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
outputs:
provider_credentials_aws: ${{ steps.flag-check.outputs.provider_credentials_aws }}
steps:
- name: Check if user wants to run AWS integration based on credentials
id: flag-check
run: |
if [ "${{ env.NO_PROVIDER_CREDENTIALS_aws }}" == "true" ]; then
echo "::set-output name=provider_credentials_aws::0"
else
echo "::set-output name=provider_credentials_aws::1"
fi
test-aws-integration:
runs-on: ubuntu-latest
needs: check-for-credentials_aws
if: ${{ needs.check-for-credentials.outputs.provider_credentials_aws == '1' }}
permissions:
id-token: write
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ env.NEBARI_GH_BRANCH }}
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Install Nebari
run: |
pip install .[dev]
playwright install
- name: Retrieve secret from Vault
uses: hashicorp/vault-action@v3.0.0
with:
method: jwt
url: "https://quansight-vault-public-vault-b2379fa7.d415e30e.z1.hashicorp.cloud:8200"
namespace: "admin/quansight"
role: "repository-nebari-dev-nebari-role"
secrets: |
kv/data/repository/nebari-dev/nebari/amazon_web_services/nebari-dev-ci role_name | AWS_ROLE_ARN;
kv/data/repository/nebari-dev/nebari/cloudflare/internal-devops@quansight.com/nebari-dev-ci token | CLOUDFLARE_TOKEN;
- name: Authenticate to AWS
uses: aws-actions/configure-aws-credentials@v1
with:
role-to-assume: ${{ env.AWS_ROLE_ARN }}
role-session-name: github-action
aws-region: ${{ env.AWS_DEFAULT_REGION }}
- name: Integration Tests
run: |
pytest --version
pytest tests/tests_integration/ -vvv -s --cloud aws
env:
NEBARI_SECRET__default_images__jupyterhub: "quay.io/nebari/nebari-jupyterhub:${{ env.NEBARI_IMAGE_TAG }}"
NEBARI_SECRET__default_images__jupyterlab: "quay.io/nebari/nebari-jupyterlab:${{ env.NEBARI_IMAGE_TAG }}"
NEBARI_SECRET__default_images__dask_worker: "quay.io/nebari/nebari-dask-worker:${{ env.NEBARI_IMAGE_TAG }}"