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
43 changes: 43 additions & 0 deletions .docker/Fedora.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
FROM golang:1.23-bookworm as BUILDER

WORKDIR /app

ADD . .

RUN CGO_ENABLED=0 go build -cover -o ./bin/algorun *.go


FROM fedora:39 as legacy

ADD playbook.yaml /root/playbook.yaml
COPY --from=BUILDER /app/bin/algorun /usr/bin/algorun
RUN dnf install systemd ansible-core -y && \
mkdir -p /app/coverage/int/fedora/39 && \
echo GOCOVERDIR=/app/coverage/int/fedora/39 >> /etc/environment

STOPSIGNAL SIGRTMIN+3
CMD ["/usr/lib/systemd/systemd"]

FROM fedora:40 as previous

ADD playbook.yaml /root/playbook.yaml
COPY --from=BUILDER /app/bin/algorun /usr/bin/algorun

RUN dnf install systemd ansible-core -y && \
mkdir -p /app/coverage/int/fedora/40 && \
echo GOCOVERDIR=/app/coverage/int/fedora/40 >> /etc/environment

STOPSIGNAL SIGRTMIN+3
CMD ["/usr/lib/systemd/systemd"]

FROM fedora:41 as latest

ADD playbook.yaml /root/playbook.yaml
COPY --from=BUILDER /app/bin/algorun /usr/bin/algorun

RUN dnf install systemd ansible-core -y && \
mkdir -p /app/coverage/int/fedora/41 && \
echo GOCOVERDIR=/app/coverage/int/fedora/41 >> /etc/environment

STOPSIGNAL SIGRTMIN+3
CMD ["/usr/lib/systemd/systemd"]
47 changes: 47 additions & 0 deletions .docker/Ubuntu.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
FROM golang:1.23-bookworm as BUILDER

WORKDIR /app

ADD . .

RUN CGO_ENABLED=0 go build -cover -o ./bin/algorun *.go

FROM ubuntu:18.04 as bionic

RUN apt-get update && apt-get install systemd software-properties-common -y && add-apt-repository --yes --update ppa:ansible/ansible

ADD playbook.yaml /root/playbook.yaml
COPY --from=BUILDER /app/bin/algorun /usr/bin/algorun
RUN mkdir -p /app/coverage/int/ubuntu/18.04 && \
echo GOCOVERDIR=/app/coverage/int/ubuntu/18.04 >> /etc/environment && \
apt-get install ansible -y && \
chmod 0 /usr/bin/apt # Liam Neeson

STOPSIGNAL SIGRTMIN+3
CMD ["/bin/systemd"]

FROM ubuntu:22.04 as jammy

RUN apt-get update && apt-get install systemd software-properties-common -y && add-apt-repository --yes --update ppa:ansible/ansible

ADD playbook.yaml /root/playbook.yaml
COPY --from=BUILDER /app/bin/algorun /usr/bin/algorun
RUN mkdir -p /app/coverage/int/ubuntu/22.04 && \
echo GOCOVERDIR=/app/coverage/int/ubuntu/22.04 >> /etc/environment && \
apt-get install ansible -y

STOPSIGNAL SIGRTMIN+3
CMD ["/usr/lib/systemd/systemd"]

FROM ubuntu:24.04 as noble

RUN apt-get update && apt-get install systemd software-properties-common -y && add-apt-repository --yes --update ppa:ansible/ansible

ADD playbook.yaml /root/playbook.yaml
COPY --from=BUILDER /app/bin/algorun /usr/bin/algorun
RUN mkdir -p /app/coverage/int/ubuntu/24.04 && \
echo GOCOVERDIR=/app/coverage/int/ubuntu/24.04 >> /etc/environment && \
apt-get install ansible -y

STOPSIGNAL SIGRTMIN+3
CMD ["/usr/lib/systemd/systemd"]
19 changes: 17 additions & 2 deletions .github/workflows/code_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,23 @@ jobs:
- name: Build
run: go build -o bin/algorun *.go

