Skip to content

Commit 57dc2d7

Browse files
JamesIvesdependabot[bot]Copilot
authored
feat(tfc-legacy): ✨ Adds Team Fortress Classic Legacy Build (#64)
Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: JamesIves <[email protected]> Co-authored-by: Copilot <[email protected]>
1 parent a2fe226 commit 57dc2d7

File tree

9 files changed

+96
-7
lines changed

9 files changed

+96
-7
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# GitHub Copilot Instructions for hlds-docker
2+
3+
## Repository Purpose
4+
5+
This repository provides a Dockerized solution for running the Half-Life Dedicated Server (HLDS), supporting various classic GoldSrc games and mods such as Counter-Strike, Team Fortress Classic, Day of Defeat, and more. The project aims to simplify the setup and management of HLDS servers using Docker, with support for custom configurations, plugins, and mods.
6+
7+
## Key Features
8+
9+
- Pre-built Docker images for multiple GoldSrc games and mods.
10+
- Support for custom server configurations and plugins.
11+
- Ability to build and run custom mods.
12+
- Compatibility with both modern and legacy versions of HLDS.
13+
- Automated workflows for building, validating, and publishing Docker images.
14+
15+
## Technologies Used
16+
17+
- **Docker**: For containerizing the HLDS server.
18+
- **Docker Compose**: For managing multi-container setups and simplifying server configuration.
19+
- **GitHub Actions**: For CI/CD workflows, including building, validating, and publishing Docker images.
20+
- **Shell Scripting**: For managing server startup and configuration (`entrypoint.sh`).
21+
- **SteamCMD**: For downloading and managing HLDS game files.
22+
23+
## Helpful Context for Copilot
24+
25+
1. **Dockerfile**:
26+
27+
- The `Dockerfile` is located in the `container` directory and is used to build the HLDS server image.
28+
- It supports build arguments such as `GAME`, `FLAG`, `VERSION`, and `IMAGE` to customize the build process.
29+
30+
2. **Entrypoint Script**:
31+
32+
- The `entrypoint.sh` script is responsible for initializing the server, copying configuration files, and starting the HLDS server with the specified game and arguments.
33+
34+
3. **Configuration Files**:
35+
36+
- The `config` directory contains server configuration files (e.g., `server.cfg`, `motd.txt`) that are copied into the container during the build process or mounted as volumes at runtime.
37+
38+
4. **Mods Directory**:
39+
40+
- The `mods` directory is used for custom mods and plugins. Files in this directory are copied into the container or mounted as volumes.
41+
42+
5. **Workflows**:
43+
44+
- The repository includes GitHub Actions workflows for:
45+
- Validating Docker images (`validate.yml`).
46+
- Publishing beta images (`beta.yml`).
47+
- Publishing production images (`publish.yml`).
48+
49+
6. **Supported Games**:
50+
51+
- The repository supports multiple GoldSrc games, including:
52+
- `valve` (Half-Life Deathmatch)
53+
- `cstrike` (Counter-Strike)
54+
- `czero` (Counter-Strike Condition Zero)
55+
- `dod` (Day of Defeat)
56+
- `tfc` (Team Fortress Classic)
57+
- `dmc` (Deathmatch Classic)
58+
- `gearbox` (Half-Life Opposing Force)
59+
- `ricochet` (Ricochet)
60+
61+
7. **Volume Mapping**:
62+
63+
- The `docker-compose.yml` and `docker run` commands use volume mappings to allow users to provide custom configurations and mods at runtime.
64+
65+
8. **Validation**:
66+
- The `validate.yml` workflow ensures that the Docker image is functional by running the container and validating directory mappings and game data.
67+
68+
## Suggestions for Copilot
69+
70+
- Assist with writing or modifying Dockerfiles, shell scripts, and GitHub Actions workflows.
71+
- Provide suggestions for managing environment variables and build arguments.
72+
- Help with debugging volume mappings and container runtime issues.
73+
- Generate documentation for supported games, configuration options, and usage examples.
74+
- Suggest improvements to CI/CD workflows, such as caching or parallelizing steps.
75+
76+
## Additional Notes
77+
78+
- The repository adheres to best practices for Docker image creation, including multi-stage builds and minimal base images.
79+
- Contributions should align with the project's scope, focusing on ease of use, extensibility, and legal compliance with Valve's licensing terms.

β€Ž.github/workflows/beta.ymlβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ jobs:
2828
ricochet,
2929
dod,
3030
tfc,
31+
tfc-legacy,
3132
]
3233
steps:
3334
- name: Checkout πŸ›ŽοΈ

