name: Release server on: push: tags: ["server-v*"] workflow_dispatch: permissions: contents: write packages: write concurrency: group: server-release-${{ github.ref }} cancel-in-progress: false jobs: server: name: Test and build server image runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: go.mod cache: true - name: Test server run: | go test ./server/... go vet ./server/... - name: Resolve image version id: version shell: bash run: | set -euo pipefail if [[ "$GITHUB_REF" == refs/tags/server-v* ]]; then version="${GITHUB_REF_NAME#server-v}" else version="sha-${GITHUB_SHA::12}" fi echo "value=${version}" >> "$GITHUB_OUTPUT" - uses: docker/setup-buildx-action@v3 - name: Log in to GitHub Container Registry if: startsWith(github.ref, 'refs/tags/server-v') uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and optionally publish server image uses: docker/build-push-action@v6 with: context: . file: Dockerfile push: ${{ startsWith(github.ref, 'refs/tags/server-v') }} tags: | ghcr.io/benya9669/openwrt-rmm-server:${{ steps.version.outputs.value }} ghcr.io/benya9669/openwrt-rmm-server:latest labels: | org.opencontainers.image.title=OpenWrt RMM Server org.opencontainers.image.source=https://github.com/Benya9669/openwrt-rmm org.opencontainers.image.revision=${{ github.sha }} org.opencontainers.image.version=${{ steps.version.outputs.value }} org.opencontainers.image.licenses=AGPL-3.0-only cache-from: type=gha,scope=rmm-server cache-to: type=gha,mode=max,scope=rmm-server - name: Build and optionally publish tunnel image uses: docker/build-push-action@v6 with: context: deploy/tunnel file: deploy/tunnel/Dockerfile push: ${{ startsWith(github.ref, 'refs/tags/server-v') }} tags: | ghcr.io/benya9669/openwrt-rmm-tunnel:${{ steps.version.outputs.value }} ghcr.io/benya9669/openwrt-rmm-tunnel:latest labels: | org.opencontainers.image.title=OpenWrt RMM Tunnel org.opencontainers.image.source=https://github.com/Benya9669/openwrt-rmm org.opencontainers.image.revision=${{ github.sha }} org.opencontainers.image.version=${{ steps.version.outputs.value }} org.opencontainers.image.licenses=AGPL-3.0-only cache-from: type=gha,scope=rmm-tunnel cache-to: type=gha,mode=max,scope=rmm-tunnel - name: Create GitHub release if: startsWith(github.ref, 'refs/tags/server-v') env: GH_TOKEN: ${{ github.token }} shell: bash run: | set -euo pipefail if ! gh release view "$GITHUB_REF_NAME" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then gh release create "$GITHUB_REF_NAME" \ --repo "$GITHUB_REPOSITORY" \ --generate-notes \ --title "OpenWrt RMM Server ${GITHUB_REF_NAME#server-v}" fi