Skip to content

Commit

Permalink
Merge pull request #25 from algorandfoundation/feat/algod-node-install
Browse files Browse the repository at this point in the history
feat: Node Install, Start, Stop, Upgrade ENG-572
  • Loading branch information
PhearZero authored Dec 23, 2024
2 parents 96fa145 + 8fafa15 commit 102b23c
Show file tree
Hide file tree
Showing 37 changed files with 2,059 additions and 27 deletions.
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"]
21 changes: 18 additions & 3 deletions .github/workflows/test.yaml → .github/workflows/code_test.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Tests
name: Code Tests

on:
pull_request:
Expand Down 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
56 changes: 56 additions & 0 deletions .github/workflows/node_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
## This is a temporary flow, until we have our custom docker images that work with systemd for linux.
## Once we have that, we can remove this and use docker containers in parallel, covering the various OS:es.

name: Node Command OS-Matrix Test

on:
workflow_dispatch:
pull_request:
paths:
- "cmd/**"

jobs:
ubuntu:
runs-on: ubuntu-latest

steps:
- name: Checkout Repo
uses: actions/checkout@v4

- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: 1.22
- name: Run Ubuntu commands
run: |
go build .
./algorun-tui node install
systemctl status algorand.service
export TOKEN=$(cat /var/lib/algorand/algod.admin.token)
curl http://localhost:8080/v2/participation -H "X-Algo-API-Token: $TOKEN" | grep "null"
./algorun-tui node stop
./algorun-tui node upgrade
./algorun-tui node stop
./algorun-tui node uninstall
macos:
runs-on: macos-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4

- name: Setup Go
run: brew install go

- name: Run MacOs commands
run: |
go build .
./algorun-tui node install
sudo launchctl print system/com.algorand.algod
sleep 5
export TOKEN=$(cat ~/.algorand/algod.admin.token)
curl http://localhost:8080/v2/participation -H "X-Algo-API-Token: $TOKEN" | grep "null"
./algorun-tui node stop
./algorun-tui node upgrade
./algorun-tui node stop
./algorun-tui node uninstall
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
algorun-tui
coverage
bin
.data

Expand All @@ -15,6 +16,9 @@ bin
# Test binary, built with `go test -c`
*.test

# coverage.txt, in case you run tests locally
coverage.txt

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

Expand Down
8 changes: 8 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,11 @@ 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
Loading

0 comments on commit 102b23c

Please sign in to comment.