diff --git a/.github/workflows/on-push.yml b/.github/workflows/on-push.yml new file mode 100644 index 0000000..98b2780 --- /dev/null +++ b/.github/workflows/on-push.yml @@ -0,0 +1,39 @@ +name: Build & Release +on: push + +permissions: + contents: read + packages: read + +jobs: + on_push: + permissions: + contents: write + packages: write + name: Release ${{ matrix.mc_version }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 24 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} + password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }} + - name: Publish package + run: | + npx \ + --package @semantic-release/commit-analyzer \ + --package @semantic-release/release-notes-generator \ + --package @semantic-release/github \ + --package @semantic-release/exec \ + --package @semantic-release/git \ + semantic-release + if: github.ref_name == 'main' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DOCKER_REGISTRY_USERNAME: ${{ secrets.DOCKER_REGISTRY_USERNAME }} + DOCKER_REGISTRY_PASSWORD: ${{ secrets.DOCKER_REGISTRY_PASSWORD }} diff --git a/.releaserc.js b/.releaserc.js new file mode 100644 index 0000000..08a2091 --- /dev/null +++ b/.releaserc.js @@ -0,0 +1,28 @@ +module.exports = { + branches: ['main'], + plugins: [ + [ + '@semantic-release/commit-analyzer', + { + preset: 'angular', + releaseRules: [ + { type: 'docs', scope: 'README', release: 'patch' }, + { type: 'refactor', release: 'patch' }, + { type: 'style', release: 'patch' }, + ], + parserOpts: { + noteKeywords: ['BREAKING CHANGE', 'BREAKING CHANGES'], + }, + }, + ], + '@semantic-release/release-notes-generator', + '@semantic-release/github', + [ + '@semantic-release/exec', + { + prepareCmd: './build.sh ${nextRelease.version}', + publishCmd: './release.sh ${nextRelease.version}', + }, + ], + ], +}; \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e423183 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM alpine:latest + +# | 'latest' +RUN apk add --no-cache \ + make gcc libc-dev \ + && rm -rf /var/cache/apk/* + +RUN mkdir -p /app/ + +COPY Makefile /app/ +COPY mcrcon.1 /app/ +COPY mcrcon.c /app/ + +WORKDIR /app/ + +RUN make +RUN make install + +ENTRYPOINT [ "/app/mcrcon" ] \ No newline at end of file diff --git a/README.md b/README.md index 9961fab..40b92bc 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,12 @@ mcrcon is console based Minecraft [rcon](https://developer.valvesoftware.com/wik ### Installing: +##### via docker: + +```yaml +docker run -it Tiiffi/mcrcon:latest +``` + ##### via packet manager: See https://pkgs.org/download/mcrcon for available packages in various Linux distros (note that available packages might be outdated). diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..18189f7 --- /dev/null +++ b/build.sh @@ -0,0 +1,2 @@ +docker build . -t $DOCKER_REGISTRY_USERNAME/mcrcon:$1 +docker build . -t $DOCKER_REGISTRY_USERNAME/mcrcon:latest \ No newline at end of file diff --git a/release.sh b/release.sh new file mode 100755 index 0000000..476458d --- /dev/null +++ b/release.sh @@ -0,0 +1,2 @@ +docker push $DOCKER_REGISTRY_USERNAME/mcrcon:$1 +docker push $DOCKER_REGISTRY_USERNAME/mcrcon:latest \ No newline at end of file