5 changed files with 190 additions and 8 deletions
@ -10,6 +10,50 @@ on: |
|||
- cron: "0 2 * * 6" |
|||
|
|||
jobs: |
|||
build-ubuntu-2404: |
|||
name: Build Ubuntu 24.04 |
|||
runs-on: ubuntu-latest |
|||
steps: |
|||
- name: Checkout |
|||
uses: actions/checkout@v4 |
|||
|
|||
- name: Setup QEMU |
|||
uses: docker/setup-qemu-action@v3 |
|||
|
|||
- name: Setup Docker Buildx |
|||
uses: docker/[email protected] |
|||
|
|||
- name: Build |
|||
run: docker build -t gameservermanagers/linuxgsm:ubuntu-24.04 -f ./Dockerfile.ubuntu-2404 . |
|||
|
|||
- name: Login to DockerHub |
|||
uses: docker/[email protected] |
|||
with: |
|||
username: ${{ secrets.DOCKER_HUB_USERNAME }} |
|||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} |
|||
|
|||
- name: Login to GitHub Container Registry |
|||
uses: docker/[email protected] |
|||
with: |
|||
registry: ghcr.io |
|||
username: ${{ github.actor }} |
|||
password: ${{ secrets.GITHUB_TOKEN }} |
|||
|
|||
- name: Build and push (Ubuntu 24.04) |
|||
uses: docker/[email protected] |
|||
with: |
|||
context: . |
|||
file: ./Dockerfile.ubuntu-2404 |
|||
platforms: linux/amd64 |
|||
push: true |
|||
tags: | |
|||
gameservermanagers/linuxgsm:latest |
|||
gameservermanagers/linuxgsm:ubuntu |
|||
gameservermanagers/linuxgsm:ubuntu-24.04 |
|||
ghcr.io/gameservermanagers/linuxgsm:latest |
|||
ghcr.io/gameservermanagers/linuxgsm:ubuntu |
|||
ghcr.io/gameservermanagers/linuxgsm:ubuntu-24.04 |
|||
|
|||
build-ubuntu-2204: |
|||
name: Build Ubuntu 22.04 |
|||
runs-on: ubuntu-latest |
|||
@ -47,11 +91,7 @@ jobs: |
|||
platforms: linux/amd64 |
|||
push: true |
|||
tags: | |
|||
gameservermanagers/linuxgsm:latest |
|||
gameservermanagers/linuxgsm:ubuntu |
|||
gameservermanagers/linuxgsm:ubuntu-22.04 |
|||
ghcr.io/gameservermanagers/linuxgsm:latest |
|||
ghcr.io/gameservermanagers/linuxgsm:ubuntu |
|||
ghcr.io/gameservermanagers/linuxgsm:ubuntu-22.04 |
|||
|
|||
build-ubuntu-2004: |
|||
@ -96,7 +136,7 @@ jobs: |
|||
|
|||
package-cleanup: |
|||
name: Cleanup Old GitHub Packages |
|||
needs: [ build-ubuntu-2004, build-ubuntu-2204 ] |
|||
needs: [ build-ubuntu-2004, build-ubuntu-2204, build-ubuntu-2404 ] |
|||
runs-on: ubuntu-latest |
|||
steps: |
|||
- name: Delete Package Versions |
|||
|
@ -0,0 +1,140 @@ |
|||
# |
|||
# LinuxGSM Base Dockerfile |
|||
# |
|||
# https://github.com/GameServerManagers/docker-linuxgsm |
|||
# |
|||
|
|||
FROM gameservermanagers/steamcmd:ubuntu-24.04 |
|||
|
|||
LABEL maintainer="LinuxGSM <[email protected]>" |
|||
ENV DEBIAN_FRONTEND noninteractive |
|||
ENV TERM=xterm |
|||
ENV LGSM_GITHUBUSER=GameServerManagers |
|||
ENV LGSM_GITHUBREPO=LinuxGSM |
|||
ENV LGSM_GITHUBBRANCH=master |
|||
ENV LGSM_LOGDIR=/data/log |
|||
ENV LGSM_SERVERFILES=/data/serverfiles |
|||
ENV LGSM_DATADIR=/data/data |
|||
ENV LGSM_CONFIG=/data/config-lgsm |
|||
ENV LGSM_DEV=false |
|||
ENV GAMESERVER=jc2server |
|||
ENV UPDATE_CHECK=60 |
|||
ENV USER=linuxgsm |
|||
ENV UID=1000 |
|||
ENV GID=1000 |
|||
|
|||
SHELL ["/bin/bash", "-o", "pipefail", "-c"] |
|||
|
|||
## Install Base LinuxGSM Requirements |
|||
RUN echo "**** Install Base LinuxGSM Requirements ****" \ |
|||
&& apt-get update \ |
|||
&& apt-get install -y software-properties-common \ |
|||
&& add-apt-repository multiverse \ |
|||
&& add-apt-repository ppa:git-core/ppa \ |
|||
&& apt-get update \ |
|||
&& apt-get install -y \ |
|||
bc \ |
|||
binutils \ |
|||
bsdmainutils \ |
|||
bzip2 \ |
|||
ca-certificates \ |
|||
cpio \ |
|||
cron \ |
|||
curl \ |
|||
distro-info \ |
|||
file \ |
|||
git \ |
|||
gnupg \ |
|||
gosu \ |
|||
gzip \ |
|||
hostname \ |
|||
jq \ |
|||
lib32gcc-s1 \ |
|||
lib32stdc++6 \ |
|||
netcat-openbsd \ |
|||
pigz \ |
|||
python3 \ |
|||
sudo \ |
|||
tar \ |
|||
tmux \ |
|||
unzip \ |
|||
util-linux \ |
|||
uuid-runtime \ |
|||
wget \ |
|||
xz-utils \ |
|||
# Docker Extras |
|||
iproute2 \ |
|||
iputils-ping \ |
|||
nano \ |
|||
vim \ |
|||
&& apt-get -y autoremove \ |
|||
&& apt-get -y clean \ |
|||
&& rm -rf /var/lib/apt/lists/* \ |
|||
&& rm -rf /tmp/* \ |
|||
&& rm -rf /var/tmp/* |
|||
|
|||
# Install Node.js |
|||
RUN echo "**** Install Node.js ****" \ |
|||
&& set -uex \ |
|||
&& mkdir -p /etc/apt/keyrings \ |
|||
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ |
|||
&& NODE_MAJOR=20 \ |
|||
&& echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \ |
|||
&& apt-get update \ |
|||
&& apt-get install nodejs -y \ |
|||
&& apt-get -y autoremove \ |
|||
&& apt-get -y clean \ |
|||
&& rm -rf /var/lib/apt/lists/* \ |
|||
&& rm -rf /tmp/* \ |
|||
&& rm -rf /var/tmp/* \ |
|||
&& npm install -g npm@latest |
|||
|
|||
# Install GameDig https://docs.linuxgsm.com/requirements/gamedig |
|||
RUN echo "**** Install GameDig ****" \ |
|||
&& npm install -g [email protected] |
|||
|
|||
WORKDIR /app |
|||
|
|||
## Add linuxgsm user |
|||
RUN echo "**** Add linuxgsm user ****" \ |
|||
&& mkdir /data \ |
|||
# Create the user |
|||
&& groupadd --gid $GID $USER \ |
|||
&& useradd --uid $UID --gid $GID -m $USER \ |
|||
# |
|||
# [Optional] Add sudo support. Omit if you don't need to install software after connecting. |
|||
&& echo $USER ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USER \ |
|||
&& chmod 0440 /etc/sudoers.d/$USER \ |
|||
&& chown $USER:$USER /data |
|||
|
|||
HEALTHCHECK --interval=1m --timeout=1m --start-period=2m --retries=1 CMD /app/entrypoint-healthcheck.sh || exit 1 |
|||
|
|||
## Download linuxgsm.sh |
|||
RUN echo "**** Download linuxgsm.sh ****" \ |
|||
&& set -ex \ |
|||
&& curl -Lo linuxgsm.sh "https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/${LGSM_GITHUBBRANCH}/linuxgsm.sh" \ |
|||
&& chmod +x linuxgsm.sh |
|||
|
|||
RUN echo "**** Get LinuxGSM Modules ****" \ |
|||
&& git clone --filter=blob:none --no-checkout --sparse https://github.com/GameServerManagers/LinuxGSM.git \ |
|||
&& cd LinuxGSM \ |
|||
&& git sparse-checkout set --cone \ |
|||
&& git sparse-checkout set lgsm/modules \ |
|||
&& git checkout ${LGSM_GITHUBBRANCH} \ |
|||
&& mkdir -p /app/lgsm/modules \ |
|||
&& mv lgsm/modules/* /app/lgsm/modules \ |
|||
&& chmod +x /app/lgsm/modules/* \ |
|||
&& cd ../ \ |
|||
&& rm -rf LinuxGSM \ |
|||
&& chown -R $USER:$USER /app |
|||
|
|||
ARG CACHEBUST=1 |
|||
RUN echo "$CACHEBUST" |
|||
|
|||
COPY entrypoint.sh /app/entrypoint.sh |
|||
COPY entrypoint-user.sh /app/entrypoint-user.sh |
|||
COPY entrypoint-healthcheck.sh /app/entrypoint-healthcheck.sh |
|||
|
|||
RUN date > /build-time.txt |
|||
|
|||
ENTRYPOINT ["/bin/bash", "./entrypoint.sh"] |
Loading…
Reference in new issue