Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
4 changes: 2 additions & 2 deletions .ci/versions.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"erlang": "27.2",
"rabbitmq": "4.0.5"
"erlang": "27.3.4.6",
"rabbitmq": "4.2.1"
}
132 changes: 60 additions & 72 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
@@ -1,62 +1,69 @@
name: Build and Test

on:
pull_request:
branches:
- main
push:
branches:
- main
workflow_dispatch:

permissions:
contents: read

jobs:
test:
docker-build:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
go: ['1.24']
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and export
uses: docker/build-push-action@v5
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
file: CiDockerfile
file: ${{ github.workspace }}/.ci/Dockerfile
tags: rabbitmq_tls:latest
outputs: type=docker,dest=/tmp/rabbitmq_tls.tar
- name: Upload artifact
uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: rabbitmq_tls
path: /tmp/rabbitmq_tls.tar
- name: Download artifact
uses: actions/download-artifact@v4
test:
runs-on: ubuntu-latest
needs: docker-build
strategy:
fail-fast: false
matrix:
go: ['1.24', '1.25']
steps:
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: rabbitmq_tls
path: /tmp
- name: Load image
- name: Load docker image
run: |
docker load --input /tmp/rabbitmq_tls.tar
docker image ls -a
docker run -d --rm --name rabbitmq-stream-client-test \
-p 5552:5552 -p 5672:5672 -p 5671:5671 -p 5551:5551 -p 15672:15672 \
-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbitmq_stream advertised_host localhost" \
rabbitmq_tls
- name: wait for running
-p 5552:5552 -p 5672:5672 -p 5671:5671 -p 5551:5551 -p 15672:15672 \
-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbitmq_stream advertised_host localhost" \
rabbitmq_tls
- name: Wait for RabbitMQ to start
run: |
docker exec rabbitmq-stream-client-test /bin/bash -c 'ps -aux'
docker exec rabbitmq-stream-client-test /bin/bash -c 'sleep 10'
docker exec rabbitmq-stream-client-test /bin/bash -c 'rabbitmqctl status'
docker exec rabbitmq-stream-client-test /bin/bash -c 'rabbitmqctl wait --pid 1 --timeout 70'
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
docker exec rabbitmq-stream-client-test /bin/bash -c 'rabbitmqctl await_startup'
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0
id: setup_go
with:
go-version: ${{ matrix.go }}
check-latest: true
- name: Install golangci-lint
run: go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest
- run: make test GO_VERSION=${{ steps.setup_go.outputs.go-version }}
- uses: actions/checkout@main
- uses: codecov/codecov-action@v5
- name: Get number of CPU cores
run: echo "NUM_PROCS=$(nproc)" >> $GITHUB_ENV
- run: make NUM_PROCS=$NUM_PROCS GO_VERSION=${{ steps.setup_go.outputs.go-version }} test
- uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
fail_ci_if_error: false # optional (default = false)
files: ./coverage.txt
Expand All @@ -65,48 +72,29 @@ jobs:
verbose: true # optional (default = false)
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
# temporany removed due of https://github.com/actions/checkout/issues/1186
# test-win32:
# runs-on: windows-latest
# strategy:
# matrix:
# go: [ '1.22']
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-go@v5
# id: setup_go
# with:
# go-version: ${{ matrix.go }}
# check-latest: true
# - name: Cache installers
# uses: actions/cache@v4
# with:
# # Note: the cache path is relative to the workspace directory
# # https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#using-the-cache-action
# path: ~/installers
# key: ${{ runner.os }}-v0-${{ hashFiles('.ci/versions.json') }}
# - name: Install and start RabbitMQ
# run: ./.ci/install.ps1
# - name: Install GNU make
# run: choco install make
# - run: make test GO_VERSION=${{ steps.setup_go.outputs.go-version }}
publish:
runs-on: ubuntu-latest
needs: [test]
test-win32:
runs-on: windows-latest
steps:
- uses: docker/setup-buildx-action@v2
- uses: docker/login-action@v2
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0
id: setup_go
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: actions/checkout@v3
- name: Publish Docker Image
go-version: '1.25'
check-latest: true
- name: Run Go checks
shell: pwsh
run: |
set -x
VERSION=latest
export VERSION
if [[ ! $GITHUB_REF =~ "/tags/" ]]
then
VERSION=dev
fi
make perf-test-docker-push
go.exe vet ./pkg/stream
go.exe fmt ./...
- name: Cache installers
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
# Note: the cache path is relative to the workspace directory
# https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#using-the-cache-action
path: ~/installers
key: ${{ runner.os }}-v0-${{ hashFiles('.ci/versions.json') }}
- name: Install and start RabbitMQ
run: ${{ github.workspace }}/.ci/install.ps1
- name: Run Ginkgo test suite
shell: pwsh
run: go.exe run -mod=mod github.com/onsi/ginkgo/v2/ginkgo -r --procs=$env:NUMBER_OF_PROCESSORS --compilers=$env:NUMBER_OF_PROCESSORS --randomize-all --randomize-suites --cover --coverprofile=coverage.txt --covermode=atomic --race --trace --tags debug --timeout=5m
2 changes: 1 addition & 1 deletion .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
Expand Down
26 changes: 26 additions & 0 deletions .github/workflows/golangci-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: golangci-lint
on:
push:
branches:
- main
- master
pull_request:

