diff --git a/.editorconfig b/.editorconfig index 5fb9773..f83324e 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,8 +6,21 @@ root = true [*] charset = utf-8 -indent_style = tab -indent_size = 4 +indent_style = space +indent_size = 2 trim_trailing_whitespace = true end_of_line = lf -insert_final_newline = true \ No newline at end of file +insert_final_newline = true + +# YAML Files +[*.{yml,yaml}] +indent_size = 2 + +# JSON Files +[*.{json,json5,webmanifest}] +indent_size = 2 + +# BASH Files +[*.{.sh}] +indent_style = tab +indent_size = 4 diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c49a301..b8d6663 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,4 +6,11 @@ updates: directory: "/" schedule: # Check for updates to GitHub Actions every weekday - interval: "daily" \ No newline at end of file + interval: "daily" + + - package-ecosystem: "docker" + # Look for a `Dockerfile` in the `root` directory + directory: "/" + # Check for updates once a week + schedule: + interval: "weekly" diff --git a/.github/workflows/codacy.yml b/.github/workflows/codacy-analysis.yml similarity index 90% rename from .github/workflows/codacy.yml rename to .github/workflows/codacy-analysis.yml index d092bdc..473255e 100644 --- a/.github/workflows/codacy.yml +++ b/.github/workflows/codacy-analysis.yml @@ -15,12 +15,12 @@ name: Codacy Security Scan on: push: - branches: [ "main" ] + branches: ["main","master"] pull_request: # The branches below must be a subset of the branches above - branches: [ "main" ] + branches: ["main","master"] schedule: - - cron: '28 22 * * 4' + - cron: "28 22 * * 4" permissions: contents: read @@ -30,7 +30,7 @@ jobs: permissions: contents: read # for actions/checkout to fetch code security-events: write # for github/codeql-action/upload-sarif to upload SARIF results - actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status name: Codacy Security Scan runs-on: ubuntu-latest steps: @@ -40,7 +40,7 @@ jobs: # Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis - name: Run Codacy Analysis CLI - uses: codacy/codacy-analysis-cli-action@d840f886c4bd4edc059706d09c6a1586111c540b + uses: codacy/codacy-analysis-cli-action@v4.2.0 with: # Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository # You can also omit the token and run the tools that support default configurations diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 311da6c..250695b 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -1,47 +1,61 @@ -name: ci +name: Docker Publish on: push: - branches: - - 'main' + branches: ["main","master"] schedule: - - cron: '0 0 * * *' + - cron: "0 0 * * *" jobs: docker: runs-on: ubuntu-latest steps: - - - name: Checkout + - name: Checkout uses: actions/checkout@v3 - - - name: Set up QEMU + - name: Set up QEMU uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.2.1 - - - name: Login to DockerHub + - name: Login to DockerHub uses: docker/login-action@v2.1.0 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - - - name: Login to GitHub Container Registry + - name: Login to GitHub Container Registry uses: docker/login-action@v2.1.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and push + - name: Build and push (Ubuntu 22.04) uses: docker/build-push-action@v3.2.0 with: context: . + file: ./Dockerfile.ubuntu-2204 platforms: linux/amd64 push: true tags: | - gameservermanagers/linuxgsm:latest - gameservermanagers/linuxgsm:ubuntu-22.04 - ghcr.io/gameservermanagers/linuxgsm:latest - ghcr.io/gameservermanagers/linuxgsm:ubuntu-22.04 + gameservermanagers/steamcmd:latest + gameservermanagers/steamcmd:ubuntu-22.04 + ghcr.io/gameservermanagers/steamcmd:latest + ghcr.io/gameservermanagers/steamcmd:ubuntu-22.04 + - name: Build and push (Ubuntu 20.04) + uses: docker/build-push-action@v3.2.0 + with: + context: . + file: ./Dockerfile.ubuntu-2004 + platforms: linux/amd64 + push: true + tags: | + gameservermanagers/steamcmd:ubuntu-20.04 + ghcr.io/gameservermanagers/steamcmd:ubuntu-20.04 + - name: Build and push (Ubuntu 18.04) + uses: docker/build-push-action@v3.2.0 + with: + context: . + file: ./Dockerfile.ubuntu-1804 + platforms: linux/amd64 + push: true + tags: | + gameservermanagers/steamcmd:ubuntu-18.04 + ghcr.io/gameservermanagers/steamcmd:ubuntu-18.04 diff --git a/.github/workflows/snyk-container.yml b/.github/workflows/snyk-container.yml new file mode 100644 index 0000000..03130c3 --- /dev/null +++ b/.github/workflows/snyk-container.yml @@ -0,0 +1,55 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# A sample workflow which checks out the code, builds a container +# image using Docker and scans that image for vulnerabilities using +# Snyk. The results are then uploaded to GitHub Security Code Scanning +# +# For more examples, including how to limit scans to only high-severity +# issues, monitor images for newly disclosed vulnerabilities in Snyk and +# fail PR checks for new vulnerabilities, see https://github.com/snyk/actions/ + +name: Snyk Container + +on: + push: + branches: ["main","master"] + pull_request: + # The branches below must be a subset of the branches above + branches: ["main","master"] + schedule: + - cron: "45 1 * * 4" + +permissions: + contents: read + +jobs: + snyk: + permissions: + contents: read # for actions/checkout to fetch code + security-events: write # for github/codeql-action/upload-sarif to upload SARIF results + actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Build a Docker image + run: docker build -t gameservermanagers/steamcmd -f Dockerfile.ubuntu-2204 . + - name: Run Snyk to check Docker image for vulnerabilities + # Snyk can be used to break the build when it detects vulnerabilities. + # In this case we want to upload the issues to GitHub Code Scanning + continue-on-error: true + uses: snyk/actions/docker@master + env: + # In order to use the Snyk Action you will need to have a Snyk API token. + # More details in https://github.com/snyk/actions#getting-your-snyk-token + # or you can signup for free at https://snyk.io/login + SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} + with: + image: gameservermanagers/steamcmd + args: --file=Dockerfile.ubuntu-2204 + - name: Upload result to GitHub Code Scanning + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: snyk.sarif diff --git a/.github/workflows/super-linter.yml b/.github/workflows/super-linter.yml new file mode 100644 index 0000000..4fb36f7 --- /dev/null +++ b/.github/workflows/super-linter.yml @@ -0,0 +1,29 @@ +# This workflow executes several linters on changed files based on languages used in your code base whenever +# you push a code or open a pull request. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/github/super-linter +name: Lint Code Base + +on: + push: + branches: ["main","master"] + pull_request: + branches: ["main","master"] +jobs: + run-lint: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + # Full git history is needed to get a proper list of changed files within `super-linter` + fetch-depth: 0 + + - name: Lint Code Base + uses: github/super-linter@v4 + env: + VALIDATE_ALL_CODEBASE: false + DEFAULT_BRANCH: "main" + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.yamllint.yml b/.yamllint.yml new file mode 100644 index 0000000..9c160d6 --- /dev/null +++ b/.yamllint.yml @@ -0,0 +1,11 @@ +--- +extends: default + +rules: + line-length: disable + comments: disable + +ignore: | + .tox/ + .cache/ + .github/workflows diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..08e74de --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-2022 Daniel Gibbs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.