name: Deploy to Humanitec v2 on: push: branches: [ "main" ] workflow_dispatch: inputs: environment: description: 'Target environment' required: true default: 'dev' type: choice options: - dev - staging - prod env: HUMANITEC_ORG: skillful-wild-chicken-2617 PROJECT_ID: demo-apps-1 # Default environment (used on push); overridden at runtime by workflow_dispatch input DEFAULT_ENV_ID: dev HUMANITEC_TOKEN: ${{ secrets.HUMANITEC_TOKEN }} HUMANITEC_AUTH_TOKEN: ${{ secrets.HUMANITEC_TOKEN }} HUMANITEC_API_PREFIX: https://api.humanitec.dev jobs: deploy: name: Deploy to Humanitec v2 runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install hctl CLI run: | echo "Installing hctl (Humanitec Platform Orchestrator v2 CLI)..." # Install jq if not present (node:20-bullseye base image omits it) if ! command -v jq &>/dev/null; then apt-get update -qq && apt-get install -y -qq jq fi HCTL_VERSION=$(curl -s https://api.github.com/repos/humanitec/hctl/releases/latest | jq -r '.tag_name') echo "Installing hctl ${HCTL_VERSION}..." mkdir -p /tmp/hctl-install curl -sLo /tmp/hctl-install/hctl.tar.gz "https://github.com/humanitec/hctl/releases/download/${HCTL_VERSION}/hctl_${HCTL_VERSION#v}_linux_amd64.tar.gz" tar -xzf /tmp/hctl-install/hctl.tar.gz -C /tmp/hctl-install install -m 755 /tmp/hctl-install/hctl /usr/local/bin/hctl hctl --version - name: Validate environment run: | # Use workflow_dispatch input if provided, otherwise fall back to default DISPATCH_ENV="${{ github.event.inputs.environment }}" ENV_ID="${DISPATCH_ENV:-$DEFAULT_ENV_ID}" echo "ENV_ID=$ENV_ID" >> $GITHUB_ENV echo "Target environment: $ENV_ID" echo " Org: $HUMANITEC_ORG" echo " Project: $PROJECT_ID" echo " API: $HUMANITEC_API_PREFIX" - name: Deploy with Score id: deploy run: | SHORT_SHA="${GITHUB_SHA:0:7}" echo "Deploying to Humanitec v2..." echo " Project: $PROJECT_ID" echo " Environment: $ENV_ID" echo " Commit: $SHORT_SHA" hctl score deploy "$PROJECT_ID" "$ENV_ID" score.yaml \ --no-prompt echo "Deployment successful!" - name: Deployment summary if: always() run: | SHORT_SHA="${GITHUB_SHA:0:7}" echo "## Deployment Result" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY echo "|---|---|" >> $GITHUB_STEP_SUMMARY echo "| Project | \`$PROJECT_ID\` |" >> $GITHUB_STEP_SUMMARY echo "| Environment | \`$ENV_ID\` |" >> $GITHUB_STEP_SUMMARY echo "| Commit | \`$SHORT_SHA\` |" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "[View in Humanitec Console](https://console.humanitec.dev/orgs/$HUMANITEC_ORG/projects/$PROJECT_ID/environments/$ENV_ID)" >> $GITHUB_STEP_SUMMARY publish-techdocs: name: Publish TechDocs runs-on: ubuntu-latest needs: deploy if: github.ref == 'refs/heads/main' env: ENTITY_NAME: demo-app-1-v2 STORAGE_ACCOUNT: bstagecjotdevsttechdocs AZURE_STORAGE_ACCOUNT_KEY: ${{ secrets.TECHDOCS_AZURE_STORAGE_KEY }} steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Python deps run: | apt-get update -qq && apt-get install -y -qq python3-pip pip3 install mkdocs-techdocs-core --quiet - name: Install techdocs-cli run: npm install -g @techdocs/cli --silent - name: Generate TechDocs run: techdocs-cli generate --no-docker --source-dir . --output-dir site/ - name: Publish TechDocs to Azure Blob Storage run: | techdocs-cli publish \ --publisher-type azureBlobStorage \ --azureAccountName "$STORAGE_ACCOUNT" \ --storage-name techdocs \ --entity default/Component/"$ENTITY_NAME" \ --directory site/ - name: TechDocs summary if: always() run: | echo "## TechDocs" >> $GITHUB_STEP_SUMMARY echo "Published docs for \`default/Component/$ENTITY_NAME\` to Azure Blob Storage (\`$STORAGE_ACCOUNT\`)." >> $GITHUB_STEP_SUMMARY