<commit_before>name: build-and-test
on:
  push:
    branches: [ main ]
    tags:
      - 'v[0-9]+.[0-9]+.[0-9]+*'
  pull_request:
env:
  TEST_RESULTS: testbed/tests/results/junit/results.xml

jobs:
  setup-environment:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: v1-go-pkg-mod-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Install dependencies
        if: steps.module-cache.outputs.hit != 'true'
        run: make gomoddownload
      - name: Install Tools
        if: steps.tool-cache.outputs.cache-hit != 'true'
        run: make install-tools

  lint:
    runs-on: ubuntu-latest
    needs: [setup-environment]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: <KEY>{{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Cache Build
        uses: actions/cache@v2
        with:
          path: /home/runner/.cache/go-build
          key: go-build-lint-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Lint
        run: make -j2 golint
      - name: Checks 
        run: make -j4 checklicense misspell checkdoc impi
      - name: Codegem
        run: |
          make generate
          git diff --exit-code ':!*go.sum' || (echo 'Generated code is out of date, please run "make generate" and commit the changes in this PR.' && exit 1)
      - name: Multimod verify
        run: make multimod-verify
  unittest:
    runs-on: ubuntu-latest
    needs: [setup-environment]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: <KEY>{{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Cache Build
        uses: actions/cache@v2
        with:
          path: /home/runner/.cache/go-build
          key: go-build-unittest-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Run Unit Tests
        run: make gotest
  integration-tests:
    runs-on: ubuntu-latest
    needs: [setup-environment]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: v1-go-pkg-mod-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Run Integration Tests
        run: make integration-tests-with-cover

  correctness-traces:
    runs-on: ubuntu-latest
    needs: [setup-environment]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: v1-go-pkg-mod-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Correctness
        run: make -C testbed run-correctness-traces-tests
  correctness-metrics:
    runs-on: ubuntu-latest
    needs: [setup-environment]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: v1-go-pkg-mod-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Correctness
        run: make -C testbed run-correctness-metrics-tests

  build-examples:
    runs-on: ubuntu-latest
    needs: [setup-environment]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Build Examples
        run: make build-examples

  cross-compile:
    runs-on: ubuntu-latest
    needs: [unittest, integration-tests, lint]
    strategy:
      matrix:
        binary:
          - darwin_amd64
          - linux_amd64
          - linux_arm64
          - windows_amd64
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: v1-go-pkg-mod-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Build Collector ${{ matrix.binary }}
        run: make otelcontribcol-${{ matrix.binary }}
      - name: Upload Collector Binaries
        uses: actions/upload-artifact@v2
        with:
          name: collector-binaries
          path: ./bin/*

  build-package:
    runs-on: ubuntu-latest
    needs: [cross-compile]
    strategy:
      fail-fast: false
      matrix:
        package_type: ["deb", "rpm"]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Install Ruby
        uses: actions/setup-ruby@v1
        with:
          ruby-version: '2.6'
      - name: Install fpm
        run: gem install --no-document fpm -v 1.11.0
      - name: Download Collector Binaries
        uses: actions/download-artifact@v2
        with:
          name: collector-binaries
          path: bin/
      - run: chmod +x bin/*
      - name: Set Release Tag
        id: github_tag
        run: ./.github/workflows/scripts/set_release_tag.sh
      - name: Build ${{ matrix.package_type }} amd64 package
        run: ./internal/buildscripts/packaging/fpm/${{ matrix.package_type }}/build.sh "${{ steps.github_tag.outputs.tag }}" "amd64" "./dist/"
      - name: Build ${{ matrix.package_type }} arm64 package
        run: ./internal/buildscripts/packaging/fpm/${{ matrix.package_type }}/build.sh "${{ steps.github_tag.outputs.tag }}" "arm64" "./dist/"
      - name: Test ${{ matrix.package_type }} package
        run: |
          if [[ "${{ matrix.package_type }}" = "deb" ]]; then
              ./internal/buildscripts/packaging/fpm/test.sh dist/otel-contrib-collector*amd64.deb examples/tracing/otel-collector-config.yml
          else
              ./internal/buildscripts/packaging/fpm/test.sh dist/otel-contrib-collector*x86_64.rpm examples/tracing/otel-collector-config.yml
          fi
      - name: Upload Packages
        uses: actions/upload-artifact@v2
        with:
          name: collector-packages
          path: ./dist/*
  windows-msi:
    runs-on: windows-latest
    needs: [cross-compile]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Download Binaries
        uses: actions/download-artifact@v2
        with:
          name: collector-binaries
          path: ./bin/
      - name: Cache Wix
        id: wix-cache
        uses: actions/cache@v2
        with:
          path: |
            "C:\Program Files (x86)\WiX Toolset v3.11"
          key: wix-3.11
      - name: Install Wix Toolset
        if: steps.wix-cache.outputs.cache-hit != 'true'
        run: .\internal\buildscripts\packaging\msi\make.ps1 Install-Tools
      - run: mkdir -p dist
      - name: Build MSI
        run: |
          $Version = if ($env:GITHUB_REF -match '^refs/tags/(\d+\.\d+\.\d+)') { $Matches[1] } else { "0.0.1" }
          .\internal\buildscripts\packaging\msi\make.ps1 New-MSI -Version $Version
      - name: Validate MSI
        run: .\internal\buildscripts\packaging\msi\make.ps1 Confirm-MSI
      - name: Upload MSI
        uses: actions/upload-artifact@v2
        with:
          name: collector-packages
          path: ./dist/*.msi

  publish-check:
    runs-on: ubuntu-latest
    needs: [build-package, windows-msi]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Download Binaries
        uses: actions/download-artifact@v2
        with:
          name: collector-binaries
      - name: Download Packages
        uses: actions/download-artifact@v2
        with:
          name: collector-packages
          path: ./dist/
      - name: Verify Distribution Files Exist
        id: check
        run: ./.github/workflows/scripts/verify-dist-files-exist.sh
  publish-dev:
    runs-on: ubuntu-latest
    needs: [lint, unittest, integration-tests, build-package, windows-msi]
    if: (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) && github.repository == 'open-telemetry/opentelemetry-collector-contrib'
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
          mkdir bin/ dist/
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Download Binaries
        uses: actions/download-artifact@v2
        with:
          name: collector-binaries
          path: ./bin/
      - name: Download Packages
        uses: actions/download-artifact@v2
        with:
          name: collector-packages
          path: ./dist/
      - name: Add Permissions to Tool Binaries
        run: chmod -R +x ./dist
      - name: Verify Distribution Files Exist
        id: check
        run: ./.github/workflows/scripts/verify-dist-files-exist.sh
      - name: Build Docker Image
        if: steps.check.outputs.passed == 'true'
        run: |
            make docker-otelcontribcol
            docker tag otelcontribcol:latest otel/opentelemetry-collector-contrib-dev:$GITHUB_SHA
            docker tag otelcontribcol:latest otel/opentelemetry-collector-contrib-dev:latest
      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      - name: Push Docker Image
        if: steps.check.outputs.passed == 'true'
        run: |
            docker push otel/opentelemetry-collector-contrib-dev:$GITHUB_SHA
            docker push otel/opentelemetry-collector-contrib-dev:latest
  publish-stable:
    runs-on: ubuntu-latest
    needs: [lint, unittest, integration-tests, build-package, windows-msi]
    if: startsWith(github.ref, 'refs/tags/v') && github.repository == 'open-telemetry/opentelemetry-collector-contrib'
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
          mkdir bin/ dist/

      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Download Binaries
        uses: actions/download-artifact@v2
        with:
          name: collector-binaries
          path: ./bin/<commit_msg>`build`: ensure executable flag is set. (#6352)<commit_after>name: build-and-test
on:
  push:
    branches: [ main ]
    tags:
      - 'v[0-9]+.[0-9]+.[0-9]+*'
  pull_request:
env:
  TEST_RESULTS: testbed/tests/results/junit/results.xml

jobs:
  setup-environment:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: v1-go-pkg-mod-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Install dependencies
        if: steps.module-cache.outputs.hit != 'true'
        run: make gomoddownload
      - name: Install Tools
        if: steps.tool-cache.outputs.cache-hit != 'true'
        run: make install-tools

  lint:
    runs-on: ubuntu-latest
    needs: [setup-environment]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: v1-go-pkg-mod-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Cache Build
        uses: actions/cache@v2
        with:
          path: /home/runner/.cache/go-build
          key: go-build-lint-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Lint
        run: make -j2 golint
      - name: Checks 
        run: make -j4 checklicense misspell checkdoc impi
      - name: Codegem
        run: |
          make generate
          git diff --exit-code ':!*go.sum' || (echo 'Generated code is out of date, please run "make generate" and commit the changes in this PR.' && exit 1)
      - name: Multimod verify
        run: make multimod-verify
  unittest:
    runs-on: ubuntu-latest
    needs: [setup-environment]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: v1-go-pkg-mod-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Cache Build
        uses: actions/cache@v2
        with:
          path: /home/runner/.cache/go-build
          key: go-build-unittest-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Run Unit Tests
        run: make gotest
  integration-tests:
    runs-on: ubuntu-latest
    needs: [setup-environment]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: v1-go-pkg-mod-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Run Integration Tests
        run: make integration-tests-with-cover

  correctness-traces:
    runs-on: ubuntu-latest
    needs: [setup-environment]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: v1-go-pkg-mod-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Correctness
        run: make -C testbed run-correctness-traces-tests
  correctness-metrics:
    runs-on: ubuntu-latest
    needs: [setup-environment]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: <KEY>{{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Correctness
        run: make -C testbed run-correctness-metrics-tests

  build-examples:
    runs-on: ubuntu-latest
    needs: [setup-environment]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Build Examples
        run: make build-examples

  cross-compile:
    runs-on: ubuntu-latest
    needs: [unittest, integration-tests, lint]
    strategy:
      matrix:
        binary:
          - darwin_amd64
          - linux_amd64
          - linux_arm64
          - windows_amd64
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
      - name: Cache Go
        id: module-cache
        uses: actions/cache@v2
        with:
          path: |
            /home/runner/go/pkg/mod
          key: v1-go-pkg-mod-${{ runner.os }}-${{ hashFiles('**/go.mod', '**/go.sum') }}
      - name: Build Collector ${{ matrix.binary }}
        run: make otelcontribcol-${{ matrix.binary }}
      - name: Upload Collector Binaries
        uses: actions/upload-artifact@v2
        with:
          name: collector-binaries
          path: ./bin/*

  build-package:
    runs-on: ubuntu-latest
    needs: [cross-compile]
    strategy:
      fail-fast: false
      matrix:
        package_type: ["deb", "rpm"]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Install Ruby
        uses: actions/setup-ruby@v1
        with:
          ruby-version: '2.6'
      - name: Install fpm
        run: gem install --no-document fpm -v 1.11.0
      - name: Download Collector Binaries
        uses: actions/download-artifact@v2
        with:
          name: collector-binaries
          path: bin/
      - run: chmod +x bin/*
      - name: Set Release Tag
        id: github_tag
        run: ./.github/workflows/scripts/set_release_tag.sh
      - name: Build ${{ matrix.package_type }} amd64 package
        run: ./internal/buildscripts/packaging/fpm/${{ matrix.package_type }}/build.sh "${{ steps.github_tag.outputs.tag }}" "amd64" "./dist/"
      - name: Build ${{ matrix.package_type }} arm64 package
        run: ./internal/buildscripts/packaging/fpm/${{ matrix.package_type }}/build.sh "${{ steps.github_tag.outputs.tag }}" "arm64" "./dist/"
      - name: Test ${{ matrix.package_type }} package
        run: |
          if [[ "${{ matrix.package_type }}" = "deb" ]]; then
              ./internal/buildscripts/packaging/fpm/test.sh dist/otel-contrib-collector*amd64.deb examples/tracing/otel-collector-config.yml
          else
              ./internal/buildscripts/packaging/fpm/test.sh dist/otel-contrib-collector*x86_64.rpm examples/tracing/otel-collector-config.yml
          fi
      - name: Upload Packages
        uses: actions/upload-artifact@v2
        with:
          name: collector-packages
          path: ./dist/*
  windows-msi:
    runs-on: windows-latest
    needs: [cross-compile]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Download Binaries
        uses: actions/download-artifact@v2
        with:
          name: collector-binaries
          path: ./bin/
      - name: Cache Wix
        id: wix-cache
        uses: actions/cache@v2
        with:
          path: |
            "C:\Program Files (x86)\WiX Toolset v3.11"
          key: wix-3.11
      - name: Install Wix Toolset
        if: steps.wix-cache.outputs.cache-hit != 'true'
        run: .\internal\buildscripts\packaging\msi\make.ps1 Install-Tools
      - run: mkdir -p dist
      - name: Build MSI
        run: |
          $Version = if ($env:GITHUB_REF -match '^refs/tags/(\d+\.\d+\.\d+)') { $Matches[1] } else { "0.0.1" }
          .\internal\buildscripts\packaging\msi\make.ps1 New-MSI -Version $Version
      - name: Validate MSI
        run: .\internal\buildscripts\packaging\msi\make.ps1 Confirm-MSI
      - name: Upload MSI
        uses: actions/upload-artifact@v2
        with:
          name: collector-packages
          path: ./dist/*.msi

  publish-check:
    runs-on: ubuntu-latest
    needs: [build-package, windows-msi]
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Download Binaries
        uses: actions/download-artifact@v2
        with:
          name: collector-binaries
      - name: Download Packages
        uses: actions/download-artifact@v2
        with:
          name: collector-packages
          path: ./dist/
      - name: Verify Distribution Files Exist
        id: check
        run: ./.github/workflows/scripts/verify-dist-files-exist.sh
  publish-dev:
    runs-on: ubuntu-latest
    needs: [lint, unittest, integration-tests, build-package, windows-msi]
    if: (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) && github.repository == 'open-telemetry/opentelemetry-collector-contrib'
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
          mkdir bin/ dist/
      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Download Binaries
        uses: actions/download-artifact@v2
        with:
          name: collector-binaries
          path: ./bin/
      - run: chmod +x bin/*
      - name: Download Packages
        uses: actions/download-artifact@v2
        with:
          name: collector-packages
          path: ./dist/
      - name: Add Permissions to Tool Binaries
        run: chmod -R +x ./dist
      - name: Verify Distribution Files Exist
        id: check
        run: ./.github/workflows/scripts/verify-dist-files-exist.sh
      - name: Build Docker Image
        if: steps.check.outputs.passed == 'true'
        run: |
            make docker-otelcontribcol
            docker tag otelcontribcol:latest otel/opentelemetry-collector-contrib-dev:$GITHUB_SHA
            docker tag otelcontribcol:latest otel/opentelemetry-collector-contrib-dev:latest
      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      - name: Push Docker Image
        if: steps.check.outputs.passed == 'true'
        run: |
            docker push otel/opentelemetry-collector-contrib-dev:$GITHUB_SHA
            docker push otel/opentelemetry-collector-contrib-dev:latest
  publish-stable:
    runs-on: ubuntu-latest
    needs: [lint, unittest, integration-tests, build-package, windows-msi]
    if: startsWith(github.ref, 'refs/tags/v') && github.repository == 'open-telemetry/opentelemetry-collector-contrib'
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2.1.4
        with:
          go-version: 1.17
      - name: Setup Go Environment
        run: |
          echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
          echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
          mkdir bin/ dist/

      - name: Cache Tools
        id: tool-cache
        uses: actions/cache@v2
        with:
          path: /home/runner/go/bin
          key: v1-tools-${{ runner.os }}-${{ hashFiles('./internal/tools/go.mod') }}
      - name: Download Binaries
        uses: actions/download-artifact@v2
        with:
          name: collector-binaries
          path: ./bin/
      - run: chmod +x bin/*
{'fraction_non_alphanumeric': 0.13479452054794522, 'fraction_numerical': 0.011404109589041096, 'mean_word_length': 1.7757604562737643, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 78, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 30, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '956495', 'n_tokens_mistral': 9627, 'n_tokens_neox': 9281, 'n_words': 2131}