diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..30afb56 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,53 @@ +name: "Automated release" + +on: + push: + tags: + - "v*" + +jobs: + publish-docker: + name: "Build and publish Docker image on ghcr.io" + runs-on: ubuntu-latest + steps: + - name: "Checkout repository" + uses: "actions/checkout@v2" + + - name: "Find the release semantic version" + id: "semver" + uses: "Steffo99/actions-semver@v0.3.4" + with: + string: "${{ github.ref_name }}" + + - name: "Setup Buildx" + uses: "docker/setup-buildx-action@v2" + + - name: "Login to GitHub Containers" + uses: "docker/login-action@v2" + with: + registry: "ghcr.io" + username: "${{ github.repository_owner }}" + password: "${{ secrets.GITHUB_TOKEN }}" + + - name: "Find the lowercase name of the repository" + id: "reponame" + uses: "ASzc/change-string-case-action@v2" + with: + string: "${{ github.repository }}" + + - name: "Build and push the Docker image" + uses: "docker/build-push-action@v3" + with: + tags: >- + ghcr.io/${{ steps.reponame.outputs.lowercase }}:${{ steps.semver.outputs.precedence }}, + ghcr.io/${{ steps.reponame.outputs.lowercase }}:${{ steps.semver.outputs.core }}, + ghcr.io/${{ steps.reponame.outputs.lowercase }}:${{ steps.semver.outputs.pair }}, + ghcr.io/${{ steps.reponame.outputs.lowercase }}:${{ steps.semver.outputs.major }}, + ghcr.io/${{ steps.reponame.outputs.lowercase }}:latest + push: true + + - name: "Create release" + uses: "ncipollo/release-action@v1.10.0" + with: + draft: true + generateReleaseNotes: true diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d7c9095 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM rust:1.65 AS labels + +LABEL org.opencontainers.image.title="Distributed Arcade" +LABEL org.opencontainers.image.description="Fast and simple scoreboard service for games" +LABEL org.opencontainers.image.licenses="AGPL-3.0-or-later" +LABEL org.opencontainers.image.url="https://github.com/Steffo99/distributed-arcade" +LABEL org.opencontainers.image.authors="Stefano Pigozzi " + + +FROM labels AS files + +WORKDIR /usr/src/distributed_arcade +COPY . . + + +FROM files AS install + +RUN cargo install --path . --all-features --bins + + +FROM install AS environment + +ENV RUST_LOG "warn,distributed_arcade=info" \ No newline at end of file