permissions:
contents: read
# Optional: allow read access to pull requests. Use with `only-new-issues` option.
# pull-requests: read

jobs:
golangci:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0
with:
go-version: stable
- name: golangci-lint
uses: golangci/golangci-lint-action@e7fa5ac41e1cf5b7d48e45e42232ce7ada589601 # v9.1.0
with:
version: v2.6
30 changes: 30 additions & 0 deletions .github/workflows/perf-test-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Publish Go Stream Perf Test

on:
push:
branches:
- main
workflow_dispatch:

permissions:
contents: read

jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- name: Publish Docker Image
run: |
set -eux
export VERSION=latest
if [[ ! $GITHUB_REF =~ "/tags/" ]]
then
VERSION=dev
fi
make perf-test-docker-push
14 changes: 5 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ fmt:
go fmt ./...

check:
golangci-lint run --fix
golangci-lint run

NUM_PROCS ?= 2
TEST_TIMEOUT ?= 3m
test: vet fmt check
test: vet fmt
go run -mod=mod github.com/onsi/ginkgo/v2/ginkgo -r --procs=$(NUM_PROCS) --compilers=$(NUM_PROCS) \
--randomize-all --randomize-suites \
--cover --coverprofile=coverage.txt --covermode=atomic \
Expand Down Expand Up @@ -57,17 +57,16 @@ perf-test-docker-build: perf-test-build
perf-test-docker-push: perf-test-docker-build
$(BUILDKIT) push pivotalrabbitmq/go-stream-perf-test:$(VERSION)

RABBITMQ_OCI ?= rabbitmq:3-management
RABBITMQ_OCI ?= rabbitmq:4-management
BUILDKIT_RUN_ARGS ?= --pull always
.PHONY: rabbitmq-server
rabbitmq-server:
$(BUILDKIT) build -t rabbitmq-tls-test -f CiDockerfile .
$(BUILDKIT) build --tag rabbitmq-tls-test --file .ci/Dockerfile .
$(BUILDKIT) run -it --rm --name rabbitmq-tls-test \
-p 5552:5552 -p 5551:5551 -p 5672:5672 -p 15672:15672 \
-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbitmq_stream advertised_host localhost" \
rabbitmq-tls-test


rabbitmq-ha-proxy:
cd compose/ha_tls; rm -rf tls-gen;
cd compose/ha_tls; git clone https://github.com/michaelklishin/tls-gen tls-gen; cd tls-gen/basic; make
Expand All @@ -87,10 +86,7 @@ rabbitmq-server-tls:
-v $(shell pwd)/compose/tls/conf/:/etc/rabbitmq/ -v $(shell pwd)/compose/tls/tls-gen/basic/result/:/certs \
-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbitmq_stream advertised_host localhost" \
--pull always \
docker.io/rabbitmq:3-management
docker.io/rabbitmq:4-management

local-release:
goreleaser release --skip-publish --rm-dist --skip=validate



Loading