diff --git a/.github/workflows/updatecli.yml b/.github/workflows/updatecli.yml new file mode 100644 index 000000000..96f8bc617 --- /dev/null +++ b/.github/workflows/updatecli.yml @@ -0,0 +1,46 @@ +--- +name: updatecli + +on: + workflow_dispatch: + schedule: + - cron: "0 5 * * 1-5" + +permissions: + contents: read + +env: + JOB_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" + +jobs: + bump: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Get token + id: get_token + uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a # v2.1.0 + with: + app_id: ${{ secrets.OBS_AUTOMATION_APP_ID }} + private_key: ${{ secrets.OBS_AUTOMATION_APP_PEM }} + permissions: >- + { + "contents": "write", + "pull_requests": "write" + } + repositories: >- + ["docs-builder"] + + - uses: elastic/oblt-actions/updatecli/run@v1 + with: + command: apply --config updatecli/updatecli.d/versions.yml --values updatecli/values.d/scm.yml + env: + GITHUB_TOKEN: ${{ steps.get_token.outputs.token }} + + - if: ${{ failure() }} + uses: elastic/oblt-actions/slack/send@v1 + with: + bot-token: ${{ secrets.SLACK_BOT_TOKEN }} + channel-id: "#docs-team" + message: ":traffic_cone: updatecli failed for `${{ github.repository }}@${{ github.ref_name }}`, please look what's going on <${{ env.JOB_URL }}|here>" diff --git a/updatecli/updatecli.d/versions.yml b/updatecli/updatecli.d/versions.yml new file mode 100644 index 000000000..9f3b84369 --- /dev/null +++ b/updatecli/updatecli.d/versions.yml @@ -0,0 +1,471 @@ +--- +name: Bump release versions in the config/versions.yml + +scms: + githubConfig: + kind: github + spec: + user: '{{ requiredEnv "GITHUB_ACTOR" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + owner: '{{ .scm.owner }}' + repository: '{{ .scm.repository }}' + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + commitusingapi: true + branch: '{{ .scm.branch }}' + force: false + +actions: + docs-builder: + kind: github/pullrequest + scmid: githubConfig + spec: + automerge: false + labels: + - dependencies + title: '[Automation] Bump product version numbers' + +sources: + latest-stack-version: + name: Get latest stack version + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: elasticsearch + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: regex + pattern: "v9.(\\d*).(\\d*)$" + + latest-edot-android-version: + name: Get latest release version for the apm-agent-android + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: apm-agent-android + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-edot-collector-version: + name: Get latest major release version for the elastic-agent + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: elastic-agent + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: regex + pattern: "v9.(\\d*).(\\d*)$" + + latest-edot-dotnet-version: + name: Get latest release version for the elastic-otel-dotnet + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: elastic-otel-dotnet + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-edot-ios-version: + name: Get latest release version for the apm-agent-ios + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: apm-agent-ios + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-edot-java-version: + name: Get latest release version for the elastic-otel-java + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: elastic-otel-java + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-edot-node-version: + name: Get latest release version for the elastic-otel-node + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: elastic-otel-node + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: regex + pattern: "^v(\\d*).(\\d*).(\\d*)$" + + latest-edot-php-version: + name: Get latest release version for the elastic-otel-php + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: elastic-otel-php + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-edot-python-version: + name: Get latest release version for the elastic-otel-python + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: elastic-otel-python + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-eck-version: + name: Get latest release version for Elastic Cloud on Kubernetes + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: cloud-on-k8s + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-ecctl-version: + name: Get latest release version for ecctl + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: ecctl + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-curator-version: + name: Get latest release version for Elasticsearch Curator + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: curator + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-apm-agent-dotnet-version: + name: Get latest release version for APM .NET agent + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: apm-agent-dotnet + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-apm-agent-go-version: + name: Get latest release version for APM Go agent + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: apm-agent-go + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-apm-agent-java-version: + name: Get latest release version for APM Java agent + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: apm-agent-java + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-apm-agent-node-version: + name: Get latest release version for APM Node.js agent + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: apm-agent-nodejs + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-apm-agent-php-version: + name: Get latest release version for APM PHP agent + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: apm-agent-php + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-apm-agent-python-version: + name: Get latest release version for APM Python agent + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: apm-agent-python + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-apm-agent-ruby-version: + name: Get latest release version for APM Ruby agent + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: apm-agent-ruby + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + + latest-apm-agent-rum-version: + name: Get latest release version for APM RUM agent + kind: githubrelease + transformers: + - trimprefix: v + spec: + owner: elastic + repository: apm-agent-rum-js + token: '{{ requiredEnv "GITHUB_TOKEN" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' + versionfilter: + kind: latest + +targets: + update-docs-docset-stack: + name: 'Update config/versions.yml stack {{ source "latest-stack-version" }}' + scmid: githubConfig + sourceid: latest-stack-version + kind: file + spec: + file: config/versions.yml + matchpattern: '(stack: &stack\s+base: [\d\.]+\s+current:)\s+(.+)' + replacepattern: '$1 {{ source "latest-stack-version" }}' + + update-docs-docset-android: + name: 'Update config/versions.yml edot-android {{ source "latest-edot-android-version" }}' + scmid: githubConfig + sourceid: latest-edot-android-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.edot_android.current + + update-docs-docset-collector: + name: 'Update config/versions.yml edot-collector {{ source "latest-edot-collector-version" }}' + scmid: githubConfig + sourceid: latest-edot-collector-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.edot_collector.current + + update-docs-docset-dotnet: + name: 'Update config/versions.yml edot-dotnet {{ source "latest-edot-dotnet-version" }}' + scmid: githubConfig + sourceid: latest-edot-dotnet-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.edot_dotnet.current + + update-docs-docset-ios: + name: 'Update config/versions.yml edot-ios {{ source "latest-edot-ios-version" }}' + scmid: githubConfig + sourceid: latest-edot-ios-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.edot_ios.current + + update-docs-docset-java: + name: 'Update config/versions.yml edot-java {{ source "latest-edot-java-version" }}' + scmid: githubConfig + sourceid: latest-edot-java-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.edot_java.current + + update-docs-docset-node: + name: 'Update config/versions.yml edot-node {{ source "latest-edot-node-version" }}' + scmid: githubConfig + sourceid: latest-edot-node-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.edot_node.current + + update-docs-docset-php: + name: 'Update config/versions.yml edot-php {{ source "latest-edot-php-version" }}' + scmid: githubConfig + sourceid: latest-edot-php-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.edot_php.current + + update-docs-docset-python: + name: 'Update config/versions.yml edot-python {{ source "latest-edot-python-version" }}' + scmid: githubConfig + sourceid: latest-edot-python-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.edot_python.current + + update-docs-docset-eck: + name: 'Update config/versions.yml eck {{ source "latest-eck-version" }}' + scmid: githubConfig + sourceid: latest-eck-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.eck.current + + update-docs-docset-ecctl: + name: 'Update config/versions.yml ecctl {{ source "latest-ecctl-version" }}' + scmid: githubConfig + sourceid: latest-ecctl-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.ecctl.current + + update-docs-docset-curator: + name: 'Update config/versions.yml curator {{ source "latest-curator-version" }}' + scmid: githubConfig + sourceid: latest-curator-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.curator.current + + update-docs-docset-apm-agent-dotnet: + name: 'Update config/versions.yml apm_agent_dotnet {{ source "latest-apm-agent-dotnet-version" }}' + scmid: githubConfig + sourceid: latest-apm-agent-dotnet-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.apm_agent_dotnet.current + + update-docs-docset-apm-agent-go: + name: 'Update config/versions.yml apm_agent_go {{ source "latest-apm-agent-go-version" }}' + scmid: githubConfig + sourceid: latest-apm-agent-go-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.apm_agent_go.current + + update-docs-docset-apm-agent-java: + name: 'Update config/versions.yml apm_agent_java {{ source "latest-apm-agent-java-version" }}' + scmid: githubConfig + sourceid: latest-apm-agent-java-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.apm_agent_java.current + + update-docs-docset-apm-agent-node: + name: 'Update config/versions.yml apm_agent_node {{ source "latest-apm-agent-node-version" }}' + scmid: githubConfig + sourceid: latest-apm-agent-node-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.apm_agent_node.current + + update-docs-docset-apm-agent-php: + name: 'Update config/versions.yml apm_agent_php {{ source "latest-apm-agent-php-version" }}' + scmid: githubConfig + sourceid: latest-apm-agent-php-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.apm_agent_php.current + + update-docs-docset-apm-agent-python: + name: 'Update config/versions.yml apm_agent_python {{ source "latest-apm-agent-python-version" }}' + scmid: githubConfig + sourceid: latest-apm-agent-python-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.apm_agent_python.current + + update-docs-docset-apm-agent-ruby: + name: 'Update config/versions.yml apm_agent_ruby {{ source "latest-apm-agent-ruby-version" }}' + scmid: githubConfig + sourceid: latest-apm-agent-ruby-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.apm_agent_ruby.current + + update-docs-docset-apm-agent-rum: + name: 'Update config/versions.yml apm_agent_rum {{ source "latest-apm-agent-rum-version" }}' + scmid: githubConfig + sourceid: latest-apm-agent-rum-version + kind: yaml + spec: + file: config/versions.yml + key: versioning_systems.apm_agent_rum.current diff --git a/updatecli/values.d/scm.yml b/updatecli/values.d/scm.yml new file mode 100644 index 000000000..f2693d960 --- /dev/null +++ b/updatecli/values.d/scm.yml @@ -0,0 +1,5 @@ +scm: + enabled: true + owner: elastic + repository: docs-builder + branch: main \ No newline at end of file