packages feed

github-actions-0.1.0.0: test/golden/configuration-main.yml

# This file is generated by `generate.sh`.
# Generated from https://github.com/bellroy/gha-workflows/tree/master/dhall/workflows/configuration/main.dhall
# Think twice before editing it directly.
concurrency:
  cancel-in-progress: false
  group: "${{ github.ref }}"
env:
  SYSTEM_NAME: Product Configuration
jobs:
  build:
    needs:
      - validateContent
    runs-on: ubuntu-20.04
    steps:
      - if: "github.ref == 'refs/heads/master' || github.ref == 'refs/heads/stable'"
        name: checkout branch
        uses: "bellroy/gha-workflows/composite/checkout@master"
        with:
          fetch-depth: "0"
          token: "${{ env.GH_TOKEN }}"
      - if: "github.ref != 'refs/heads/master' && github.ref != 'refs/heads/stable'"
        name: checkout branch
        uses: "bellroy/gha-workflows/composite/checkout@master"
        with:
          fetch-depth: "1"
          token: "${{ env.GH_TOKEN }}"
      - id: extract_branch
        name: Extract branch name
        run: |
          echo "branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
        shell: bash
      - if: "github.ref == 'refs/heads/master'"
        name: Set env variables for staging
        run: |
          echo "DESTINATION=Staging Environment" >> $GITHUB_ENV
          echo "ENVIRONMENT=staging" >> $GITHUB_ENV
      - if: "github.ref == 'refs/heads/stable'"
        name: Set env variables for production
        run: |
          echo "DESTINATION=Production Environment" >> $GITHUB_ENV
          echo "ENVIRONMENT=production" >> $GITHUB_ENV
      - name: Install and setup nix
        uses: "bellroy/gha-workflows/composite/install-nix@master"
        with:
          bellroy-nix-cache-access: none
          nix-config-access-tokens: "github.com=${{ secrets.READ_HASKELL_REPO_PAT }}"
      - name: Install script packages
        run: |
          sudo apt-get update
          sudo apt-get install -y parallel
      - name: Get Pull Request number
        run: |
          echo "PR_NUMBER=$(gh pr view --json number -q .number)" >> $GITHUB_ENV
        working-directory: "${{ env.GITHUB_WORKSPACE }}"
      - id: changed-files
        name: Get changed files
        uses: "tj-actions/changed-files@48d8f15b2aaa3d255ca5af3eba4870f807ce6b3c"
        with:
          path: "${{ env.GIT_REPOSITORY_PATH }}"
      - id: check_changes
        name: Check for CSV changes
        run: 'echo "csv_changed=${{ steps.changed-files.outputs.all_changed_files == '''' && ''0'' || contains(steps.changed-files.outputs.all_changed_files, ''.csv'') && ''1'' || ''0'' }}" >> $GITHUB_OUTPUT'
      - if: "steps.check_changes.outputs.csv_changed == '1'"
        name: Check that all configuration CSV files are sorted alphabetically
        run: |
          set +e
          IFS= output=$(./scripts/check_configuration_csvs_sorted 2>&1)
          status=$?

          if (($status)); then
            echo "Configuration CSV files are not sorted:" >>/tmp/pr-comment.txt
            echo "" >>/tmp/pr-comment.txt
            echo "\`\`\`" >>/tmp/pr-comment.txt
            echo $output >>/tmp/pr-comment.txt
            echo "\`\`\`" >>/tmp/pr-comment.txt
            exit $status
          else
            echo "All configuration CSV files are sorted."
          fi
      - id: fetch_byproduct
        name: Fetch byproduct
        uses: "bellroy/gha-workflows/composite/get-tool@master"
        with:
          token: "${{ secrets.BELLROY_DEPLOY_USER_TOKEN }}"
          tool-name: byproduct
          tool-version: latest
      - id: fetch_gitapult
        name: Fetch gitapult
        uses: "bellroy/gha-workflows/composite/get-tool@master"
        with:
          token: "${{ secrets.BELLROY_DEPLOY_USER_TOKEN }}"
          tool-name: gitapult
          tool-version: latest
      - id: fetch_config-rules-cli
        name: Fetch config-rules-cli
        uses: "bellroy/gha-workflows/composite/get-tool@master"
        with:
          token: "${{ secrets.BELLROY_DEPLOY_USER_TOKEN }}"
          tool-name: config-rules-cli
          tool-version: latest
      - id: fetch_powerful-owl
        name: Fetch powerful-owl
        uses: "bellroy/gha-workflows/composite/get-tool@master"
        with:
          token: "${{ secrets.BELLROY_DEPLOY_USER_TOKEN }}"
          tool-name: powerful-owl
          tool-version: latest
      - name: Run byproduct once
        run: |
          find products/autogenerated/ -type f -name '*.json' | grep -v './\.' | xargs rm
          ./byproduct execute --once --in products/configuration --out products/autogenerated
      - name: Configure git
        run: |
          git config --global user.name "${{ github.actor }}"
          git config --global user.email "${{ github.actor }}@users.noreply.github.com"
      - name: Update autogenerated product files
        run: |
          git add products/autogenerated
          if git commit -m "Update autogenerated product files"; then
            echo "GENERATED_ANOTHER_COMMIT=true" >> $GITHUB_ENV
          else
            echo "No changes detected"
          fi
      - name: Update products autogenerated content blocks
        run: |
          scripts/update_products_autogenerated_content_blocks
          git add products/content

          if git commit -m "Update autogenerated products content blocks"; then
            echo "GENERATED_ANOTHER_COMMIT=true" >> $GITHUB_ENV
          else
            echo "No changes detected"
          fi
      - name: Set merge base
        run: |
          if [ "${{ github.ref }}" = "refs/heads/master" ]; then
            echo "MERGE_BASE=origin/stable" >> $GITHUB_ENV
          else
            echo "MERGE_BASE=$(git show-branch --merge-base origin/master ${{ steps.extract_branch.outputs.branch }})" >> $GITHUB_ENV
          fi
      - if: "env.PR_NUMBER != 0"
        name: Write byproduct validate output to env variable
        run: |
          set +e
          IFS= output=$(./gitapult changeset --git_root "$GITHUB_WORKSPACE" --from "${{ env.MERGE_BASE }}" | ./byproduct validate --markdown 2>&1)
          status=$?

          if (($status)); then
            echo $output >>/tmp/pr-comment.txt
            exit $status
          else
            echo "Byproduct validation succeeded."
          fi
      - name: Update feed autogenerated content blocks
        run: |
          nix run .#update_feeds_autogenerated_content_blocks
          git add feeds/content

          if git commit -m "Update autogenerated feed content blocks"; then
            echo "GENERATED_ANOTHER_COMMIT=true" >> $GITHUB_ENV
          else
            echo "No changes detected"
          fi
      - name: Update feed autogenerated rendering data
        run: |
          POWERFUL_OWL_COMMAND=$GITHUB_WORKSPACE/powerful-owl POWERFUL_OWL_FOLDER=./feeds/ ./scripts/generate-rendering-data
          git add ./feeds/page_rendering_data
          git add ./feeds/rendering_data

          if git commit -m "Update feed autogenerated rendering data"; then
            echo "GENERATED_ANOTHER_COMMIT=true" >> $GITHUB_ENV
          else
            echo "No changes detected"
          fi
        working-directory: "${{ env.GIT_REPOSITORY_PATH }}"
      - name: Update feed golden tests
        run: |
          scripts/update_feeds_golden_tests
          git add feeds/tests/golden

          if git commit -m "Update autogenerated feeds golden test outputs"; then
            echo "GENERATED_ANOTHER_COMMIT=true" >> $GITHUB_ENV
          else
            echo "No changes detected"
          fi
      - name: Update autogenerated shipping configuration files
        run: |
          set +e
          IFS= output=$(./config-rules-cli shipping-options-transform --input-csv-dir shipping/configuration --output-json-dir shipping/autogenerated)
          status=$?

          if (($status)); then
            echo "Failed to transform shipping data" >>/tmp/pr-comment.txt
            echo "" >>/tmp/pr-comment.txt
            echo "\`\`\`" >>/tmp/pr-comment.txt
            echo $output >>/tmp/pr-comment.txt
            echo "\`\`\`" >>/tmp/pr-comment.txt
            exit $status
          else
            git add shipping/autogenerated
            if git commit -m "Update autogenerated shipping configuration files"; then
              echo "GENERATED_ANOTHER_COMMIT=true" >> $GITHUB_ENV
            else
              echo "No changes detected"
            fi
          fi
      - name: Generate new shipping tests
        run: |
          SHIPPING_TEST_DIRECTORY=shipping/tests
            find $SHIPPING_TEST_DIRECTORY -type f -name '*.result.json' -exec rm {} \;
              ./config-rules-cli -- shipping-options-check --repo-dir .
      - if: "env.PR_NUMBER != 0 && github.ref != 'refs/heads/stable' && github.ref != 'refs/heads/master'"
        name: Commit new shipping tests
        run: |
          if [ $(git status shipping/tests --porcelain=v1 | wc -l) -gt 0 ]
          then
            git add shipping/tests
            git commit -m "Update shipping tests"
            echo "GENERATED_ANOTHER_COMMIT=true" >> $GITHUB_ENV
          fi
      - name: Update autogenerated promotion configuration files
        run: |
          set +e
          IFS= output=$(./config-rules-cli promotion-transform --input-csv-dir promotions/configuration --output-json-dir promotions/autogenerated)
          status=$?

          if (($status)); then
            echo "Failed to transform promotions data" >>/tmp/pr-comment.txt
            echo "" >>/tmp/pr-comment.txt
            echo "\`\`\`" >>/tmp/pr-comment.txt
            echo $output >>/tmp/pr-comment.txt
            echo "\`\`\`" >>/tmp/pr-comment.txt
            exit $status
          else
            git add promotions/autogenerated
            if git commit -m "Update autogenerated promotions configuration files"; then
              echo "GENERATED_ANOTHER_COMMIT=true" >> $GITHUB_ENV
            else
              echo "No changes detected"
            fi
          fi
      - name: Generate new promotion rule tests
        run: |
          PROMOTIONS_TEST_DIRECTORY=promotions/tests
            find $PROMOTIONS_TEST_DIRECTORY -type f -name '*.result.json' -exec rm {} \;
              ./config-rules-cli -- promotion-check --repo-dir .
      - if: "env.PR_NUMBER != 0 && github.ref != 'refs/heads/stable' && github.ref != 'refs/heads/master'"
        name: Commit new promotion tests
        run: |
          if [ $(git status promotions/tests --porcelain=v1 | wc -l) -gt 0 ]
          then
            git add promotions/tests
            git commit -m "Update promotion tests"
            echo "GENERATED_ANOTHER_COMMIT=true" >> $GITHUB_ENV
          fi
      - if: "env.GENERATED_ANOTHER_COMMIT == 'true'"
        name: Push any new commits and exit workflow if commits pushed
        run: |
          git push --set-upstream origin HEAD

          gh run cancel ${{ github.run_id }}
          gh run watch ${{ github.run_id }}
      - id: current-time
        name: Get current time
        run: 'echo "timestamp=$(date -u +"%y%m%d%H%M%S")" >> $GITHUB_OUTPUT'
      - id: extract_changes
        if: "github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master'"
        name: Set changes variable
        run: |
          echo "COMMIT_CHANGES<<EOF" >> $GITHUB_ENV
          echo "$(git log --oneline --format=\"%s\" $(git tag -l [0-9]*_${{ env.ENVIRONMENT }} | tail -n 1)..${{ steps.extract_branch.outputs.branch }} | grep -v 'Merge pull request' | grep -v "Merge branch 'master' into" | sed -e 's/^"//' -e 's/"$//' | cat)" >> $GITHUB_ENV
          echo "EOF" >> $GITHUB_ENV
        shell: bash
        working-directory: "${{ env.GITHUB_WORKSPACE }}"
      - env:
          SLACK_BOT_TOKEN: "${{ secrets.BELLROY_SLACK_TOKEN }}"
        id: slack-deploy
        if: "github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master'"
        name: Slack - Notifications - Post to slack
        uses: "slackapi/slack-github-action@70cd7be8e40a46e8b0eced40b0de447bdb42f68e"
        with:
          channel-id: "${{ env.SLACK_CHANNEL_ID }}"
          payload: |
            {
              "text": ":loudspeaker: *${{ github.actor }}* is deploying *${{ env.SYSTEM_NAME }}* to *${{ env.DESTINATION }}* from *${{ steps.extract_branch.outputs.branch }}*",
              "attachments": [
                {
                  "fallback": "Deployment summary",
                  "color": "ffd966",
                  "fields": [
                    {
                      "title": "What is being deployed",
                      "value": ${{ toJSON(env.COMMIT_CHANGES) }},
                      "short": false
                    },
                    {
                      "title": "Status",
                      "short": true,
                      "value": "In Progress"
                    }
                  ]
                }
              ]
            }
      - if: "github.ref == 'refs/heads/master'"
        name: Push content to staging
        run: |
          set -e
          # XXX: Gitapult cannot distinguish datasets, so we push all data to
          # both endpoints and allow the server to decide what to do.
          # Kafka Webhooks accepts all datasets at once
          ./gitapult run \
            --git_root "$GITHUB_WORKSPACE" \
            --authorization_token "$KW_STAGING_API_KEY" \
            --changeset_url "$KW_STAGING_BASE_URL/gitapult/configuration/records" \
            --revision_url "$KW_STAGING_BASE_URL/gitapult/configuration/revision" \
            --api_key \
            --compress \
            --max-payload-bytes 3000000

          # XXX: V3 doesn't care about rendering data, but it is too large to send.
          # As at 2024-02-14 gitapult does not support selecting which data to send.
          git -C "$GIT_REPOSITORY_PATH" rm feeds/rendering_data/.gitapult.json
          ./gitapult run \
            --git_root "$GITHUB_WORKSPACE" \
            --authorization_token "$SF_STAGING_API_KEY" \
            --changeset_url "$SF_STAGING_BASE_URL/api/v1/configuration/shipping" \
            --revision_url "$SF_STAGING_BASE_URL/api/v1/configuration/shipping/revisions" && \
          git -C "$GIT_REPOSITORY_PATH" restore --staged feeds/rendering_data/.gitapult.json
          git -C "$GIT_REPOSITORY_PATH" restore feeds/rendering_data/.gitapult.json
      - if: "success() && github.ref == 'refs/heads/master'"
        name: Tag published staging content
        run: |
          git tag "${{ join(steps.current-time.outputs.*, '\n') }}_staging" && git push --tags
      - if: "github.ref == 'refs/heads/master'"
        name: Open PR to stable
        run: |
          curl -X POST -H "Accept: application/vnd.github.v3+json" -H "Authorization: token ${{ secrets.BELLROY_DEPLOY_USER_TOKEN }}" https://api.github.com/repos/${{ github.repository }}/pulls -d '{"head":"master","base":"stable","title":"Merge branch master into stable","body":"This PR was automatically generated by CI."}'
          PR_URL=$(curl -sX GET -H "Accept: application/vnd.github.v3+json" -H "Authorization: token ${{ secrets.BELLROY_DEPLOY_USER_TOKEN }}" https://api.github.com/repos/${{ github.repository }}/pulls\?head\=bellroy:master\&base\=stable | jq -r '.[0].html_url | select(length>0)')
          echo "PR_URL=$PR_URL" >> $GITHUB_ENV
      - continue-on-error: true
        if: "github.ref == 'refs/heads/master'"
        name: Set assignee
        run: |
          PR_RESPONSE=$(curl -sX GET -H "Accept: application/vnd.github.v3+json" -H "Authorization: token ${{ secrets.BELLROY_DEPLOY_USER_TOKEN }}" https://api.github.com/repos/${{ github.repository }}/pulls\?head\=bellroy:master\&base\=stable | jq -r '.[0]')
          PR_NUM=$(echo "$PR_RESPONSE" | jq -r ".number")
          PR_ASSIGNEE=$(echo "$PR_RESPONSE" | jq -r ".assignee")
          COMMITS_RESPONSE=$(curl -sX GET -H "Accept: application/vnd.github.v3+json" -H "Authorization: token ${{ secrets.BELLROY_DEPLOY_USER_TOKEN }}" https://api.github.com/repos/${{ github.repository }}/pulls/$PR_NUM/commits)
          FIRST_COMMITTER=$(curl -sX GET -H "Accept: application/vnd.github.v3+json" -H "Authorization: token ${{ secrets.BELLROY_DEPLOY_USER_TOKEN }}" https://api.github.com/repos/${{ github.repository }}/pulls/$PR_NUM/commits | jq -r '. | sort_by(.commit.author.date) | .[0] | .author.login')
          # special case for squashed PRs created by trike-deploy e.g. gha-workflows
          if [[ "$FIRST_COMMITTER" == "trike-deploy" ]]; then
              FIRST_COMMITTER=$(echo "$COMMITS_RESPONSE" | jq -r '. | sort_by(.commit.author.date) | .[0]' | sed -En "s/.*Co-authored-by: (.*) <.*@.*>\",/\1/p")
          fi
          if [[ "$PR_ASSIGNEE" == "null" ]]; then
              curl -sX POST -H "Accept: application/vnd.github.v3+json" -H "Authorization: token ${{ secrets.BELLROY_DEPLOY_USER_TOKEN }}" https://api.github.com/repos/${{ github.repository }}/issues/$PR_NUM/assignees -d "{\"assignees\":[\"$FIRST_COMMITTER\"]}"
          fi
      - if: "github.ref == 'refs/heads/stable'"
        name: Push content to production
        run: |
          set -e
          # XXX: Gitapult cannot distinguish datasets, so we push all data to
          # both endpoints and allow the server to decide what to do.
          # Kafka Webhooks accepts all datasets at once
          ./gitapult run \
            --git_root "$GITHUB_WORKSPACE" \
            --authorization_token "$KW_PRODUCTION_API_KEY" \
            --changeset_url "$KW_PRODUCTION_BASE_URL/gitapult/configuration/records" \
            --revision_url "$KW_PRODUCTION_BASE_URL/gitapult/configuration/revision" \
            --api_key \
            --compress \
            --max-payload-bytes 3000000

          # XXX: V3 doesn't care about rendering data, but it is too large to send.
          # As at 2024-02-14 gitapult does not support selecting which data to send.
          git -C "$GIT_REPOSITORY_PATH" rm feeds/rendering_data/.gitapult.json
          ./gitapult run \
            --git_root "$GITHUB_WORKSPACE" \
            --authorization_token "$SF_PRODUCTION_API_KEY" \
            --changeset_url "$SF_PRODUCTION_BASE_URL/api/v1/configuration/shipping" \
            --revision_url "$SF_PRODUCTION_BASE_URL/api/v1/configuration/shipping/revisions" && \
          git -C "$GIT_REPOSITORY_PATH" restore --staged feeds/rendering_data/.gitapult.json
          git -C "$GIT_REPOSITORY_PATH" restore feeds/rendering_data/.gitapult.json
      - if: "success() && github.ref == 'refs/heads/stable'"
        name: Tag published production content
        run: |
          git tag "${{ join(steps.current-time.outputs.*, '\n') }}_production" && git push --tags
      - if: "github.ref == 'refs/heads/master'"
        name: Set success message variable for staging
        run: |
          echo "SUCCESS_MESSAGE=:tada: \nA PR has been opened against the stable branch: ${{ env.PR_URL }}" >> $GITHUB_ENV
          echo "SUCCESS_MESSAGE_BODY=https://github.com/${{ github.repository }}/commit/${{ github.sha }}/checks\n\n*PR for Production:* ${{ env.PR_URL }}" >> $GITHUB_ENV
      - if: "github.ref == 'refs/heads/stable'"
        name: Set success message variable for production
        run: |
          echo "SUCCESS_MESSAGE=:tada:" >> $GITHUB_ENV
          echo "SUCCESS_MESSAGE_BODY=https://github.com/${{ github.repository }}/commit/${{ github.sha }}/checks" >> $GITHUB_ENV
      - env:
          SLACK_BOT_TOKEN: "${{ secrets.BELLROY_SLACK_TOKEN }}"
        id: slack-deploy-success
        if: "success() && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')"
        name: Post to Slack if published successfully
        uses: "slackapi/slack-github-action@70cd7be8e40a46e8b0eced40b0de447bdb42f68e"
        with:
          channel-id: "${{ env.SLACK_CHANNEL_ID }}"
          payload: |
            {
              "text": ":loudspeaker: *${{ github.actor }}* has deployed *${{ env.SYSTEM_NAME }}* to *${{ env.DESTINATION }}* from *${{ steps.extract_branch.outputs.branch }}* ${{ env.SUCCESS_MESSAGE }}",
              "attachments": [
                {
                  "fallback": "Deployment summary",
                  "color": "00ff00",
                  "fields": [
                    {
                      "title": "What was deployed",
                      "value": ${{ toJSON(env.COMMIT_CHANGES) }},
                      "short": false
                    },
                    {
                      "title": "Status",
                      "short": true,
                      "value": "Deployed"
                    },
                    {
                      "title": "Output",
                      "short": false,
                      "value": "${{ env.SUCCESS_MESSAGE_BODY }}"
                    }
                  ]
                }
              ]
            }
          update-ts: "${{ steps.slack-deploy.outputs.ts }}"
      - env:
          SLACK_BOT_TOKEN: "${{ secrets.BELLROY_SLACK_TOKEN }}"
        id: slack-deploy-failed
        if: "failure() && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')"
        name: Post to Slack if build/deploy fails
        uses: "slackapi/slack-github-action@70cd7be8e40a46e8b0eced40b0de447bdb42f68e"
        with:
          channel-id: "${{ env.SLACK_CHANNEL_ID }}"
          payload: |
            { "text": ":loudspeaker: *BUILD/DEPLOY FAILURE* of *${{ env.SYSTEM_NAME }}* to *${{ env.DESTINATION }}*",
              "attachments": [
                {
                  "fallback": "Deployment summary",
                  "color": "ff0000",
                  "fields": [
                    {
                      "title": "What was being deployed",
                      "value": ${{ toJSON(env.COMMIT_CHANGES) }},
                      "short": false
                    },
                    {
                      "title": "Status",
                      "short": true,
                      "value": "Failed"
                    },
                    {
                      "title": "Who broke it",
                      "value": "${{ github.actor }}"
                    },
                    {
                      "title": "Output",
                      "short": false,
                      "value": "https://github.com/${{ github.repository }}/commit/${{ github.sha }}/checks"
                    }
                  ]
                }
              ]
            }
          update-ts: "${{ steps.slack-deploy.outputs.ts }}"
      - if: "always() && env.PR_NUMBER != 0"
        name: Add comment to PR
        run: "gh pr comment ${{ env.PR_NUMBER }} --body-file /tmp/pr-comment.txt || true"
        working-directory: "${{ env.GITHUB_WORKSPACE }}"
  validateContent:
    runs-on: ubuntu-20.04
    steps:
      - id: checkout_branch
        name: checkout branch
        uses: "bellroy/gha-workflows/composite/checkout@master"
        with:
          fetch-depth: "1"
          path: "${{ env.GITHUB_WORKSPACE }}"
          token: "${{ secrets.BELLROY_DEPLOY_USER_TOKEN }}"
      - id: extract_branch
        name: Extract branch name
        run: |
          echo "branch=${GITHUB_REF#refs/heads/}" >>$GITHUB_OUTPUT
        shell: bash
      - name: Install and setup nix
        uses: "bellroy/gha-workflows/composite/install-nix@master"
        with:
          bellroy-nix-cache-access: none
      - id: fetch_gitapult
        name: Fetch gitapult
        uses: "bellroy/gha-workflows/composite/get-tool@master"
        with:
          token: "${{ secrets.BELLROY_DEPLOY_USER_TOKEN }}"
          tool-name: gitapult
          tool-version: latest
      - id: fetch_powerful-owl
        name: Fetch powerful-owl
        uses: "bellroy/gha-workflows/composite/get-tool@master"
        with:
          token: "${{ secrets.BELLROY_DEPLOY_USER_TOKEN }}"
          tool-name: powerful-owl
          tool-version: latest
      - name: Get Pull Request number
        run: |
          echo "PR_NUMBER=$(gh pr view --json number -q .number)" >> $GITHUB_ENV
        working-directory: "${{ env.GITHUB_WORKSPACE }}"
      - name: Ensure tmp directory exists
        run: mkdir -p tmp
        working-directory: "${{ env.GITHUB_WORKSPACE }}"
      - name: Validate with gitapult
        run: |
          ./gitapult validate --git_root "$GITHUB_WORKSPACE"
      - name: Validate content with powerful-owl
        run: |
          for CONTENT_DIR in feeds products
          do
            if [[ "$PR_NUMBER" ]]
            then
              ./powerful-owl validate --markdown --content_path "$GITHUB_WORKSPACE/$CONTENT_DIR" &>>/tmp/pr-comment.txt
            else
              ./powerful-owl validate --content_path "$GITHUB_WORKSPACE/$CONTENT_DIR"
            fi
          done
      - if: "always() && env.PR_NUMBER != 0"
        name: Add comment to PR
        run: "gh pr comment ${{ env.PR_NUMBER }} --body-file /tmp/pr-comment.txt || true"
        working-directory: "${{ env.GITHUB_WORKSPACE }}"
      - if: "failure() && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/stable')"
        name: Post to slack if build fails
        uses: "bellroy/gha-workflows/composite/slack-update@master"
        with:
          branch: "${{ steps.checkout_branch.outputs.branch }}"
          channel-id: "${{ env.SLACK_CHANNEL_ID }}"
          message-type: build-fail
          show-authors: "true"
          slack-bot-token: "${{ secrets.BELLROY_SLACK_TOKEN }}"
    timeout-minutes: 30
name: Publish
on:
  push:
    branches-ignore:
      - "refs/tags/*_staging"
      - "refs/tags/*_production"