diff --git a/.github/workflows/unit-test-on-pull-request.yml b/.github/workflows/build.yml similarity index 83% rename from .github/workflows/unit-test-on-pull-request.yml rename to .github/workflows/build.yml index 79cd4c4..4a2e372 100644 --- a/.github/workflows/unit-test-on-pull-request.yml +++ b/.github/workflows/build.yml @@ -5,11 +5,12 @@ on: branches: [main] pull_request: branches: ["**"] + workflow_call: jobs: lint: name: Lint - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 strategy: fail-fast: true max-parallel: 2 @@ -64,15 +65,16 @@ jobs: test: name: Test - runs-on: ubuntu-latest strategy: fail-fast: true max-parallel: 2 matrix: go: ["stable"] + os: ["arm-4core-linux", "ubuntu-22.04"] + runs-on: ${{ matrix.os }} steps: - name: Install dependencies - run: sudo apt-get install -y llvm clang dwz cmake curl unzip + run: sudo apt-get update && sudo apt-get install -y --no-install-recommends gcc make llvm clang dwz cmake curl unzip - name: Install Zydis shell: bash run: | @@ -98,11 +100,13 @@ jobs: - name: Install gRPC dependencies env: PB_URL: "https://github.com/protocolbuffers/protobuf/releases/download/v24.4/" - PB_FILE: "protoc-24.4-linux-x86_64.zip" + PB_FILE: "protoc-24.4-linux-%arch%.zip" INSTALL_DIR: "/usr/local" run: | go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.31.0 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0 + ARCH=$(uname -m | sed 's/aarch64/aarch_64/') + PB_FILE=$(echo $PB_FILE | sed "s/%arch%/$ARCH/g") curl -LO "$PB_URL/$PB_FILE" sudo unzip "$PB_FILE" -d "$INSTALL_DIR" 'bin/*' 'include/*' sudo chmod +xr "$INSTALL_DIR/bin/protoc" @@ -114,7 +118,15 @@ jobs: - name: Build run: | echo $PATH - make test + make - name: Tests + # Tests fail on arm + if: matrix.os != 'arm-4core-linux' run: | make test + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: agent-${{ matrix.os == 'arm-4core-linux' && 'aarch64' || 'x86_64' }} + path: otel-profiling-agent + diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..89d1e65 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,35 @@ +name: Release + +on: + push: + branches: [nsavoire/ci_build] + tags: + - 'v*' + +jobs: + build: + name: Build + uses: ./.github/workflows/build.yml + + release: + needs: build + name: Release + runs-on: ubuntu-latest + permissions: + actions: read + contents: write + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + - name: Create assets + run: | + tar czf otel-profiling-agent-${GITHUB_REF_NAME}-aarch64.tar.gz -C agent-aarch64 . + tar czf otel-profiling-agent-${GITHUB_REF_NAME}-x86_64.tar.gz -C agent-x86_64 . + - name: Create Release + uses: ncipollo/release-action@v1 + with: + artifacts: "otel-profiling-agent-${GITHUB_REF_NAME}-aarch64.tar.gz, otel-profiling-agent-${GITHUB_REF_NAME}-x86_64.tar.gz" + token: ${{ secrets.GITHUB_TOKEN }} + allowUpdates: true + omitBody: true + draft: true