Skip to content

πŸš‘ trigger pr terraform plan (#790) #2165

πŸš‘ trigger pr terraform plan (#790)

πŸš‘ trigger pr terraform plan (#790) #2165

Workflow file for this run

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 }}