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