diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml new file mode 100644 index 0000000..87020a7 --- /dev/null +++ b/.gitea/workflows/release.yaml @@ -0,0 +1,36 @@ +name: Release + +on: + push: + branches: + - main + tags: + - "v*" + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Build release image + run: docker build -f Dockerfile.release -t gitnow-release . + + - name: Snapshot (dry run) + if: startsWith(github.ref, 'refs/tags/') == false + run: | + docker run --rm \ + -v "${{ github.workspace }}:/build" \ + -w /build \ + gitnow-release release-snapshot + + - name: Release + if: startsWith(github.ref, 'refs/tags/') + run: | + docker run --rm \ + -v "${{ github.workspace }}:/build" \ + -w /build \ + -e GITEA_TOKEN=${{ secrets.GITEA_TOKEN }} \ + gitnow-release release diff --git a/Dockerfile.release b/Dockerfile.release new file mode 100644 index 0000000..eb22c28 --- /dev/null +++ b/Dockerfile.release @@ -0,0 +1,20 @@ +FROM debian:trixie-slim + +RUN apt-get update && apt-get install -y --no-install-recommends \ + curl \ + git \ + build-essential \ + && rm -rf /var/lib/apt/lists/* + +# Install mise +RUN curl https://mise.run | sh +ENV PATH="/root/.local/bin:${PATH}" + +WORKDIR /build +COPY mise.toml . +RUN mise trust && mise install + +COPY . . + +ENTRYPOINT ["mise", "run"] +CMD ["release"] diff --git a/mise.toml b/mise.toml index 3356ee4..66fdede 100644 --- a/mise.toml +++ b/mise.toml @@ -19,3 +19,10 @@ description = "Create a release using GoReleaser (requires GITEA_TOKEN and a git [tasks.release-snapshot] run = "goreleaser release --snapshot --clean" description = "Build a local snapshot release without publishing" + +[tasks.release-docker] +run = """ +docker build -f Dockerfile.release -t gitnow-release . +docker run --rm -v "$PWD:/build" -w /build -e GITEA_TOKEN gitnow-release release --snapshot --clean +""" +description = "Test the release Docker image locally (snapshot mode)"