name: "Update Feature Flags" on: schedule: - cron: '0 6 * * 1-5' workflow_call: inputs: ref: default: develop required: true type: string workflow_dispatch: inputs: ref: description: "Ref" default: develop required: true type: string env: LAUNCHDARKLY_DOWNLOAD_PATH: "label_studio/feature_flags.json" FEATURE_FLAGS_COMMIT_MESSAGE: "ci: Update Feature Flags" jobs: commit-feature-flags: name: "Commit Feature Flags" runs-on: ubuntu-latest steps: - uses: hmarr/debug-action@v3.0.0 - name: Add Workflow link to chat ops command comment if: github.event.client_payload.github.payload.comment.id && github.event.client_payload.github.payload.repository.full_name uses: peter-evans/create-or-update-comment@v5 with: token: ${{ secrets.GIT_PAT }} repository: ${{ github.event.client_payload.github.payload.repository.full_name }} comment-id: ${{ github.event.client_payload.github.payload.comment.id }} body: | > [Workflow run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) - name: Configure git shell: bash run: | set -xeuo pipefail git config --global user.name 'robot-ci-heartex' git config --global user.email 'robot-ci-heartex@users.noreply.github.com' - name: Checkout uses: actions/checkout@v6 with: token: ${{ secrets.GIT_PAT }} fetch-depth: 1 ref: ${{ inputs.ref }} - name: Download feature flags env: LAUNCHDARKLY_COMMUNITY_SDK_KEY: ${{ secrets.LAUNCHDARKLY_COMMUNITY_SDK_KEY }} run: | set -xeuo pipefail curl \ --connect-timeout 30 \ --retry 5 \ --retry-delay 10 \ -H "Authorization: $LAUNCHDARKLY_COMMUNITY_SDK_KEY" \ "https://sdk.launchdarkly.com/sdk/latest-all" | jq >"${{ env.LAUNCHDARKLY_DOWNLOAD_PATH }}" if [ "$(jq 'has("flags")' <<< cat ${{ env.LAUNCHDARKLY_DOWNLOAD_PATH }})" = "true" ]; then echo "feature_flags.json is valid" else echo "feature_flags.json is invalid" cat ${{ env.LAUNCHDARKLY_DOWNLOAD_PATH }} exit 1 fi - name: Commit and Push run: | git add "${{ env.LAUNCHDARKLY_DOWNLOAD_PATH }}" git status -s git commit -m '${{ env.FEATURE_FLAGS_COMMIT_MESSAGE }}' -m 'Workflow run: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' || true git push origin HEAD - name: Add reaction to chat ops command comment if: always() && github.event.client_payload.github.payload.comment.id && github.event.client_payload.github.payload.repository.full_name uses: peter-evans/create-or-update-comment@v5 with: token: ${{ secrets.GIT_PAT }} repository: ${{ github.event.client_payload.github.payload.repository.full_name }} comment-id: ${{ github.event.client_payload.github.payload.comment.id }} reactions: ${{ job.status == 'success' && '+1' || '-1' }}