humctl score deploy
#33
Workflow file for this run
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: frontent-pr | |
on: | |
pull_request: | |
paths: | |
- 'apps/frontend/**' | |
- '.github/workflows/frontend-pr.yaml' | |
permissions: | |
contents: read | |
pull-requests: write | |
env: | |
WORKLOAD_FOLDER: 'apps/frontend/' | |
BASE_ENVIRONMENT: 'development' | |
ENVIRONMENT_TYPE: 'development' | |
ENVIRONMENT_ID: pr-${{ github.event.number }}-frontend | |
ENVIRONMENT_NAME: PR-${{ github.event.number }} | |
HUMCTL_VERSION: '0.19.1' | |
jobs: | |
job: | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout code | |
uses: actions/checkout@v3 | |
- name: install humctl | |
uses: humanitec/setup-cli-action@v1 | |
with: | |
version: ${{ env.HUMCTL_VERSION }} | |
- name: create humanitec env | |
run: | | |
humctl create environment ${{ env.ENVIRONMENT_ID }} \ | |
--token ${{ secrets.HUMANITEC_TOKEN }} \ | |
--org ${{ secrets.HUMANITEC_ORG }} \ | |
--app ${{ vars.APP_NAME }} \ | |
--name ${{ env.ENVIRONMENT_NAME }} \ | |
-t ${{ env.ENVIRONMENT_TYPE }} \ | |
--from ${{ env.BASE_ENVIRONMENT }} \ | |
|| true | |
- name: humctl score deploy | |
run: | | |
HUMANITEC_CLI_ALPHA_FEATURES=score-deploy humctl score deploy \ | |
--deploy-config apps/score.deploy.yaml \ | |
--image ${{ env.IMAGE_NAME }}@${IMAGE_DIGEST} \ | |
--message "$(curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "${{ github.event.pull_request.commits_url }}?per_page=10" | jq -r .[-1].commit.message)" \ | |
--workload-source-url-prefix "https://github.com/${{ github.repository }}/blob/${{ github.head_ref }}" \ | |
--token ${{ secrets.HUMANITEC_TOKEN }} \ | |
--org ${{ secrets.HUMANITEC_ORG }} \ | |
--app ${{ vars.APP_NAME }} \ | |
--env ${{ env.ENVIRONMENT_ID }} \ | |
--wait | |
- name: build comment message | |
if: ${{ always() }} | |
run: | | |
DEPLOYMENT_ID=$(humctl get deployment . -o json \ | |
--token ${{ secrets.HUMANITEC_TOKEN }} \ | |
--org ${{ secrets.HUMANITEC_ORG }} \ | |
--app ${{ vars.APP_NAME }} \ | |
--env ${{ env.ENVIRONMENT_ID }} \ | |
| jq -r .metadata.id) | |
ENV_URL="https://app.humanitec.io/orgs/"${{ secrets.HUMANITEC_ORG }}"/apps/"${{ vars.APP_NAME }}"/envs/"${{ env.ENVIRONMENT_ID }}"/deploys/"${DEPLOYMENT_ID} | |
DOMAINS=$(humctl get active-resources \ | |
--token ${{ secrets.HUMANITEC_TOKEN }} \ | |
--org ${{ secrets.HUMANITEC_ORG }} \ | |
--app ${{ vars.APP_NAME }} \ | |
--env ${{ env.ENVIRONMENT_ID }} -o json \ | |
| jq -r '. | map(. | select(.metadata.type == "dns")) | map((.metadata.res_id | split(".") | .[1]) + ": [" + .status.resource.host + "](https://" + .status.resource.host + ")") | join("\n")') | |
DEPLOYMENT_ERRORS=$(humctl get deployment-error \ | |
--token ${{ secrets.HUMANITEC_TOKEN }} \ | |
--org ${{ secrets.HUMANITEC_ORG }} \ | |
--app ${{ vars.APP_NAME }} \ | |
--env ${{ env.ENVIRONMENT_ID }} -o json) | |
if [ "$DEPLOYMENT_ERRORS" = "[]" ]; then | |
echo "## Deployment successfully completed for ${{ env.ENVIRONMENT_NAME }}! :tada:" >> pr_message.txt | |
echo "" >> pr_message.txt | |
else | |
echo "## Deployment failed for ${{ env.ENVIRONMENT_NAME }}! :x:" >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "### Errors:" >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo '```json' >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "$DEPLOYMENT_ERRORS" | jq .[0].status.message -r >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo '```' >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "<details><summary>Errors details</summary>" >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "### Errors details:" >> pr_message.txt | |
echo '```json' >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "$DEPLOYMENT_ERRORS" >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo '```' >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "</details>" >> pr_message.txt | |
echo "" >> pr_message.txt | |
fi | |
echo "### [View in Humanitec]($ENV_URL)" >> pr_message.txt | |
echo "Deployment ID: $DEPLOYMENT_ID" >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "### Domains:" >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "$DOMAINS" >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "<details><summary>Deployment diff</summary>" >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "### Deployment diff:" >> pr_message.txt | |
echo '```json' >> pr_message.txt | |
echo "" >> pr_message.txt | |
humctl diff sets env/${{ env.ENVIRONMENT_ID }} env/${{ env.BASE_ENVIRONMENT }} \ | |
--token ${{ secrets.HUMANITEC_TOKEN }} \ | |
--org ${{ secrets.HUMANITEC_ORG }} \ | |
--app ${{ vars.APP_NAME }} -o json >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo '```' >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "</details>" >> pr_message.txt | |
if [ "$DEPLOYMENT_ERRORS" = "[]" ]; then | |
echo "<details><summary>Active Resources Usage</summary>" >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "### Active Resources Usage:" >> pr_message.txt | |
echo '```none' >> pr_message.txt | |
echo "" >> pr_message.txt | |
humctl resources active-resource-usage \ | |
--env ${{ env.ENVIRONMENT_ID }} \ | |
--token ${{ secrets.HUMANITEC_TOKEN }} \ | |
--org ${{ secrets.HUMANITEC_ORG }} \ | |
--app ${{ vars.APP_NAME }} >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo '```' >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "</details>" >> pr_message.txt | |
fi | |
if [ "$DEPLOYMENT_ERRORS" = "[]" ]; then | |
echo "<details><summary>Resources Graph</summary>" >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "### Resources Graph:" >> pr_message.txt | |
echo '```none' >> pr_message.txt | |
echo "" >> pr_message.txt | |
humctl resources graph \ | |
--env ${{ env.ENVIRONMENT_ID }} \ | |
--token ${{ secrets.HUMANITEC_TOKEN }} \ | |
--org ${{ secrets.HUMANITEC_ORG }} \ | |
--app ${{ vars.APP_NAME }} >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo '```' >> pr_message.txt | |
echo "" >> pr_message.txt | |
echo "</details>" >> pr_message.txt | |
fi | |
cat pr_message.txt | |
- name: comment pr | |
if: ${{ always() }} | |
uses: thollander/actions-comment-pull-request@v2 | |
with: | |
filePath: pr_message.txt |