name: SPT-Server Build Release on: schedule: - cron: '0 2 * * *' push: paths: - '.github/workflows/build-release-cron.yaml' env: SERVER_URL: https://dev.sp-tarkov.com REPOSITORY_SPT_SERVER: SPT/Server REPOSITORY_SPT_SERVER_MEDUSA: medusa/spt-server RELEASE_BRANCH: 3.10.0-DEV jobs: prepare: runs-on: ubuntu-latest outputs: PROCEED: ${{ steps.compare-tags.outputs.PROCEED }} BUILT_TAG: ${{ steps.compare-tags.outputs.BUILT_TAG }} TARGET_TAG: ${{ steps.compare-tags.outputs.TARGET_TAG }} SPT_VERSION: ${{ steps.versions.outputs.SPT_VERSION }} EFT_VERSION: ${{ steps.versions.outputs.EFT_VERSION }} SPT_SERVER_COMMIT: ${{ steps.versions.outputs.SPT_SERVER_COMMIT }} SPT_SERVER_COMMIT_TIME: ${{ steps.versions.outputs.SPT_SERVER_COMMIT_TIME }} BUILD_DATE: ${{ steps.versions.outputs.DATE }} BUILD_DATE_TIME: ${{ steps.versions.outputs.DATE_TIME }} steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Get Latest Tag From SPT id: get-latest-tag run: | git clone -b ${{ env.RELEASE_BRANCH }} ${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER }}.git Server cd Server SPT_SERVER_LATEST_TAG=$(git describe --tags --abbrev=0) echo "👽 SPT_SERVER_LATEST_TAG = $SPT_SERVER_LATEST_TAG" echo "SPT_SERVER_LATEST_TAG=$SPT_SERVER_LATEST_TAG" >> $GITHUB_OUTPUT shell: bash - name: Compare Tags id: compare-tags run: | server_last_built_tag=$(cat trigger.release) server_latest_tag=${{ steps.get-latest-tag.outputs.SPT_SERVER_LATEST_TAG }} if [ "$server_last_built_tag" != "$server_latest_tag" ]; then echo "✅ There is different between last-built-tag and lastest-tag, continue to build." echo "BUILT_TAG=$server_last_built_tag" >> $GITHUB_OUTPUT echo "TARGET_TAG=$server_latest_tag" >> $GITHUB_OUTPUT echo "PROCEED=true" >> $GITHUB_OUTPUT else echo "✋ last-built-tag and latest-tag are the same, stop building." echo "PROCEED=false" >> $GITHUB_OUTPUT fi shell: bash - name: Extract versions id: versions if: steps.compare-tags.outputs.PROCEED == 'true' run: | cd Server SERVER_TAG=${{ steps.get-latest-tag.outputs.SPT_SERVER_LATEST_TAG }} git checkout $SERVER_TAG SPT_SERVER_COMMIT=$(git rev-parse --short $SERVER_TAG) SPT_SERVER_COMMIT_TIME=$(git log --pretty=format:"%ai" -1) # Extract versions from core.json cp -v project/assets/configs/core.json . SPT_VERSION=$(jq -r '.sptVersion' core.json) EFT_VERSION=$(jq -r '.compatibleTarkovVersion' core.json) echo "👽 SPT_VERSION = $SPT_VERSION" echo "👽 EFT_VERSION = $EFT_VERSION" echo "👽 SERVER_TAG = $SERVER_TAG" echo "👽 SPT_SERVER_COMMIT = $SPT_SERVER_COMMIT" echo "👽 SPT_SERVER_COMMIT_TIME = $SPT_SERVER_COMMIT_TIME" echo "SPT_VERSION=$SPT_VERSION" >> $GITHUB_OUTPUT echo "EFT_VERSION=$EFT_VERSION" >> $GITHUB_OUTPUT echo "SPT_SERVER_COMMIT=$SPT_SERVER_COMMIT" >> $GITHUB_OUTPUT echo "SPT_SERVER_COMMIT_TIME=$SPT_SERVER_COMMIT_TIME" >> $GITHUB_OUTPUT echo "DATE=$(date +%Y%m%d)" >> $GITHUB_OUTPUT echo "DATE_TIME=$(date +%Y%m%d%H%M%S)" >> $GITHUB_OUTPUT shell: bash build-server-windows: needs: prepare if: ${{ needs.prepare.outputs.PROCEED == 'true' }} runs-on: windows-latest env: OUTPUT_DIR: spt-server SOURCECODE_DIR: c:/code outputs: WIN_COMMIT_ID: ${{ steps.debug-info.outputs.COMMIT_ID }} WIN_ARTIFACT: ${{ steps.filename.outputs.WIN_ARTIFACT }} WIN_RELEASE_FILE: ${{ steps.filename.outputs.WIN_RELEASE }} steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Git Config run: | git config --global user.name "github-actions[bot]" git config --global user.email "bot@github.com" - name: Clone Medusa's Windows Server Code run: | git clone -b ${{ env.RELEASE_BRANCH }}_windows ${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }} ${{ env.SOURCECODE_DIR }} cd ${{ env.SOURCECODE_DIR }} git lfs pull shell: bash - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20.11.1 - name: Merge Server Code From SPT run: | cd ${{ env.SOURCECODE_DIR }} git pull git fetch -u ${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER }}.git ${{ needs.prepare.outputs.TARGET_TAG }}:SPT-${{ needs.prepare.outputs.TARGET_TAG }} git merge -m "🤖 Merge tag \`${{ needs.prepare.outputs.TARGET_TAG }}\` from SPT" --no-ff SPT-${{ needs.prepare.outputs.TARGET_TAG }} shell: bash - name: Runner Debug Information id: debug-info run: | cp -v ${{ env.SOURCECODE_DIR }}/project/package.json . cd ${{ env.SOURCECODE_DIR }} echo "git version: $(git --version)" echo "git lfs version: $(git-lfs --version)" echo "node.js version: $(node --version)" echo "npm version: $(npm --version)" echo "latest commit hash: $(git rev-parse HEAD)" echo "last commit message:" && git log -1 --pretty=%B echo "COMMIT_ID=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT shell: bash - name: Cache NPM Dependencies id: cache-npm-dependencies uses: actions/cache@v4 with: path: | ${{ env.SOURCECODE_DIR }}/project/node_modules key: ${{ runner.os }}-npm-dependencies-${{ hashFiles('package.json') }} restore-keys: | ${{ runner.os }}-npm-dependencies- - name: Install NPM Dependencies if: steps.cache-npm-dependencies.outputs.cache-hit != 'true' run: | cd ${{ env.SOURCECODE_DIR }}/project npm install shell: pwsh - name: Build Windows Server id: build-server run: | cd ${{ env.SOURCECODE_DIR }}/project npm run build:release ls -l build mv build ${{ env.OUTPUT_DIR }} shell: bash - name: Generate Windows File Name id: filename run: | artifact_name=${{ env.OUTPUT_DIR }}-${{ needs.prepare.outputs.TARGET_TAG }}-win-release-${{ steps.debug-info.outputs.COMMIT_ID }}-EFT${{ needs.prepare.outputs.EFT_VERSION }}-${{ needs.prepare.outputs.BUILD_DATE_TIME }}-artifact release_name=${{ env.OUTPUT_DIR }}-${{ needs.prepare.outputs.TARGET_TAG }}-win-release-${{ steps.debug-info.outputs.COMMIT_ID }}-EFT${{ needs.prepare.outputs.EFT_VERSION }}-${{ needs.prepare.outputs.BUILD_DATE_TIME }}.zip echo "WIN_ARTIFACT=$artifact_name" >> $GITHUB_OUTPUT echo "WIN_RELEASE=$release_name" >> $GITHUB_OUTPUT shell: bash - name: Artifact Windows Server uses: actions/upload-artifact@v4 with: name: ${{ steps.filename.outputs.WIN_ARTIFACT }} path: ${{ env.SOURCECODE_DIR }}/project/${{ env.OUTPUT_DIR }} overwrite: true - name: Push Windows Server Code run: | cd ${{ env.SOURCECODE_DIR }} git pull REMOTE_URL="https://medusa:${{ secrets.GIT_PUSH_TO_SPT }}@dev.sp-tarkov.com/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}.git" git remote set-url origin "$REMOTE_URL" git push shell: bash build-server-linux: needs: prepare if: ${{ needs.prepare.outputs.PROCEED == 'true' }} runs-on: ubuntu-latest env: OUTPUT_DIR: spt-server SOURCECODE_DIR: ${{ github.workspace }}/code SPT_USER: medusa SPT_REGISTRY: dev.sp-tarkov.com DOCKERHUB_USER: stblog DOCKERHUB_REPOSITORY: spt-server GHCR_USER: airryco GHCR_REPOSITORY: spt-server outputs: LINUX_COMMIT_ID: ${{ steps.debug-info.outputs.COMMIT_ID }} LINUX_ARTIFACT: ${{ steps.filename.outputs.LINUX_ARTIFACT }} LINUX_RELEASE_FILE: ${{ steps.filename.outputs.LINUX_RELEASE }} steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Git Config run: | git config --global user.name "github-actions[bot]" git config --global user.email "bot@github.com" - name: Clone Medusa's Linux Server Code run: | git clone -b ${{ env.RELEASE_BRANCH }} ${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }} ${{ env.SOURCECODE_DIR }} cd ${{ env.SOURCECODE_DIR }} git lfs pull shell: bash - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20.11.1 - name: Merge Server Code From SPT run: | cd ${{ env.SOURCECODE_DIR }} git pull git fetch -u ${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER }}.git ${{ needs.prepare.outputs.TARGET_TAG }}:SPT-${{ needs.prepare.outputs.TARGET_TAG }} git merge -m "🤖 Merge tag \`${{ needs.prepare.outputs.TARGET_TAG }}\` from SPT" --no-ff SPT-${{ needs.prepare.outputs.TARGET_TAG }} shell: bash - name: Runner Debug Information id: debug-info run: | cp -v ${{ env.SOURCECODE_DIR }}/project/package.json . cd ${{ env.SOURCECODE_DIR }} echo "git version: $(git --version)" echo "git lfs version: $(git-lfs --version)" echo "node.js version: $(node --version)" echo "npm version: $(npm --version)" echo "latest commit hash: $(git rev-parse HEAD)" echo "last commit message:" && git log -1 --pretty=%B echo "COMMIT_ID=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT echo "COMMIT_ID_WHOLE=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT shell: bash - name: Cache NPM Dependencies id: cache-npm-dependencies uses: actions/cache@v4 with: path: | ${{ env.SOURCECODE_DIR }}/project/node_modules key: ${{ runner.os }}-npm-dependencies-${{ hashFiles('package.json') }} restore-keys: | ${{ runner.os }}-npm-dependencies- - name: Install NPM Dependencies if: steps.cache-npm-dependencies.outputs.cache-hit != 'true' run: | cd ${{ env.SOURCECODE_DIR }}/project npm install shell: bash - name: Build Linux Server id: build-server run: | cd ${{ env.SOURCECODE_DIR }}/project npm run build:release ls -l build mv build ${{ env.OUTPUT_DIR }} shell: bash - name: Generate Linux File Name id: filename run: | artifact_name=${{ env.OUTPUT_DIR }}-${{ needs.prepare.outputs.TARGET_TAG }}-linux-release-${{ steps.debug-info.outputs.COMMIT_ID }}-EFT${{ needs.prepare.outputs.EFT_VERSION }}-${{ needs.prepare.outputs.BUILD_DATE_TIME }}-artifact release_name=${{ env.OUTPUT_DIR }}-${{ needs.prepare.outputs.TARGET_TAG }}-linux-release-${{ steps.debug-info.outputs.COMMIT_ID }}-EFT${{ needs.prepare.outputs.EFT_VERSION }}-${{ needs.prepare.outputs.BUILD_DATE_TIME }}.zip echo "LINUX_ARTIFACT=$artifact_name" >> $GITHUB_OUTPUT echo "LINUX_RELEASE=$release_name" >> $GITHUB_OUTPUT shell: bash - name: Artifact Linux Server uses: actions/upload-artifact@v4 with: name: ${{ steps.filename.outputs.LINUX_ARTIFACT }} path: ${{ env.SOURCECODE_DIR }}/project/${{ env.OUTPUT_DIR }} overwrite: true # docker - name: Move .tgz to docker dir run: | cd ${{ env.SOURCECODE_DIR }}/project tar -czf ../docker/spt-server.tgz ${{ env.OUTPUT_DIR }} ls -l ../docker shell: bash - name: Extract metadata for Docker with bem version if: ${{ contains(needs.prepare.outputs.TARGET_TAG, 'BEM') }} id: meta uses: docker/metadata-action@v5 with: images: | ${{ env.DOCKERHUB_USER }}/${{ env.DOCKERHUB_REPOSITORY }} ghcr.io/${{ env.GHCR_USER }}/${{ env.GHCR_REPOSITORY }} registry.cn-shenzhen.aliyuncs.com/spt-server/spt-server tags: | type=semver,pattern={{version}},value=${{ needs.prepare.outputs.TARGET_TAG }} type=semver,pattern={{major}}.{{minor}},value=${{ needs.prepare.outputs.TARGET_TAG }} - name: Extract metadata for Docker with latest version if: ${{ !contains(needs.prepare.outputs.TARGET_TAG, 'BEM') }} id: meta-latest uses: docker/metadata-action@v5 with: images: | ${{ env.DOCKERHUB_USER }}/${{ env.DOCKERHUB_REPOSITORY }} ghcr.io/${{ env.GHCR_USER }}/${{ env.GHCR_REPOSITORY }} registry.cn-shenzhen.aliyuncs.com/spt-server/spt-server tags: | type=semver,pattern={{version}},value=${{ needs.prepare.outputs.TARGET_TAG }} type=semver,pattern={{major}}.{{minor}},value=${{ needs.prepare.outputs.TARGET_TAG }} type=raw,value=latest - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 # DockerHub - name: Login to Dockerhub uses: docker/login-action@v3 with: username: ${{ env.DOCKERHUB_USER }} password: ${{ secrets.DOCKERHUB_TOKEN }} # GitHub Container Registry - name: Login to Github Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ env.GHCR_USER }} password: ${{ secrets.GHCR_TOKEN }} # Aliyun Registry - name: Login to Aliyun Registry uses: docker/login-action@v3 with: registry: registry.cn-shenzhen.aliyuncs.com username: ${{ secrets.ALIYUN_REGISTRY_USER }} password: ${{ secrets.ALIYUN_REGISTRY_TOKEN }} - name: Build and Push For BEM if: ${{ contains(needs.prepare.outputs.TARGET_TAG, 'BEM') }} uses: docker/build-push-action@v6 with: context: ${{ env.SOURCECODE_DIR }}/docker push: true tags: ${{ steps.meta.outputs.tags }} labels: | ${{ steps.meta.outputs.labels }} org.opencontainers.image.source=https://dev.sp-tarkov.com/medusa/spt-server org.opencontainers.image.url=https://dev.sp-tarkov.com/medusa/spt-server org.opencontainers.image.revision=${{ steps.debug-info.outputs.COMMIT_ID_WHOLE }} platforms: linux/amd64 - name: Build and Push For Latest if: ${{ !contains(needs.prepare.outputs.TARGET_TAG, 'BEM') }} uses: docker/build-push-action@v6 with: context: ${{ env.SOURCECODE_DIR }}/docker push: true tags: ${{ steps.meta-latest.outputs.tags }} labels: | ${{ steps.meta-latest.outputs.labels }} org.opencontainers.image.source=https://dev.sp-tarkov.com/medusa/spt-server org.opencontainers.image.url=https://dev.sp-tarkov.com/medusa/spt-server org.opencontainers.image.revision=${{ steps.debug-info.outputs.COMMIT_ID_WHOLE }} platforms: linux/amd64 - name: Push Linux Server Code And Tag run: | cd ${{ env.SOURCECODE_DIR }} git pull REMOTE_URL="https://medusa:${{ secrets.GIT_PUSH_TO_SPT }}@dev.sp-tarkov.com/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}.git" git remote set-url origin "$REMOTE_URL" git push git tag -d ${{ needs.prepare.outputs.TARGET_TAG }} git tag ${{ needs.prepare.outputs.TARGET_TAG }} git push -u origin ${{ needs.prepare.outputs.TARGET_TAG }} shell: bash assemble-and-publish: needs: [prepare, build-server-windows, build-server-linux] runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Git Config run: | git config --global user.name "github-actions[bot]" git config --global user.email "bot@github.com" - name: Push Code To GitHub run: | git pull rm trigger.release echo "${{ needs.prepare.outputs.TARGET_TAG }}" > trigger.release git add trigger.release git commit -m "🤖 bump to \`${{ needs.prepare.outputs.TARGET_TAG }}\`." git push shell: bash - name: Download Windows Artifact uses: actions/download-artifact@v4 with: name: ${{ needs.build-server-windows.outputs.WIN_ARTIFACT }} path: windows - name: Download Linux Artifact uses: actions/download-artifact@v4 with: name: ${{ needs.build-server-linux.outputs.LINUX_ARTIFACT }} path: linux - name: List Release Contents run: | ls -R windows echo "=========================" ls -R linux shell: bash - name: Compress Releases id: compress-release run: | cd windows zip -r ../${{ needs.build-server-windows.outputs.WIN_RELEASE_FILE }} * cd ../linux zip -r ../${{ needs.build-server-linux.outputs.LINUX_RELEASE_FILE }} * ls -R .. shell: bash - name: Create Github Pre-release id: create_pre_release if: ${{ contains(needs.prepare.outputs.TARGET_TAG, 'BEM') }} uses: softprops/action-gh-release@v2 with: name: ${{ needs.prepare.outputs.TARGET_TAG }} tag_name: ${{ needs.prepare.outputs.TARGET_TAG }} prerelease: true body: | SPT: ***${{ needs.prepare.outputs.SPT_VERSION }}*** Tarkov: ***${{ needs.prepare.outputs.EFT_VERSION }}*** [SPT/Server](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER }}) commit hash: [${{ needs.prepare.outputs.SPT_SERVER_COMMIT }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER }}/src/commit/${{ needs.prepare.outputs.SPT_SERVER_COMMIT }}), commit time: **${{ needs.prepare.outputs.SPT_SERVER_COMMIT_TIME }}** [medusa/spt-server](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}) commit: - linux: [${{ needs.build-server-linux.outputs.LINUX_COMMIT_ID }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/src/commit/${{ needs.build-server-linux.outputs.LINUX_COMMIT_ID }}) - windows: [${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/src/commit/${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}) Build time: ***${{ needs.prepare.outputs.BUILD_DATE_TIME }}*** > [!WARNING] > After downloading, please use extraction software like WinRAR or [7-Zip](https://www.7-zip.org/) to unzip the files, then copy them to the Tarkov root directory. Do not use Windows File Explorer to directly open and copy the files. ***Docker Supported For linux/amd64***: ```bash docker pull stblog/spt-server:${{ needs.prepare.outputs.TARGET_TAG }} docker pull ghcr.io/airryco/spt-server:${{ needs.prepare.outputs.TARGET_TAG }} ``` Full Changelog: - linux: [${{ needs.prepare.outputs.BUILT_TAG }}....${{ needs.prepare.outputs.TARGET_TAG }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/compare/${{ needs.prepare.outputs.BUILT_TAG }}...${{ needs.prepare.outputs.TARGET_TAG }}) - windows: [${{ needs.prepare.outputs.BUILT_TAG }}....${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/compare/${{ needs.prepare.outputs.BUILT_TAG }}...${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}) files: | ${{ needs.build-server-windows.outputs.WIN_RELEASE_FILE }} ${{ needs.build-server-linux.outputs.LINUX_RELEASE_FILE }} - name: Create Github Release id: create_release if: ${{ !contains(needs.prepare.outputs.TARGET_TAG, 'BEM') }} uses: softprops/action-gh-release@v2 with: name: ${{ needs.prepare.outputs.TARGET_TAG }} tag_name: ${{ needs.prepare.outputs.TARGET_TAG }} prerelease: false body: | SPT: ***${{ needs.prepare.outputs.SPT_VERSION }}*** [SPT/Server](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER }}) commit hash: [${{ needs.prepare.outputs.SPT_SERVER_COMMIT }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER }}/src/commit/${{ needs.prepare.outputs.SPT_SERVER_COMMIT }}), commit time: **${{ needs.prepare.outputs.SPT_SERVER_COMMIT_TIME }}** [medusa/spt-server](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}) commit: - linux: [${{ needs.build-server-linux.outputs.LINUX_COMMIT_ID }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/src/commit/${{ needs.build-server-linux.outputs.LINUX_COMMIT_ID }}) - windows: [${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/src/commit/${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}) Tarkov: ***${{ needs.prepare.outputs.EFT_VERSION }}*** Build time: ***${{ needs.prepare.outputs.BUILD_DATE_TIME }}*** > [!WARNING] > After downloading, please use extraction software like WinRAR or [7-Zip](https://www.7-zip.org/) to unzip the files, then copy them to the Tarkov root directory. Do not use Windows File Explorer to directly open and copy the files. ***Docker Supported For linux/amd64***: ```bash docker pull stblog/spt-server:${{ needs.prepare.outputs.TARGET_TAG }} docker pull ghcr.io/airryco/spt-server:${{ needs.prepare.outputs.TARGET_TAG }} ``` Full Changelog: - linux: [${{ needs.prepare.outputs.BUILT_TAG }}....${{ needs.prepare.outputs.TARGET_TAG }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/compare/${{ needs.prepare.outputs.BUILT_TAG }}...${{ needs.prepare.outputs.TARGET_TAG }}) - windows: [${{ needs.prepare.outputs.BUILT_TAG }}....${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/compare/${{ needs.prepare.outputs.BUILT_TAG }}...${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}) files: | ${{ needs.build-server-windows.outputs.WIN_RELEASE_FILE }} ${{ needs.build-server-linux.outputs.LINUX_RELEASE_FILE }} - name: Create Gitea Pre-release id: create_gitea_pre_release if: ${{ contains(needs.prepare.outputs.TARGET_TAG, 'BEM') }} uses: akkuman/gitea-release-action@v1 with: server_url: ${{ env.SERVER_URL }} repository: ${{ env.REPOSITORY_SPT_SERVER_MEDUSA }} token: ${{ secrets.GIT_PUSH_TO_SPT }} name: ${{ needs.prepare.outputs.TARGET_TAG }} tag_name: ${{ needs.prepare.outputs.TARGET_TAG }} target_commitish: ${{ needs.build-server-linux.outputs.LINUX_COMMIT_ID }} prerelease: true body: | SPT: ***${{ needs.prepare.outputs.SPT_VERSION }}*** [SPT/Server](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER }}) commit hash: [${{ needs.prepare.outputs.SPT_SERVER_COMMIT }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER }}/src/commit/${{ needs.prepare.outputs.SPT_SERVER_COMMIT }}), commit time: **${{ needs.prepare.outputs.SPT_SERVER_COMMIT_TIME }}** [medusa/spt-server](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}) commit: - linux: [${{ needs.build-server-linux.outputs.LINUX_COMMIT_ID }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/src/commit/${{ needs.build-server-linux.outputs.LINUX_COMMIT_ID }}) - windows: [${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/src/commit/${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}) Tarkov: ***${{ needs.prepare.outputs.EFT_VERSION }}*** Build time: ***${{ needs.prepare.outputs.BUILD_DATE_TIME }}*** **Docker Supported For linux/amd64**: ```bash docker pull stblog/spt-server:${{ needs.prepare.outputs.TARGET_TAG }} docker pull ghcr.io/airryco/spt-server:${{ needs.prepare.outputs.TARGET_TAG }} ``` Download Page: ${{ github.server_url }}/${{ github.repository }}/releases/tag/${{ needs.prepare.outputs.TARGET_TAG }} > [!WARNING] > After downloading, please use extraction software like WinRAR or [7-Zip](https://www.7-zip.org/) to unzip the files, then copy them to the Tarkov root directory. Do not use Windows File Explorer to directly open and copy the files. Full Changelog: - linux: [${{ needs.prepare.outputs.BUILT_TAG }}....${{ needs.prepare.outputs.TARGET_TAG }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/compare/${{ needs.prepare.outputs.BUILT_TAG }}...${{ needs.prepare.outputs.TARGET_TAG }}) - windows: [${{ needs.prepare.outputs.BUILT_TAG }}....${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/compare/${{ needs.prepare.outputs.BUILT_TAG }}...${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}) - name: Create Gitea Release id: create_gitea_release if: ${{ !contains(needs.prepare.outputs.TARGET_TAG, 'BEM') }} uses: akkuman/gitea-release-action@v1 with: server_url: ${{ env.SERVER_URL }} repository: ${{ env.REPOSITORY_SPT_SERVER_MEDUSA }} token: ${{ secrets.GIT_PUSH_TO_SPT }} name: ${{ needs.prepare.outputs.TARGET_TAG }} tag_name: ${{ needs.prepare.outputs.TARGET_TAG }} target_commitish: ${{ needs.build-server-linux.outputs.LINUX_COMMIT_ID }} prerelease: false body: | SPT: ***${{ needs.prepare.outputs.SPT_VERSION }}*** [SPT/Server](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER }}) commit hash: [${{ needs.prepare.outputs.SPT_SERVER_COMMIT }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER }}/src/commit/${{ needs.prepare.outputs.SPT_SERVER_COMMIT }}), commit time: **${{ needs.prepare.outputs.SPT_SERVER_COMMIT_TIME }}** [medusa/spt-server](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}) commit: - linux: [${{ needs.build-server-linux.outputs.LINUX_COMMIT_ID }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/src/commit/${{ needs.build-server-linux.outputs.LINUX_COMMIT_ID }}) - windows: [${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/src/commit/${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}) Tarkov: ***${{ needs.prepare.outputs.EFT_VERSION }}*** Build time: ***${{ needs.prepare.outputs.BUILD_DATE_TIME }}*** **Docker Supported For linux/amd64**: ```bash docker pull stblog/spt-server:${{ needs.prepare.outputs.TARGET_TAG }} docker pull ghcr.io/airryco/spt-server:${{ needs.prepare.outputs.TARGET_TAG }} ``` Download Page: ${{ github.server_url }}/${{ github.repository }}/releases/tag/${{ needs.prepare.outputs.TARGET_TAG }} > [!WARNING] > After downloading, please use extraction software like WinRAR or [7-Zip](https://www.7-zip.org/) to unzip the files, then copy them to the Tarkov root directory. Do not use Windows File Explorer to directly open and copy the files. Full Changelog: - linux: [${{ needs.prepare.outputs.BUILT_TAG }}....${{ needs.prepare.outputs.TARGET_TAG }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/compare/${{ needs.prepare.outputs.BUILT_TAG }}...${{ needs.prepare.outputs.TARGET_TAG }}) - windows: [${{ needs.prepare.outputs.BUILT_TAG }}....${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }}](${{ env.SERVER_URL }}/${{ env.REPOSITORY_SPT_SERVER_MEDUSA }}/compare/${{ needs.prepare.outputs.BUILT_TAG }}...${{ needs.build-server-windows.outputs.WIN_COMMIT_ID }})