Skip to content

Continuous Packing

Continuous Packing #83

name: Continuous Packing
on:
workflow_run:
workflows: Continuous Building
types: completed
env:
PROJECT_NAME_PREFIX: quake-leveldesign-starterkit
jobs:
pack-binaries:
name: Pack the binaries
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, windows-2022]
steps:
- name: Checkout the repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: "Linux: Set current packing date"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
run: echo "CURRENT_DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV
shell: bash
- name: "Linux: Download ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
uses: dawidd6/action-download-artifact@v3
with:
name_is_regexp: true
name: ^${{ env.ARTIFACT_DIRECTORY_NAME }}.*linux$
workflow: continuous-building.yml
skip_unpack: true
env:
ARTIFACT_NAME: TrenchBroom
ARTIFACT_DIRECTORY_NAME: trenchbroom
- name: "Linux: Unpack ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
run: 7z x "${{ env.ARTIFACT_DIRECTORY_NAME }}-binaries-linux.zip" -o"${{ env.PROJECT_NAME_PREFIX }}-linux/level-editor/" -y
shell: bash
env:
ARTIFACT_NAME: TrenchBroom
ARTIFACT_DIRECTORY_NAME: trenchbroom
- name: "Linux: Download ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
uses: dawidd6/action-download-artifact@v3
with:
name_is_regexp: true
name: ^${{ env.ARTIFACT_DIRECTORY_NAME }}.*linux$
workflow: continuous-building.yml
skip_unpack: true
env:
ARTIFACT_NAME: ericw-tools
ARTIFACT_DIRECTORY_NAME: ericw-tools
- name: "Linux: Unpack ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
run: 7z x "${{ env.ARTIFACT_DIRECTORY_NAME }}-binaries-linux.zip" -o"${{ env.PROJECT_NAME_PREFIX }}-linux/level-compiler/" -y
shell: bash
env:
ARTIFACT_NAME: ericw-tools
ARTIFACT_DIRECTORY_NAME: ericw-tools
- name: "Linux: Download ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
uses: dawidd6/action-download-artifact@v3
with:
name_is_regexp: true
name: ^${{ env.ARTIFACT_DIRECTORY_NAME }}.*linux$
workflow: continuous-building.yml
skip_unpack: true
env:
ARTIFACT_NAME: Ironwail
ARTIFACT_DIRECTORY_NAME: ironwail
- name: "Linux: Unpack ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
run: 7z x "${{ env.ARTIFACT_DIRECTORY_NAME }}-binaries-linux.zip" -o"${{ env.PROJECT_NAME_PREFIX }}-linux/tools/${{ env.ARTIFACT_DIRECTORY_NAME }}/" -y
shell: bash
env:
ARTIFACT_NAME: Ironwail
ARTIFACT_DIRECTORY_NAME: ironwail
- name: "Linux: Download ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
uses: dawidd6/action-download-artifact@v3
with:
name_is_regexp: true
name: ^${{ env.ARTIFACT_DIRECTORY_NAME }}.*linux$
workflow: continuous-building.yml
skip_unpack: true
env:
ARTIFACT_NAME: Quake CLI Tools
ARTIFACT_DIRECTORY_NAME: quake-cli-tools
- name: "Linux: Unpack ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
run: 7z x "${{ env.ARTIFACT_DIRECTORY_NAME }}-binaries-linux.zip" -o"${{ env.PROJECT_NAME_PREFIX }}-linux/tools/${{ env.ARTIFACT_DIRECTORY_NAME }}/" -y
shell: bash
env:
ARTIFACT_NAME: Quake CLI Tools
ARTIFACT_DIRECTORY_NAME: quake-cli-tools
- name: "Linux: Download ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
uses: dawidd6/action-download-artifact@v3
with:
name_is_regexp: true
name: ^${{ env.ARTIFACT_DIRECTORY_NAME }}.*linux$
workflow: continuous-building.yml
skip_unpack: true
env:
ARTIFACT_NAME: goldutil
ARTIFACT_DIRECTORY_NAME: goldutil
- name: "Linux: Unpack ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
run: 7z x "${{ env.ARTIFACT_DIRECTORY_NAME }}-binaries-linux.zip" -o"${{ env.PROJECT_NAME_PREFIX }}-linux/tools/${{ env.ARTIFACT_DIRECTORY_NAME }}/" -y
shell: bash
env:
ARTIFACT_NAME: goldutil
ARTIFACT_DIRECTORY_NAME: goldutil
- name: "Linux: Download ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
uses: dawidd6/action-download-artifact@v3
with:
name_is_regexp: true
name: ^${{ env.ARTIFACT_DIRECTORY_NAME }}.*$
workflow: continuous-building.yml
skip_unpack: true
env:
ARTIFACT_NAME: Extras
ARTIFACT_DIRECTORY_NAME: extras
- name: "Linux: Unpack ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
run: 7z x "${{ env.ARTIFACT_DIRECTORY_NAME }}-files.zip" -o"${{ env.PROJECT_NAME_PREFIX }}-linux/${{ env.ARTIFACT_DIRECTORY_NAME }}/" -y
shell: bash
env:
ARTIFACT_NAME: Extras
ARTIFACT_DIRECTORY_NAME: extras
- name: "Linux: Copy Markdown and LICENSE files"
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
run: cp *.md LICENSE "${{ env.PROJECT_NAME_PREFIX }}-linux/"
shell: bash
- name: "Linux: Pack and upload the artifact"
uses: actions/upload-artifact@v4
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
with:
path: ${{ env.PROJECT_NAME_PREFIX }}-linux/
name: ${{ env.PROJECT_NAME_PREFIX }}-${{ env.CURRENT_DATE }}-linux
if-no-files-found: error
retention-days: 1
- name: "Windows: Set current packing date"
if: ${{ startsWith(matrix.os, 'windows-') }}
run: echo "CURRENT_DATE=$(Get-Date -Format 'yyyyMMdd')" | Out-File -Append -FilePath $env:GITHUB_ENV
shell: pwsh
- name: "Windows: Download ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'windows-') }}
uses: dawidd6/action-download-artifact@v3
with:
name_is_regexp: true
name: ^${{ env.ARTIFACT_DIRECTORY_NAME }}.*windows$
workflow: continuous-building.yml
skip_unpack: true
env:
ARTIFACT_NAME: TrenchBroom
ARTIFACT_DIRECTORY_NAME: trenchbroom
- name: "Windows: Unpack ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'windows-') }}
run: 7z x "${env:ARTIFACT_DIRECTORY_NAME}-binaries-windows.zip" -o"${env:PROJECT_NAME_PREFIX}-windows\level-editor\" -y
shell: pwsh
env:
ARTIFACT_NAME: TrenchBroom
ARTIFACT_DIRECTORY_NAME: trenchbroom
- name: "Windows: Download ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'windows-') }}
uses: dawidd6/action-download-artifact@v3
with:
name_is_regexp: true
name: ^${{ env.ARTIFACT_DIRECTORY_NAME }}.*windows$
workflow: continuous-building.yml
skip_unpack: true
env:
ARTIFACT_NAME: ericw-tools
ARTIFACT_DIRECTORY_NAME: ericw-tools
- name: "Windows: Unpack ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'windows-') }}
run: 7z x "${env:ARTIFACT_DIRECTORY_NAME}-binaries-windows.zip" -o"${env:PROJECT_NAME_PREFIX}-windows\level-compiler\" -y
shell: pwsh
env:
ARTIFACT_NAME: ericw-tools
ARTIFACT_DIRECTORY_NAME: ericw-tools
- name: "Windows: Download ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'windows-') }}
uses: dawidd6/action-download-artifact@v3
with:
name_is_regexp: true
name: ^${{ env.ARTIFACT_DIRECTORY_NAME }}.*windows$
workflow: continuous-building.yml
skip_unpack: true
env:
ARTIFACT_NAME: Ironwail
ARTIFACT_DIRECTORY_NAME: ironwail
- name: "Windows: Unpack ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'windows-') }}
run: 7z x "${env:ARTIFACT_DIRECTORY_NAME}-binaries-windows.zip" -o"${env:PROJECT_NAME_PREFIX}-windows\tools\${env:ARTIFACT_DIRECTORY_NAME}\" -y
shell: pwsh
env:
ARTIFACT_NAME: Ironwail
ARTIFACT_DIRECTORY_NAME: ironwail
- name: "Windows: Download ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'windows-') }}
uses: dawidd6/action-download-artifact@v3
with:
name_is_regexp: true
name: ^${{ env.ARTIFACT_DIRECTORY_NAME }}.*windows$
workflow: continuous-building.yml
skip_unpack: true
env:
ARTIFACT_NAME: Quake CLI Tools
ARTIFACT_DIRECTORY_NAME: quake-cli-tools
- name: "Windows: Unpack ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'windows-') }}
run: 7z x "${env:ARTIFACT_DIRECTORY_NAME}-binaries-windows.zip" -o"${env:PROJECT_NAME_PREFIX}-windows\tools\${env:ARTIFACT_DIRECTORY_NAME}\" -y
shell: pwsh
env:
ARTIFACT_NAME: Quake CLI Tools
ARTIFACT_DIRECTORY_NAME: quake-cli-tools
- name: "Windows: Download ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'windows-') }}
uses: dawidd6/action-download-artifact@v3
with:
name_is_regexp: true
name: ^${{ env.ARTIFACT_DIRECTORY_NAME }}.*windows$
workflow: continuous-building.yml
skip_unpack: true
env:
ARTIFACT_NAME: goldutil
ARTIFACT_DIRECTORY_NAME: goldutil
- name: "Windows: Unpack ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'windows-') }}
run: 7z x "${env:ARTIFACT_DIRECTORY_NAME}-binaries-windows.zip" -o"${env:PROJECT_NAME_PREFIX}-windows\tools\${env:ARTIFACT_DIRECTORY_NAME}\" -y
shell: pwsh
env:
ARTIFACT_NAME: goldutil
ARTIFACT_DIRECTORY_NAME: goldutil
- name: "Windows: Download ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'windows-') }}
uses: dawidd6/action-download-artifact@v3
with:
name_is_regexp: true
name: ^${{ env.ARTIFACT_DIRECTORY_NAME }}.*$
workflow: continuous-building.yml
skip_unpack: true
env:
ARTIFACT_NAME: Extras
ARTIFACT_DIRECTORY_NAME: extras
- name: "Windows: Unpack ${{ env.ARTIFACT_NAME }} artifact"
if: ${{ startsWith(matrix.os, 'windows-') }}
run: 7z x "${env:ARTIFACT_DIRECTORY_NAME}-files.zip" -o"${env:PROJECT_NAME_PREFIX}-windows\${env:ARTIFACT_DIRECTORY_NAME}\" -y
shell: pwsh
env:
ARTIFACT_NAME: Extras
ARTIFACT_DIRECTORY_NAME: extras
- name: "Windows: Copy Markdown and LICENSE files"
if: ${{ startsWith(matrix.os, 'windows-') }}
run: Copy-Item *.md, LICENSE -Destination "${{ env.PROJECT_NAME_PREFIX }}-windows/"
shell: pwsh
- name: "Windows: Pack and upload the artifact"
uses: actions/upload-artifact@v4
if: ${{ startsWith(matrix.os, 'windows-') }}
with:
path: ${{ env.PROJECT_NAME_PREFIX }}-windows/
name: ${{ env.PROJECT_NAME_PREFIX }}-${{ env.CURRENT_DATE }}-windows
if-no-files-found: error
retention-days: 1
create-release-notes:
name: Create the release notes
runs-on: ubuntu-22.04
steps:
- name: Set current packing date
run: echo "CURRENT_DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV
shell: bash
- name: Download packed metadata
uses: dawidd6/action-download-artifact@v3
with:
name_is_regexp: true
name: ^.*-metadata.*$
workflow: continuous-building.yml
skip_unpack: true
- name: Parse the metadata files
run: |
mkdir -p "${{ env.PROJECT_NAME_PREFIX }}-release-notes/"
echo "This is a release of [Quake Level Design Starter Kit](https://github.com/jonathanlinat/${{ env.PROJECT_NAME_PREFIX }}). For comprehensive details about the project and setup guidance, please [refer to the instructions](https://github.com/jonathanlinat/${{ env.PROJECT_NAME_PREFIX }}/wiki).
## Features
The current version of **QLDSK** includes the following set of applications, tools and extras:" >> "${{ env.PROJECT_NAME_PREFIX }}-release-notes/RELEASE_NOTES.md"
IFS=',' read -r -a metadata_files <<< "${{ env.METADATA_FILES }}"
for metadata_file in "${metadata_files[@]}"; do
7z e -so "$metadata_file-metadata.zip" METADATA.md >> "${{ env.PROJECT_NAME_PREFIX }}-release-notes/RELEASE_NOTES.md" -y
done
shell: bash
env:
METADATA_FILES: trenchbroom,ericw-tools,ironwail,quake-cli-tools,goldutil,extras
- name: Pack and upload the release notes
uses: actions/upload-artifact@v4
with:
path: ${{ env.PROJECT_NAME_PREFIX }}-release-notes/
name: ${{ env.PROJECT_NAME_PREFIX }}-release-notes-${{ env.CURRENT_DATE }}
if-no-files-found: error
retention-days: 1