ποΈ Adding Fall 2023 GBM blog post (#789) #2162
This file contains 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: ci | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened, closed] | |
branches: [main] | |
push: | |
branches: [main] | |
permissions: | |
contents: write | |
pages: write | |
id-token: write | |
pull-requests: write | |
jobs: | |
check_build_and_deploy_job: | |
if: github.event_name == 'pull_request' && github.event.action != 'closed' | |
runs-on: ubuntu-latest | |
name: Build PR and Deploy π | |
needs: terraform_plan | |
steps: | |
- name: Checkout repo ποΈ | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Use Node 18.x π§ | |
uses: actions/setup-node@v3 | |
with: | |
node-version: "18.x" | |
cache: "yarn" | |
- name: Install Dependencies π¦ | |
run: | | |
yarn install | |
- name: Build βοΈ | |
env: | |
TYPESENSE_HOST: ${{ needs.terraform_plan.outputs.typesense_container_app_fqdn }} | |
TYPESENSE_SEARCH_ONLY_API_KEY: ${{ needs.terraform_plan.outputs.typesense_search_only_api_key }} | |
run: | | |
yarn build | |
- name: Deploy Staging Environment π | |
uses: Azure/static-web-apps-deploy@latest | |
with: | |
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
action: "upload" | |
app_location: "/build" | |
skip_app_build: true | |
skip_deploy_on_missing_secrets: true | |
- name: Run linters and formatter checks π | |
run: | | |
yarn typecheck | |
yarn lint:ci | |
yarn prettier:ci | |
close_pull_request_job: | |
if: github.event_name == 'pull_request' && github.event.action == 'closed' | |
runs-on: ubuntu-latest | |
name: Cleanup Staging Environment π§Ή | |
steps: | |
- name: Cleanup Staging Environment π§Ή | |
uses: Azure/static-web-apps-deploy@latest | |
with: | |
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} | |
action: "close" | |
skip_deploy_on_missing_secrets: true | |
build_release_gh_pages: | |
if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
runs-on: ubuntu-latest | |
name: Build and Push GitHub Pages Site π | |
needs: terraform_apply | |
concurrency: | |
group: build_release_gh_pages | |
cancel-in-progress: true | |
steps: | |
- name: Checkout repo ποΈ | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Use Node 18.x π§ | |
uses: actions/setup-node@v3 | |
with: | |
node-version: "18.x" | |
cache: "yarn" | |
- name: Setup Pages π | |
id: pages | |
uses: actions/configure-pages@v3 | |
- name: Install Dependencies π¦ | |
run: | | |
yarn install | |
- name: Run linter and formatter checks π¨ | |
run: | | |
yarn typecheck | |
yarn lint:ci | |
yarn prettier:ci | |
- name: Build βοΈ | |
env: | |
TYPESENSE_HOST: ${{ needs.terraform_apply.outputs.typesense_container_app_fqdn }} | |
TYPESENSE_SEARCH_ONLY_API_KEY: ${{ needs.terraform_apply.outputs.typesense_search_only_api_key }} | |
run: | | |
yarn build | |
- name: Upload artifact β¬οΈ | |
uses: actions/upload-pages-artifact@v2 | |
with: | |
path: build/ | |
- name: Deploy to GitHub Pages π | |
id: deployment | |
uses: actions/deploy-pages@v2 | |
update_search_db: | |
runs-on: ubuntu-latest | |
name: Update search DB π | |
needs: [terraform_apply, build_release_gh_pages] | |
steps: | |
- name: Checkout repo ποΈ | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Run DocSearch Scraper π | |
run: | | |
docker run \ | |
--env TYPESENSE_API_KEY="${{ secrets.TYPESENSE_API_KEY }}" \ | |
--env TYPESENSE_HOST="${{ needs.terraform_apply.outputs.typesense_container_app_fqdn }}" \ | |
--env TYPESENSE_PORT="443" \ | |
--env TYPESENSE_PROTOCOL="https" \ | |
--env CONFIG="$(cat ./.github/workflows/typesense-scraper-config.json | jq -r tostring)" \ | |
typesense/docsearch-scraper:0.7.0 | |
terraform_plan: | |
runs-on: ubuntu-latest | |
name: Terraform Plan π€π | |
if: github.event_name == 'pull_request' && github.event.action != 'closed' | |
concurrency: | |
group: terraform | |
cancel-in-progress: false | |
outputs: | |
typesense_search_only_api_key: ${{ steps.tf-outputs.outputs.typesense_search_only_api_key }} | |
typesense_container_app_fqdn: ${{ steps.tf-outputs.outputs.typesense_container_app_fqdn }} | |
env: | |
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | |
ARM_TENANT_ID: ${{ secrets.AZURE_AD_TENANT_ID }} | |
ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
ARM_USE_OIDC: true | |
TF_WORKSPACE: prod | |
TF_IN_AUTOMATION: true | |
TF_INPUT: 0 | |
steps: | |
- name: Checkout repo ποΈ | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Azure CLI setup βοΈ | |
uses: azure/login@v1 | |
with: | |
client-id: ${{ env.ARM_CLIENT_ID }} | |
tenant-id: ${{ env.ARM_TENANT_ID }} | |
subscription-id: ${{ env.ARM_SUBSCRIPTION_ID }} | |
- name: Terraform Format π | |
id: fmt | |
uses: dflook/terraform-fmt-check@v1 | |
with: | |
path: tf | |
workspace: ${{ env.TF_WORKSPACE }} | |
- name: Terraform Validate π | |
id: validate | |
uses: dflook/terraform-validate@v1 | |
with: | |
path: tf | |
workspace: ${{ env.TF_WORKSPACE }} | |
- name: Get Typesense collection name βοΈ | |
id: get_typesense_collection_name | |
run: | | |
typesense_collection_name=$(jq -r '.index_name' .github/workflows/typesense-scraper-config.json) | |
echo "typesense_collection_name=$typesense_collection_name" >> "$GITHUB_OUTPUT" | |
- name: Terraform Plan π | |
id: plan | |
uses: dflook/terraform-plan@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
path: tf | |
workspace: ${{ env.TF_WORKSPACE }} | |
variables: | | |
typesense_api_key="${{ secrets.TYPESENSE_API_KEY }}" | |
typesense_rg="${{ secrets.TYPESENSE_RESOURCE_GROUP_NAME }}" | |
typesense_collection_name="${{ steps.get_typesense_collection_name.outputs.typesense_collection_name }}" | |
- name: Get outputs βοΈ | |
uses: dflook/terraform-output@v1 | |
id: tf-outputs | |
with: | |
path: tf | |
workspace: ${{ env.TF_WORKSPACE }} | |
terraform_apply: | |
runs-on: ubuntu-latest | |
name: Terraform Apply π€π | |
environment: azure-container-app | |
concurrency: | |
group: terraform | |
cancel-in-progress: false | |
env: | |
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | |
ARM_TENANT_ID: ${{ secrets.AZURE_AD_TENANT_ID }} | |
ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} | |
ARM_USE_OIDC: true | |
TF_WORKSPACE: prod | |
TF_IN_AUTOMATION: true | |
TF_INPUT: 0 | |
if: github.ref == 'refs/heads/main' && github.event_name == 'push' | |
outputs: | |
typesense_search_only_api_key: ${{ steps.tf-outputs.outputs.typesense_search_only_api_key }} | |
typesense_container_app_fqdn: ${{ steps.tf-outputs.outputs.typesense_container_app_fqdn }} | |
steps: | |
- name: Checkout repo ποΈ | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Azure CLI setup βοΈ | |
uses: azure/login@v1 | |
with: | |
client-id: ${{ env.ARM_CLIENT_ID }} | |
tenant-id: ${{ env.ARM_TENANT_ID }} | |
subscription-id: ${{ env.ARM_SUBSCRIPTION_ID }} | |
- name: Terraform Format π | |
id: fmt | |
uses: dflook/terraform-fmt-check@v1 | |
with: | |
path: tf | |
workspace: ${{ env.TF_WORKSPACE }} | |
- name: Terraform Validate π | |
id: validate | |
uses: dflook/terraform-validate@v1 | |
with: | |
path: tf | |
workspace: ${{ env.TF_WORKSPACE }} | |
- name: Get Typesense collection name βοΈ | |
id: get_typesense_collection_name | |
run: | | |
typesense_collection_name=$(jq -r '.index_name' .github/workflows/typesense-scraper-config.json) | |
echo "typesense_collection_name=$typesense_collection_name" >> "$GITHUB_OUTPUT" | |
- name: Terraform Apply π | |
id: apply | |
uses: dflook/terraform-apply@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
path: tf | |
workspace: ${{ env.TF_WORKSPACE }} | |
variables: | | |
typesense_api_key="${{ secrets.TYPESENSE_API_KEY }}" | |
typesense_rg="${{ secrets.TYPESENSE_RESOURCE_GROUP_NAME }}" | |
typesense_collection_name="${{ steps.get_typesense_collection_name.outputs.typesense_collection_name }}" | |
- name: Get outputs βοΈ | |
uses: dflook/terraform-output@v1 | |
id: tf-outputs | |
with: | |
path: tf | |
workspace: ${{ env.TF_WORKSPACE }} |