Skip to content

feat(ConfigProvider): Modify config merge to do replace instead of update for Specific tags for Remotely managed collectors #5690

feat(ConfigProvider): Modify config merge to do replace instead of update for Specific tags for Remotely managed collectors

feat(ConfigProvider): Modify config merge to do replace instead of update for Specific tags for Remotely managed collectors #5690

Workflow file for this run

name: PRs checks
on:
pull_request:
branches:
- '**'
defaults:
run:
shell: bash
env:
GO_VERSION: "1.22.6"
jobs:
build-changed:
runs-on: ubuntu-22.04
outputs:
any_changed: ${{ steps.changed-files.outputs.any_changed }}
steps:
- uses: actions/checkout@v4
- name: Check if build related files changed
id: changed-files
uses: tj-actions/changed-files@v44
with:
files: |
**/go.mod
**/go.sum
**/*.go
**/*.yaml
**/*.yml
**/Makefile
**/Makefile.common
**/Dockerfile*
markdownlint:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Check if related files changed
id: changed-files
uses: tj-actions/changed-files@v41
with:
files: |
**/*.md
- uses: actions/setup-node@v4
if: steps.changed-files.outputs.any_changed == 'true'
- name: Install markdownlint
if: steps.changed-files.outputs.any_changed == 'true'
run: make install-markdownlint
- name: Markdownlint check
if: steps.changed-files.outputs.any_changed == 'true'
run: make markdownlint
yamllint:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Install yamllint
run: pip install yamllint
- name: yamllint
run: make yamllint
markdown-link-check:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Check if related files changed
id: changed-files
uses: tj-actions/changed-files@v41
with:
files: |
**/*.md
- uses: gaurav-nelson/github-action-markdown-link-check@v1
if: steps.changed-files.outputs.any_changed == 'true'
with:
config-file: '.markdown_link_check.json'
use-quiet-mode: yes
check-modified-files-only: yes
base-branch: ${{ github.base_ref }}
md-links-lint:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Check if related files changed
id: changed-files
uses: tj-actions/changed-files@v41
with:
files: |
**/*.md
- name: Lint markdown links
if: steps.changed-files.outputs.any_changed == 'true'
run: |
make markdown-links-lint
plugins-check:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Install yq
run: |
sudo wget https://github.com/mikefarah/yq/releases/download/v4.12.1/yq_linux_amd64 -O /usr/bin/yq && sudo chmod +x /usr/bin/yq
- name: Check plugins in README and builder config
run: ./ci/plugins_check.sh
pre-commit-check:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: pre-commit/[email protected]
check-uniform-dependencies:
name: Check uniform dependencies
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Check uniform dependencies
run: make check-uniform-dependencies
shellcheck:
runs-on: ubuntu-20.04
env:
SHELLCHECK_VERSION: 0.10.0
steps:
- uses: actions/checkout@v4
- name: install shellcheck
run: |
curl --retry 10 --retry-max-time 120 --retry-delay 5 -Lo- https://github.com/koalaman/shellcheck/releases/download/v${{ env.SHELLCHECK_VERSION }}/shellcheck-v${{ env.SHELLCHECK_VERSION }}.linux.x86_64.tar.xz | tar -xJf -
sudo cp shellcheck-v${{ env.SHELLCHECK_VERSION }}/shellcheck /usr/local/bin && rm -rf shellcheck-v${{ env.SHELLCHECK_VERSION }}
- name: shellcheck
run: make shellcheck
test:
name: Test
uses: ./.github/workflows/workflow-test.yml
needs:
- build-changed
if: needs.build-changed.outputs.any_changed == 'true'
strategy:
matrix:
include:
- arch_os: linux_amd64
runs-on: ubuntu-20.04
- arch_os: linux_amd64
runs-on: ubuntu-20.04
boringcrypto: true
- arch_os: darwin_arm64
runs-on: macos-15
- arch_os: windows_amd64
runs-on: windows-2022
with:
arch_os: ${{ matrix.arch_os }}
runs-on: ${{ matrix.runs-on }}
boringcrypto: ${{ matrix.boringcrypto == true }}
test-otelcol-config:
name: Test (otelcol-config)
uses: ./.github/workflows/workflow-test-otelcol-config.yml
strategy:
matrix:
include:
- arch_os: linux_amd64
runs-on: ubuntu-20.04
- arch_os: linux_amd64
runs-on: ubuntu-20.04
boringcrypto: true
- arch_os: darwin_amd64
runs-on: macos-15
with:
arch_os: ${{ matrix.arch_os }}
runs-on: ${{ matrix.runs-on }}
save-cache: true
boringcrypto: ${{ matrix.boringcrypto == true }}
lint:
name: Lint (staticcheck)
runs-on: ubuntu-20.04
needs: [ build-changed ]
if: needs.build-changed.outputs.any_changed == 'true'
strategy:
matrix:
arch_os: [ 'linux_amd64' ]
steps:
- uses: actions/checkout@v4
- name: Setup go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
cache: false
- name: Get GOCACHE and GOMODCACHE
run: |
echo "GOMODCACHE=$(go env GOMODCACHE)" >> "$GITHUB_ENV"
echo "GOCACHE=$(go env GOCACHE)" >> "$GITHUB_ENV"
- uses: actions/cache/restore@v4
with:
path: |
${{ env.GOMODCACHE }}/cache
${{ env.GOCACHE }}
key: go-test-${{ env.GO_VERSION }}-${{matrix.arch_os}}-${{ hashFiles('pkg/**/go.sum', 'otelcolbuilder/.otelcol-builder.yaml') }}
restore-keys: |
go-test-${{ env.GO_VERSION }}-${{matrix.arch_os}}-
- uses: actions/cache/restore@v4
with:
path: |
/home/runner/.cache/staticcheck
key: staticcheck-${{ env.GO_VERSION }}-${{matrix.arch_os}}-${{ hashFiles('pkg/**/go.sum', 'otelcolbuilder/.otelcol-builder.yaml') }}
restore-keys: |
staticcheck-${{ env.GO_VERSION }}-${{matrix.arch_os}}-
- name: Install staticcheck
run: make install-staticcheck
- name: Add opentelemetry-collector-builder installation dir to PATH
run: echo "$HOME/bin" >> $GITHUB_PATH
- name: Run staticcheck
run: make golint
get-version:
name: Get next available version
uses: ./.github/workflows/_get-version-workflow.yml
build:
name: Build
uses: ./.github/workflows/workflow-build.yml
needs: [get-version]
strategy:
matrix:
include:
- arch_os: linux_amd64
runs-on: ubuntu-20.04
- arch_os: linux_amd64
runs-on: ubuntu-20.04
fips: true
- arch_os: linux_arm64
runs-on: ubuntu-20.04
- arch_os: darwin_amd64
runs-on: macos-15
- arch_os: darwin_arm64
runs-on: macos-15
- arch_os: windows_amd64
runs-on: windows-2022
- arch_os: windows_amd64
runs-on: windows-2022
fips: true
with:
arch_os: ${{ matrix.arch_os }}
runs-on: ${{ matrix.runs-on }}
fips: ${{ matrix.fips == true }}
version: ${{ needs.get-version.outputs.version }}
secrets:
apple_developer_certificate_p12_base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
apple_developer_certificate_password: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
app_store_connect_password: ${{ secrets.AC_PASSWORD }}
microsoft_certificate: ${{ secrets.MICROSOFT_CERTIFICATE }}
microsoft_certificate_password: ${{ secrets.MICROSOFT_CERTIFICATE_PASSWORD }}
microsoft_certificate_hash: ${{ secrets.MICROSOFT_CERTHASH }}
microsoft_certificate_name: ${{ secrets.MICROSOFT_CERTNAME }}
microsoft_description: ${{ secrets.MICROSOFT_DESCRIPTION }}
build-otelcol-config:
name: Build (otelcol-config)
uses: ./.github/workflows/workflow-build-otelcol-config.yml
strategy:
fail-fast: false
matrix:
include:
- arch_os: darwin_amd64
runs-on: macos-15
- arch_os: darwin_arm64
runs-on: macos-15
- arch_os: linux_amd64
runs-on: ubuntu-20.04
- arch_os: linux_amd64
runs-on: ubuntu-20.04
fips: true
- arch_os: linux_arm64
runs-on: ubuntu-20.04
- arch_os: linux_arm64
runs-on: ubuntu-20.04
fips: true
with:
arch_os: ${{ matrix.arch_os }}
runs-on: ${{ matrix.runs-on }}
fips: ${{ matrix.fips == true }}
save-cache: true
secrets:
apple_developer_certificate_p12_base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
apple_developer_certificate_password: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
app_store_connect_password: ${{ secrets.AC_PASSWORD }}
build-and-test-container-images:
name: Build container
runs-on: ubuntu-20.04
needs:
- build-changed
- build
if: needs.build-changed.outputs.any_changed == 'true'
strategy:
matrix:
arch_os: [ 'linux_amd64', 'linux_arm64']
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/[email protected]
- name: Set up Buildx
id: buildx
uses: docker/[email protected]
- name: Show Buildx platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Download binary action artifact from build phase
uses: actions/download-artifact@v4
with:
name: otelcol-sumo-${{matrix.arch_os}}
path: artifacts/
- name: Build the container image
run: |
cp artifacts/otelcol-sumo-${{matrix.arch_os}} otelcol-sumo
make build-container-multiplatform \
PLATFORM=${{ matrix.arch_os }}
- name: Test built image
run: make test-built-image
- name: Download FIPS binary action artifact from build phase
if: matrix.arch_os == 'linux_amd64'
uses: actions/download-artifact@v4
with:
name: otelcol-sumo-fips-${{matrix.arch_os}}
path: artifacts/
- name: Build the FIPS container image
if: matrix.arch_os == 'linux_amd64'
run: |
cp artifacts/otelcol-sumo-fips-${{matrix.arch_os}} otelcol-sumo
make build-container-multiplatform \
PLATFORM=${{ matrix.arch_os }} BUILD_TYPE_SUFFIX="-fips"
- name: Test built FIPS image
if: matrix.arch_os == 'linux_amd64'
run: make test-built-image BUILD_TAG="latest-fips"
build-windows-container:
name: Build windows container
needs:
- build-changed
- build
if: needs.build-changed.outputs.any_changed == 'true'
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
include:
- arch_os: windows_amd64
base_image_tag: ltsc2022
runs-on: windows-2022
- arch_os: windows_amd64
base_image_tag: ltsc2019
runs-on: windows-2019
steps:
- uses: actions/checkout@v4
- name: Download binary action artifact from build phase
uses: actions/download-artifact@v4
with:
name: otelcol-sumo-${{matrix.arch_os}}.exe
path: artifacts/
- name: Build the container image
run: |
cp artifacts/otelcol-sumo-${{matrix.arch_os}}.exe otelcol-sumo.exe
make build-container-windows \
PLATFORM=${{ matrix.arch_os }}_${{ matrix.base_image_tag }}
- name: Test built image
run: make test-built-image
# TODO: build windows FIPS image