diff --git a/.drone.yml b/.drone.yml index 5b338ad..81233c8 100644 --- a/.drone.yml +++ b/.drone.yml @@ -3,55 +3,100 @@ type: kubernetes name: default trigger: + branch: + - main event: - push +services: +- name: docker + image: docker.io/library/docker:25.0.2-dind-alpine3.19 + privileged: true + volumes: + - name: dockersock + path: /var/run + steps: -- name: build-docker-image - image: docker.io/library/docker:25.02-dind-alpine3.19 - commands: - - docker build \ - -t william/satisfactory-server:latest \ - -t william/satisfactory-server:${DRONE_BUILD_NUMBER} \ - -t william/satisfactory-server:${DRONE_COMMIT_SHA:0:7} \ - ./ - # -t williammiceli/satisfactory-server:latest \ - # -t williammiceli/satisfactory-server:${DRONE_BUILD_NUMBER} \ - # -t williammiceli/satisfactory-server:${DRONE_COMMIT_SHA:0:7} \ - volumes: - - name: artifacts - path: / -- name: gitea-push - image: docker.io/library/docker:25.02-dind-alpine3.19 +- name: get-app-version + image: cm2network/steamcmd:latest commands: - - echo $GITEA_TOKEN | docker login git.williammiceli.systems --username $GITEA_USERNAME --password-stdin - - docker push git.williammiceli.systems/william/satisfactory-server:latest - - docker push git.williammiceli.systems/william/satisfactory-server:${DRONE_BUILD_NUMBER} - - docker push git.williammiceli.systems/william/satisfactory-server:${DRONE_COMMIT_SHA:0:7} - environment: - GITEA_USERNAME: - from_secret: GITEA_USERNAME - GITEA_TOKEN: - from_secret: GITEA_TOKEN + - | + BUILDID=$(/home/steam/steamcmd/steamcmd.sh +login anonymous +app_info_print 1690800 +quit | \ + awk 'BEGIN { capture = 0; } \ + /"1690800"/ { capture = 1; } \ + capture && /"branches"/ { inBranches = 1; } \ + inBranches && /"public"/ { inPublic = 1; next; } \ + inPublic && /"buildid"/ { \ + gsub(/[^0-9]/, "", $0); print; exit; \ + }') + - echo $BUILDID + - echo "export BUILDID=$${BUILDID}" > /scratch/EXTRA_ENVIRONMENT + - cat /scratch/EXTRA_ENVIRONMENT volumes: - - name: artifacts - path: / + - name: scratch + path: /scratch -# - name: docker-hub-push -# image: docker.io/library/docker:25.02-dind-alpine3.19 +# - name: print-app-version +# image: docker.io/library/docker:25.0.2-dind-alpine3.19 # commands: -# - echo $DOCKER_TOKEN | docker login --username $DOCKER_USERNAME --password-stdin -# - docker push williammiceli/satisfactory-server:latest +# - source /scratch/EXTRA_ENVIRONMENT +# - echo $BUILDID +# depends_on: +# - get-app-version +# volumes: +# - name: scratch +# path: /scratch + +# - name: build +# image: docker.io/library/docker:25.0.2-dind-alpine3.19 +# commands: +# - sleep 10 # give docker enough time to initialize +# - docker image build -t image:latest . +# volumes: +# - name: dockersock +# path: /var/run + +# - name: push-gitea +# image: docker.io/library/docker:25.0.2-dind-alpine3.19 +# commands: +# - echo $GITEA_TOKEN | docker login git.williammiceli.systems --username $GITEA_USERNAME --password-stdin +# - docker image tag image:latest git.williammiceli.systems/william/docker_satisfactory-server:latest +# - docker image tag image:latest git.williammiceli.systems/william/docker_satisfactory-server:build${DRONE_BUILD_NUMBER} +# - docker image tag image:latest git.williammiceli.systems/william/docker_satisfactory-server:sha${DRONE_COMMIT_SHA:0:12} +# - docker image push --all-tags git.williammiceli.systems/william/docker_satisfactory-server +# depends_on: +# - build +# environment: +# GITEA_USERNAME: +# from_secret: GITEA_USERNAME +# GITEA_TOKEN: +# from_secret: GITEA_TOKEN +# volumes: +# - name: dockersock +# path: /var/run + +# - name: push-dockerhub +# image: docker.io/library/docker:25.0.2-dind-alpine3.19 +# commands: +# - echo $DOCKER_TOKEN | docker login docker.io --username $DOCKER_USERNAME --password-stdin +# - docker image tag image:latest docker.io/williammiceli/satisfactory-server:latest +# - docker image tag image:latest docker.io/williammiceli/satisfactory-server:build${DRONE_BUILD_NUMBER} +# - docker image tag image:latest docker.io/williammiceli/satisfactory-server:sha${DRONE_COMMIT_SHA:0:12} +# - docker image push --all-tags docker.io/williammiceli/satisfactory-server +# depends_on: +# - build # environment: # DOCKER_USERNAME: # from_secret: DOCKER_USERNAME # DOCKER_TOKEN: # from_secret: DOCKER_TOKEN # volumes: -# - name: artifacts -# path: / +# - name: dockersock +# path: /var/run volumes: -- name: artifacts +- name: dockersock + temp: {} +- name: scratch temp: {} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6d2a8a2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,43 @@ +FROM docker.io/library/ubuntu:24.04 + +# Avoid prompts from apt +ENV DEBIAN_FRONTEND=noninteractive + +# Agree to Steam terms prompt (used during steamcmd install) +RUN echo steam steam/question select "I AGREE" | debconf-set-selections && \ + echo steam steam/license note '' | debconf-set-selections + +# Install SteamCMD +RUN dpkg --add-architecture i386 && \ + apt-get update && \ + apt-get install -y --no-install-recommends ca-certificates locales steamcmd && \ + ln -s /usr/games/steamcmd /usr/bin/steamcmd && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +# Add unicode support +RUN locale-gen en_US.UTF-8 +ENV LANG 'en_US.UTF-8' +ENV LANGUAGE 'en_US:en' + +# Create user for SteamCMD +RUN useradd -m steam + +# Switch to Steam user +USER steam +WORKDIR /home/steam + +# Install Satisfactory dedicated server +RUN steamcmd +force_install_dir /home/steam/satisfactory_server +login anonymous +app_update 1690800 -beta public validate +quit + +# Expose ports: +# - 7777/udp for game traffic +# - 15000/udp for query traffic +# - 15777/udp for Steam traffic +EXPOSE 7777/udp 15000/udp 15777/udp + +# Persistent data volume for the server +VOLUME ["/home/steam/.config/Epic/FactoryGame/Saved"] + +# Start command for the server +CMD ["/home/steam/satisfactory_server/FactoryServer.sh"] \ No newline at end of file diff --git a/README.md b/README.md index b517ed6..22a20c7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://drone.williammiceli.systems/api/badges/William/Docker-SatisfactoryServer/status.svg)](https://drone.williammiceli.systems/William/Docker-SatisfactoryServer) +[![Build Status](https://drone.williammiceli.systems/api/badges/William/Docker_Satisfactory-Server/status.svg)](https://drone.williammiceli.systems/William/Docker_Satisfactory-Server) # Useful References