61 lines
1.8 KiB
YAML
61 lines
1.8 KiB
YAML
when:
|
|
- event: push
|
|
branch: main
|
|
|
|
steps:
|
|
go-test:
|
|
image: golang:1.24
|
|
environment:
|
|
CGO_ENABLED: 0
|
|
GOOS: linux
|
|
GOARCH: amd64
|
|
commands:
|
|
- go test ./...
|
|
go-check-version:
|
|
image: golang:1.24
|
|
commands:
|
|
- echo "Checking project version..."
|
|
- VERSION_CURRENT=$(grep 'version =' main.go | cut -d'"' -f2)
|
|
- PREV_COMMIT=$(git rev-parse HEAD^)
|
|
- VERSION_PREV=$(git show "$PREV_COMMIT:main.go" | grep 'version =' | cut -d'"' -f2)
|
|
- |
|
|
if [ "$VERSION_CURRENT" = "$VERSION_PREV" ]; then
|
|
echo "❌ The version has not changed. You must update it to merge to main."
|
|
exit 1
|
|
else
|
|
echo "✅ The version has changed correctly."
|
|
fi
|
|
go-build:
|
|
image: golang:1.24
|
|
environment:
|
|
CGO_ENABLED: 0
|
|
GOOS: linux
|
|
GOARCH: amd64
|
|
commands:
|
|
- mkdir -p ./tmp
|
|
- go get
|
|
- echo "Building project version $(grep 'version =' main.go | cut -d'"' -f2)"
|
|
- go build -o ./tmp/learndrone ./main.go
|
|
docker-build:
|
|
image: docker:23
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- /containers/learndrone:/containers/learndrone
|
|
commands:
|
|
- VERSION=$(grep 'version =' main.go | cut -d'"' -f2)
|
|
- echo "Packing Docker image version $VERSION"
|
|
- docker build -t learndrone:$VERSION -t learndrone:latest .
|
|
- docker save learndrone:latest -o /containers/learndrone/learndrone_latest.tar
|
|
deploy:
|
|
image: docker:23
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- /containers/learndrone:/containers/learndrone
|
|
commands:
|
|
- docker load -i /containers/learndrone/learndrone_latest.tar
|
|
- rm /containers/learndrone/learndrone_latest.tar
|
|
- docker-compose down
|
|
- docker-compose up -d
|
|
|
|
|