name: release

on:
  push:
    tags: [ v* ]
  workflow_dispatch:

permissions:
  contents: read

env:
  NUGET_PACKAGES: ${{ github.workspace }}/packages
  DOTNET_CLI_TELEMETRY_OPTOUT: 1

jobs:
  build-container:
    uses: ./.github/workflows/build-container.yml

  build-ubuntu1604-native:
    uses: ./.github/workflows/build-ubuntu1604-native-container.yml

  build:
    needs: build-ubuntu1604-native
    uses: ./.github/workflows/build.yml

  build-nuget-packages:
    needs: [ build, build-container ]
    uses: ./.github/workflows/build-nuget-packages.yml

  create-release:
    name: Create GH release
    runs-on: ubuntu-22.04
    needs: [ build, build-container, build-nuget-packages ]
    permissions:
      contents: write
    timeout-minutes: 10
    steps:

      - name: Checkout
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag: v4.2.2

      - name: Download artifacts
        uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # tag: v4.3.0
        with:
          path: .

      - name: Install zip
        uses: montudor/action-zip@0852c26906e00f8a315c704958823928d8018b28 # tag: v1.0.0

      - run: cd bin-alpine-x64 ; zip -qq -r ../opentelemetry-dotnet-instrumentation-linux-musl-x64.zip . * ; cd ..
      - run: cd bin-alpine-arm64 ; zip -qq -r ../opentelemetry-dotnet-instrumentation-linux-musl-arm64.zip . * ; cd ..
      - run: cd bin-ubuntu-22.04 ; zip -qq -r ../opentelemetry-dotnet-instrumentation-linux-glibc-x64.zip . * ; cd ..
      - run: cd bin-ubuntu-22.04-arm ; zip -qq -r ../opentelemetry-dotnet-instrumentation-linux-glibc-arm64.zip . * ; cd ..
      - run: cd bin-windows-2022 ; zip -qq -r ../opentelemetry-dotnet-instrumentation-windows.zip . * ; cd ..
      - run: cd bin-macos-13 ; zip -qq -r ../opentelemetry-dotnet-instrumentation-macos.zip . * ; cd ..
      - run: cd bin-nuget-packages ; zip -qq -r ../opentelemetry-dotnet-instrumentation-nuget-packages.zip . * ; cd ..
      - run: cp installation-scripts-windows-2022/otel-dotnet-auto-install.sh ./otel-dotnet-auto-install.sh
      - run: cp installation-scripts-windows-2022/OpenTelemetry.DotNet.Auto.psm1 ./OpenTelemetry.DotNet.Auto.psm1

      - name: Create Release
        run: gh release create ${{ github.ref_name }} --title ${{ github.ref_name }} --verify-tag --draft ./*.zip ./otel-dotnet-auto-install.sh ./OpenTelemetry.DotNet.Auto.psm1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