β€Ž.github/workflows/publish.ymlβ€Ž

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818

1919
- name: Bump Version and Create Tag 🏷️
2020
id: create_tag
21-
uses: anothrNick/github-tag-action@1.71.0
21+
uses: anothrNick/github-tag-action@1.73.0
2222
env:
2323
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2424
WITH_V: true
@@ -48,6 +48,7 @@ jobs:
4848
ricochet,
4949
dod,
5050
tfc,
51+
tfc-legacy,
5152
]
5253
steps:
5354
- name: Checkout πŸ›ŽοΈ
@@ -227,7 +228,7 @@ jobs:
227228
- name: Bump Version and Create Tag 🏷️
228229
id: create_tag
229230
if: github.ref == 'refs/heads/main'
230-
uses: anothrNick/github-tag-action@1.71.0
231+
uses: anothrNick/github-tag-action@1.73.0
231232
env:
232233
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
233234
WITH_V: true

β€ŽREADME.mdβ€Ž

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
<img align="right" width="180" height="auto" src="./.github/docs/docker.svg" alt="Docker in the Half-Life Colours">
44

5-
[Half-Life Dedicated Server](https://help.steampowered.com/en/faqs/view/081A-106F-B906-1A7A) powered by [Docker](https://www.docker.com). It supports all the classic [GoldSrc](https://developer.valvesoftware.com/wiki/GoldSrc) Half-Life games and mods, including the ability to add custom configurations and plugins.
5+
[Half-Life Dedicated Server](https://help.steampowered.com/en/faqs/view/081A-106F-B906-1A7A) powered by [Docker](https://www.docker.com), supporting all the classic [GoldSrc](https://developer.valvesoftware.com/wiki/GoldSrc) Half-Life games and mods-including Counter-Strike 1.6, Team Fortress Classic, Day of Defeat and more. Easily extendable with custom configurations and plugins.
66

77
Special thank you to all the past and present [GitHub Sponsors](https://github.com/sponsors/JamesIves) πŸ’–.
88

9-
<!-- sponsors --><a href="https://github.com/Chooksta69"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;64383803?v&#x3D;4" width="25px" alt="Chooksta69" /></a>&nbsp;&nbsp;<a href="https://github.com/MattWillFlood"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;56543497?u&#x3D;1be6fe938a7cdd414907bf0d2598e378783873f3&amp;v&#x3D;4" width="25px" alt="MattWillFlood" /></a>&nbsp;&nbsp;<a href="https://github.com/jonathan-milan-pollock"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;29420046?u&#x3D;4abd4069b4fef966d4ce3f6fbff4f14f2bc6080f&amp;v&#x3D;4" width="25px" alt="jonathan-milan-pollock" /></a>&nbsp;&nbsp;<a href="https://github.com/raoulvdberge"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;10358424?u&#x3D;5f1f63170dc2151a80948d205e39759e9e902ab6&amp;v&#x3D;4" width="25px" alt="raoulvdberge" /></a>&nbsp;&nbsp;<a href="https://github.com/robjtede"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;3316789?u&#x3D;5b6d5b45b7a2755584d2c57ecabf56f3eb292e21&amp;v&#x3D;4" width="25px" alt="robjtede" /></a>&nbsp;&nbsp;<a href="https://github.com/hadley"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;4196?u&#x3D;381fe2cce7ecc86993a19168bcf6638e9805326a&amp;v&#x3D;4" width="25px" alt="hadley" /></a>&nbsp;&nbsp;<a href="https://github.com/kevinchalet"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;6998306?u&#x3D;71c40a231984c198d230974e6536b1aea5caf756&amp;v&#x3D;4" width="25px" alt="kevinchalet" /></a>&nbsp;&nbsp;<a href="https://github.com/Yousazoe"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;58163275?u&#x3D;53e8c48f203d62424b0497a84851d9546328e518&amp;v&#x3D;4" width="25px" alt="Yousazoe" /></a>&nbsp;&nbsp;<a href="https://github.com/github"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;9919?v&#x3D;4" width="25px" alt="github" /></a>&nbsp;&nbsp;<a href="https://github.com/annegentle"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;501981?u&#x3D;155ca47d6829300d17a5454f0839f341424ecf8d&amp;v&#x3D;4" width="25px" alt="annegentle" /></a>&nbsp;&nbsp;<a href="https://github.com/planetoftheweb"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;216426?u&#x3D;f1a819a7d5f75b8034c122cbdba7bdcb38d0e1c9&amp;v&#x3D;4" width="25px" alt="planetoftheweb" /></a>&nbsp;&nbsp;<a href="https://github.com/melton1968"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;976548?v&#x3D;4" width="25px" alt="melton1968" /></a>&nbsp;&nbsp;<a href="https://github.com/szepeviktor"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;952007?u&#x3D;18bbc00cedf197bc543f479b4e39f09c0260ca3d&amp;v&#x3D;4" width="25px" alt="szepeviktor" /></a>&nbsp;&nbsp;<a href="https://github.com/sckott"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;577668?u&#x3D;c54eb1ce08ff22365e094559a109a12437bdca40&amp;v&#x3D;4" width="25px" alt="sckott" /></a>&nbsp;&nbsp;<a href="https://github.com/provinzkraut"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;25355197?u&#x3D;634fd238d93f44c6f522dda72068fc82941564c4&amp;v&#x3D;4" width="25px" alt="provinzkraut" /></a>&nbsp;&nbsp;<a href="https://github.com/electrovir"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;1205860?u&#x3D;61c2513bc24ecc2a909817adc701746b94fed939&amp;v&#x3D;4" width="25px" alt="electrovir" /></a>&nbsp;&nbsp;<a href="https://github.com/Griefed"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;44273438?u&#x3D;b44cb19075c1a93904507a69067fc55bc66360a9&amp;v&#x3D;4" width="25px" alt="Griefed" /></a>&nbsp;&nbsp;<a href="https://github.com/MontezumaIves"><img src="https:&#x2F;&#x2F;avatars.githubusercontent.com&#x2F;u&#x2F;78580739?u&#x3D;b65aecfacc32ed08463bd50dae61d8a048f618ec&amp;v&#x3D;4" width="25px" alt="MontezumaIves" /></a>&nbsp;&nbsp;<a href="https://github.com/"><img src="https:&#x2F;&#x2F;raw.githubusercontent.com&#x2F;JamesIves&#x2F;github-sponsors-readme-action&#x2F;dev&#x2F;.github&#x2F;assets&#x2F;placeholder.png" width="25px" alt="" /></a>&nbsp;&nbsp;<a href="https://github.com/"><img src="https:&#x2F;&#x2F;raw.githubusercontent.com&#x2F;JamesIves&#x2F;github-sponsors-readme-action&#x2F;dev&#x2F;.github&#x2F;assets&#x2F;placeholder.png" width="25px" alt="" /></a>&nbsp;&nbsp;<!-- sponsors -->
9+
<!-- sponsors --><a href="https://github.com/Chooksta69"><img src="https:&#x2F;&#x2F;github.com&#x2F;Chooksta69.png" width="25px" alt="Chooksta69" /></a>&nbsp;&nbsp;<a href="https://github.com/MattWillFlood"><img src="https:&#x2F;&#x2F;github.com&#x2F;MattWillFlood.png" width="25px" alt="MattWillFlood" /></a>&nbsp;&nbsp;<a href="https://github.com/jonathan-milan-pollock"><img src="https:&#x2F;&#x2F;github.com&#x2F;jonathan-milan-pollock.png" width="25px" alt="jonathan-milan-pollock" /></a>&nbsp;&nbsp;<a href="https://github.com/raoulvdberge"><img src="https:&#x2F;&#x2F;github.com&#x2F;raoulvdberge.png" width="25px" alt="raoulvdberge" /></a>&nbsp;&nbsp;<a href="https://github.com/robjtede"><img src="https:&#x2F;&#x2F;github.com&#x2F;robjtede.png" width="25px" alt="robjtede" /></a>&nbsp;&nbsp;<a href="https://github.com/hadley"><img src="https:&#x2F;&#x2F;github.com&#x2F;hadley.png" width="25px" alt="hadley" /></a>&nbsp;&nbsp;<a href="https://github.com/kevinchalet"><img src="https:&#x2F;&#x2F;github.com&#x2F;kevinchalet.png" width="25px" alt="kevinchalet" /></a>&nbsp;&nbsp;<a href="https://github.com/Yousazoe"><img src="https:&#x2F;&#x2F;github.com&#x2F;Yousazoe.png" width="25px" alt="Yousazoe" /></a>&nbsp;&nbsp;<a href="https://github.com/github"><img src="https:&#x2F;&#x2F;github.com&#x2F;github.png" width="25px" alt="github" /></a>&nbsp;&nbsp;<a href="https://github.com/annegentle"><img src="https:&#x2F;&#x2F;github.com&#x2F;annegentle.png" width="25px" alt="annegentle" /></a>&nbsp;&nbsp;<a href="https://github.com/planetoftheweb"><img src="https:&#x2F;&#x2F;github.com&#x2F;planetoftheweb.png" width="25px" alt="planetoftheweb" /></a>&nbsp;&nbsp;<a href="https://github.com/melton1968"><img src="https:&#x2F;&#x2F;github.com&#x2F;melton1968.png" width="25px" alt="melton1968" /></a>&nbsp;&nbsp;<a href="https://github.com/szepeviktor"><img src="https:&#x2F;&#x2F;github.com&#x2F;szepeviktor.png" width="25px" alt="szepeviktor" /></a>&nbsp;&nbsp;<a href="https://github.com/sckott"><img src="https:&#x2F;&#x2F;github.com&#x2F;sckott.png" width="25px" alt="sckott" /></a>&nbsp;&nbsp;<a href="https://github.com/provinzkraut"><img src="https:&#x2F;&#x2F;github.com&#x2F;provinzkraut.png" width="25px" alt="provinzkraut" /></a>&nbsp;&nbsp;<a href="https://github.com/electrovir"><img src="https:&#x2F;&#x2F;github.com&#x2F;electrovir.png" width="25px" alt="electrovir" /></a>&nbsp;&nbsp;<a href="https://github.com/Griefed"><img src="https:&#x2F;&#x2F;github.com&#x2F;Griefed.png" width="25px" alt="Griefed" /></a>&nbsp;&nbsp;<a href="https://github.com/MontezumaIves"><img src="https:&#x2F;&#x2F;github.com&#x2F;MontezumaIves.png" width="25px" alt="MontezumaIves" /></a>&nbsp;&nbsp;<a href="https://github.com/tonjohn"><img src="https:&#x2F;&#x2F;github.com&#x2F;tonjohn.png" width="25px" alt="tonjohn" /></a>&nbsp;&nbsp;<a href="https://github.com/wylie"><img src="https:&#x2F;&#x2F;github.com&#x2F;wylie.png" width="25px" alt="wylie" /></a>&nbsp;&nbsp;<a href="https://github.com/pylapp"><img src="https:&#x2F;&#x2F;github.com&#x2F;pylapp.png" width="25px" alt="pylapp" /></a>&nbsp;&nbsp;<a href="https://github.com/"><img src="https:&#x2F;&#x2F;raw.githubusercontent.com&#x2F;JamesIves&#x2F;github-sponsors-readme-action&#x2F;dev&#x2F;.github&#x2F;assets&#x2F;placeholder.png" width="25px" alt="" /></a>&nbsp;&nbsp;<a href="https://github.com/"><img src="https:&#x2F;&#x2F;raw.githubusercontent.com&#x2F;JamesIves&#x2F;github-sponsors-readme-action&#x2F;dev&#x2F;.github&#x2F;assets&#x2F;placeholder.png" width="25px" alt="" /></a>&nbsp;&nbsp;<a href="https://github.com/"><img src="https:&#x2F;&#x2F;raw.githubusercontent.com&#x2F;JamesIves&#x2F;github-sponsors-readme-action&#x2F;dev&#x2F;.github&#x2F;assets&#x2F;placeholder.png" width="25px" alt="" /></a>&nbsp;&nbsp;<!-- sponsors -->
1010

1111
## Getting Started πŸš€
1212

@@ -30,7 +30,7 @@ docker run -d -ti \
3030
```
3131

3232
> [!TIP]
33-
> The available images are below. When changing the game, be sure to adjust theΒ `+map`Β parameter, as it may cause the server not to be joinable if the map is unavailable.
33+
> The available images are below. When changing the game, be sure to adjust theΒ `+map`Β parameter, as it may cause the server to not be joinable if the map is unavailable.
3434
>
3535
> - `jives/hlds:valve` ([Half-Life Deathmatch](https://store.steampowered.com/app/70/HalfLife/))
3636
> - `jives/hlds:cstrike` ([Counter-Strike](https://store.steampowered.com/app/10/CounterStrike/))
@@ -43,6 +43,7 @@ docker run -d -ti \
4343
> - `jives/hlds:valve-legacy` ([Half-Life Deathmatch](https://store.steampowered.com/app/70/HalfLife/)) ([Pre-25th Anniversary Build](https://www.half-life.com/en/halflife25))
4444
> - `jives/hlds:cstrike-legacy` ([Counter-Strike](https://store.steampowered.com/app/10/CounterStrike/)) ([Pre-25th Anniversary Build](https://www.half-life.com/en/halflife25))
4545
> - `jives/hlds:czero-legacy` ([Counter-Strike Condition Zero](https://store.steampowered.com/app/80/CounterStrike_Condition_Zero/)) ([Pre-25th Anniversary Build](https://www.half-life.com/en/halflife25))
46+
> - `jives/hlds:tfc-legacy` ([Team Fortress Classic](https://store.steampowered.com/app/20/Team_Fortress_Classic/)) ([Pre-25th Anniversary Build](https://www.half-life.com/en/halflife25))
4647
>
4748
> Container images are published on [Docker Hub](https://hub.docker.com/repository/docker/jives/hlds/general) and the [GitHub Container Registry](https://github.com/JamesIves/hlds-docker/pkgs/container/hlds).
4849

β€Žconfig/README.mdβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ If you wish to add server configurations, such as add-ons, plugins, map rotation
1414

1515
The `config` directory is volume-mapped within the directory for the game for which you're starting the container. For example, if you're starting a container for `cstrike`, you can add things like `mapcycle.txt` or `motd.txt` here, and it would appear within the corresponding `cstrike` directory within the container.
1616

17-
The config directory should be volume mapped to `/temp/config`, for example `./config:/temp/config"`, once the container starts it will re-write the files into the correct place so the Half-Life Dedicated Server client recognizes them.
17+
The config directory should be volume mapped to `/temp/config`, for example `./config:/temp/config`, once the container starts it will re-write the files into the correct place so the Half-Life Dedicated Server client recognizes them.
1818

1919
> [!NOTE]
2020
> The startup examples posted in the project README already have this directory volume mapped accordingly. If you've strayed from the suggested setup, [please refer back to it to get started](../../README.md).

β€Žcontainer/config/README.mdβ€Ž

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
# Configs and Plugins
22

33
[For setup instructions, please refer to the following README](../../config/README.md).
4+
5+
> [!IMPORTANT]
6+
> πŸ”§ Files placed in this directory will be included **in all published pre-built images**.

β€Žcontainer/mods/README.mdβ€Ž

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
# Custom Mods
22

33
[For setup instructions, please refer to the following README](../../mods/README.md).
4+
5+
> [!IMPORTANT]
6+
> πŸ”§ Files placed in this directory will be included **in all published pre-built images**.

β€Ždocker-compose.ymlβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ services:
1212
# πŸ”§ jives/hlds:valve-legacy (Half-Life Deathmatch) (Pre 25th Anniversary Edition)
1313
# πŸ”§ jives/hlds:cstrike-legacy (Counter-Strike) (Pre 25th Anniversary Edition)
1414
# πŸ”§ jives/hlds:czero-legacy (Counter-Strike: Condition Zero) (Pre 25th Anniversary Edition)
15+
# πŸ”§ jives/hlds:tfc-legacy (Team Fortress Classic) (Pre 25th Anniversary Edition)
1516
image: jives/hlds:valve
1617
# πŸ“£ Learn more about these volumes in the advanced setup guides: https://github.com/JamesIves/hlds-docker?tab=readme-ov-file#advanced-setup-%EF%B8%8F
1718
volumes:

β€Žmods/README.mdβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ If you want to run a custom mod, you can do so with the `mods` directory. Your d
1515

1616
The `mods` directory is volume mapped within the root directory of the Half-Life Dedicated Server client on startup. For example, if you wanted to add a mod named `decay`, you'd place it as a subfolder here, i.e., `mods/decay`. Once the container starts, it would be placed in the following directory within the container.
1717

18-
The mods directory should be volume mapped to `/temp/mods`, for example `./mods:/temp/mods"`, once the container starts it will re-write the files into the correct place so the Half-Life Dedicated Server client recognizes them.
18+
The mods directory should be volume mapped to `/temp/mods`, for example `./mods:/temp/mods`, once the container starts it will re-write the files into the correct place so the Half-Life Dedicated Server client recognizes them.
1919

2020
```
2121
β”œβ”€β”€ πŸ“¦ hlds

0 commit comments

Comments
Β (0)