name: smoke
on:
  push:
    branches:
      - master
  pull_request:
    paths:
      - '.github/workflows/smoke**'
      - '**Makefile'
      - '**.go'
      - '**.proto'
      - 'go.mod'
      - 'go.sum'
jobs:

  smoke:
    name: Run multi node smoke test
    runs-on: ubuntu-latest
    steps:

    - uses: actions/checkout@v6

    - uses: actions/setup-go@v6
      with:
        go-version: '1.26'
        check-latest: true

    - name: build
      run: make bin-docker CGO_ENABLED=1 BUILD_ARGS=-race

    - name: setup docker image
      working-directory: ./.github/workflows/smoke
      run: ./build.sh

    - name: run smoke
      working-directory: ./.github/workflows/smoke
      run: ./smoke.sh

    - name: setup relay docker image
      working-directory: ./.github/workflows/smoke
      run: ./build-relay.sh

    - name: run smoke relay
      working-directory: ./.github/workflows/smoke
      run: ./smoke-relay.sh

    - name: setup docker image for P256
      working-directory: ./.github/workflows/smoke
      run: NAME="smoke-p256" CURVE=P256 ./build.sh

    - name: run smoke-p256
      working-directory: ./.github/workflows/smoke
      run: NAME="smoke-p256" ./smoke.sh

    - name: build for boringcrypto
      run: make boringcrypto bin-docker CGO_ENABLED=1 BUILD_ARGS=-race

    - name: setup docker image for boringcrypto
      working-directory: ./.github/workflows/smoke
      run: NAME="smoke-boringcrypto" CURVE=P256 ./build.sh

    - name: run smoke-boringcrypto
      working-directory: ./.github/workflows/smoke
      run: NAME="smoke-boringcrypto" ./smoke.sh

    - name: build for fips140
      run: make fips140 bin-docker CGO_ENABLED=1 BUILD_ARGS=-race

    - name: setup docker image for fips140
      working-directory: ./.github/workflows/smoke
      run: NAME="smoke-fips140" CURVE=P256 ./build.sh

    - name: run smoke-fips140
      working-directory: ./.github/workflows/smoke
      run: NAME="smoke-fips140" ./smoke.sh

    timeout-minutes: 10