- name: Test with the Go CLI
run: go test ./... -coverprofile=./coverage.txt -covermode=atomic -coverpkg=./...
- name: Unit Tests
run: make unit

- name: Kill docker
run: docker compose down

- name: Start Integration
run: docker compose -f docker-compose.integration.yaml up -d

- name: Wait for mount
run: npx wait-on ./coverage/int/fedora/40 ./coverage/int/ubuntu/24.04/

- name: Integration tests
run: make integration

- name: Combine coverage
run: make combine-coverage

- name: Upload results to Codecov
uses: codecov/codecov-action@v4
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
coverage
hack-tui
bin
.data
Expand Down
10 changes: 9 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
build:
go build -o bin/algorun *.go
CGO_ENABLED=0 go build -o bin/algorun *.go
test:
go test -coverpkg=./... -covermode=atomic ./...
generate:
oapi-codegen -config generate.yaml https://raw.githubusercontent.com/algorand/go-algorand/v3.26.0-stable/daemon/algod/api/algod.oas3.yml
unit:
mkdir -p $(CURDIR)/coverage/unit && go test -cover ./... -args -test.gocoverdir=$(CURDIR)/coverage/unit
integration:
for service in $(shell docker compose -f docker-compose.integration.yaml ps --services) ; do \
docker compose exec -it "$$service" ansible-playbook --connection=local /root/playbook.yaml ; \
done
combine-coverage:
go tool covdata textfmt -i=./coverage/unit,./coverage/int/ubuntu/24.04,./coverage/int/fedora/40 -o coverage.txt && sed -i 2,3d coverage.txt
58 changes: 58 additions & 0 deletions docker-compose.integration.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
services:
# Legacy with apt disabled
ubuntu.18.04:
deploy:
replicas: 0
privileged: true
environment:
- GOCOVERDIR=/app/coverage/int/ubuntu/18.04
build:
context: .
target: bionic
dockerfile: .docker/Ubuntu.dockerfile
volumes:
- "./coverage/int/ubuntu/18.04:/app/coverage/int/ubuntu/18.04"
ubuntu.22.04:
deploy:
replicas: 0
privileged: true
environment:
- GOCOVERDIR=/app/coverage/int/ubuntu/22.04
build:
context: .
target: jammy
dockerfile: .docker/Ubuntu.dockerfile
volumes:
- "./coverage/int/ubuntu/22.04:/app/coverage/int/ubuntu/22.04"
ubuntu.24.04:
privileged: true
environment:
- GOCOVERDIR=/app/coverage/int/ubuntu/24.04
build:
context: .
target: noble
dockerfile: .docker/Ubuntu.dockerfile
volumes:
- "./coverage/int/ubuntu/24.04:/app/coverage/int/ubuntu/24.04"
fedora.39:
deploy:
replicas: 0
privileged: true
environment:
- GOCOVERDIR=/app/coverage/int/fedora/39
build:
context: .
target: legacy
dockerfile: .docker/Fedora.dockerfile
volumes:
- "./coverage/int/fedora/39:/app/coverage/int/fedora/39"
fedora.40:
privileged: true
environment:
- GOCOVERDIR=/app/coverage/int/fedora/40
build:
context: .
target: previous
dockerfile: .docker/Fedora.dockerfile
volumes:
- "./coverage/int/fedora/40:/app/coverage/int/fedora/40"
22 changes: 22 additions & 0 deletions playbook.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
- name: Test Instance
hosts: localhost
tasks:
- name: Ensure algorun exists
stat:
path: /usr/bin/algorun
register: binpath
- name: Fail missing binary
fail:
msg: "Must have algorun installed!"
when: not binpath.stat.exists
- name: Run installer
command: algorun node install
- name: Run installer twice
command: algorun node install
- name: Run upgrade
command: algorun node upgrade
- name: Run stop
command: algorun node stop
- name: Run Start
command: algorun node start
# TODO: start a private network, fund TUI account and run TUI integration
Loading