Continuous Building #290
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Continuous Building | |
| on: | |
| schedule: | |
| - cron: 0 0 * * 1 | |
| push: | |
| paths: | |
| - .github/actions/** | |
| - .github/workflows/** | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| packages: write | |
| jobs: | |
| generate-metadata: | |
| name: Generate metadata | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 30 | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| project: | |
| - name: TrenchBroom | |
| filename: trenchbroom | |
| author: Kristian Duske | |
| repo: TrenchBroom/TrenchBroom | |
| website: http://kristianduske.com/trenchbroom | |
| - name: ericw-tools | |
| filename: ericw-tools | |
| author: Eric Wasylishen | |
| repo: ericwa/ericw-tools | |
| documentation: https://ericw-tools.readthedocs.io | |
| - name: Ironwail | |
| filename: ironwail | |
| author: Andrei Drexler | |
| repo: andrei-drexler/ironwail | |
| twitter: https://twitter.com/andrei_drexler | |
| - name: Quake CLI Tools | |
| filename: quake-cli-tools | |
| author: Joshua Skelton | |
| repo: joshuaskelly/quake-cli-tools | |
| website: https://joshua.itch.io/quake-tools | |
| howto: https://www.youtube.com/watch?v=zJ0RX62VYaA | |
| - name: goldutil | |
| filename: goldutil | |
| author: Léo Peltier | |
| repo: L-P/goldutil | |
| - name: Extras | |
| filename: extras | |
| steps: | |
| - name: Checkout the local repository files | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 | |
| with: | |
| fetch-depth: 0 | |
| - name: Generate the metadata | |
| uses: ./.github/actions/_shared/make-dynamic-uses | |
| with: | |
| USES_INPUTS: '{ "ARTIFACT_AUTHOR_NAME": "${{ matrix.project.author }}", "ARTIFACT_DOCUMENTATION_URL": "${{ matrix.project.documentation }}", "ARTIFACT_FILENAME": "${{ matrix.project.filename }}", "ARTIFACT_HOWTO_URL": "${{ matrix.project.howto }}", "ARTIFACT_NAME": "${{ matrix.project.name }}", "ARTIFACT_REPOSITORY": "${{ matrix.project.repo }}", "ARTIFACT_TWITTER_URL": "${{ matrix.project.twitter }}", "ARTIFACT_WEBSITE_URL": "${{ matrix.project.website }}" }' | |
| USES_PATH: ./.github/actions/continuous-building/${{ matrix.project.filename }}/generate-metadata | |
| - name: Pack and upload the artifact | |
| uses: ./.github/actions/_shared/pack-upload-artifact | |
| with: | |
| ARTIFACT_FILENAME: ${{ matrix.project.filename }}-metadata | |
| ARTIFACT_PATH: working-directory/${{ matrix.project.filename }}-metadata/ | |
| build-binaries: | |
| name: Build the binaries | |
| needs: generate-metadata | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 180 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-22.04, windows-2022] | |
| project: | |
| - filename: trenchbroom | |
| repository: TrenchBroom/TrenchBroom | |
| - filename: ericw-tools | |
| repository: ericwa/ericw-tools | |
| - filename: ironwail | |
| repository: andrei-drexler/ironwail | |
| - filename: quake-cli-tools | |
| repository: joshuaskelly/quake-cli-tools | |
| - filename: goldutil | |
| repository: L-P/goldutil | |
| steps: | |
| - name: Checkout the local repository files | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set the operating system name | |
| uses: ./.github/actions/_shared/set-operating-system-name | |
| with: | |
| MATRIX_OS: ${{ matrix.os }} | |
| - name: Build the binaries | |
| uses: ./.github/actions/_shared/make-dynamic-uses | |
| with: | |
| USES_INPUTS: '{ "ARTIFACT_FILENAME": "${{ matrix.project.filename }}", "ARTIFACT_REPOSITORY": "${{ matrix.project.repository }}", "CICD_OPERATING_SYSTEM_NAME": "${{ env.CICD_OPERATING_SYSTEM_NAME }}" }' | |
| USES_PATH: ./.github/actions/continuous-building/${{ matrix.project.filename }}/build-binaries/${{ env.CICD_OPERATING_SYSTEM_NAME }} | |
| - name: Pack and upload the artifact | |
| uses: ./.github/actions/_shared/pack-upload-artifact | |
| with: | |
| ARTIFACT_FILENAME: ${{ matrix.project.filename }}-files-${{ env.CICD_OPERATING_SYSTEM_NAME }} | |
| ARTIFACT_PATH: working-directory/${{ matrix.project.filename }}-files-${{ env.CICD_OPERATING_SYSTEM_NAME }}/ | |
| get-extra-files: | |
| name: Get the extra files | |
| needs: generate-metadata | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 60 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-22.04, windows-2022] | |
| project: | |
| - filename: extras | |
| steps: | |
| - name: Checkout the local repository files | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set the operating system name | |
| uses: ./.github/actions/_shared/set-operating-system-name | |
| with: | |
| MATRIX_OS: ${{ matrix.os }} | |
| - name: Download the extra files | |
| uses: ./.github/actions/_shared/make-dynamic-uses | |
| with: | |
| USES_INPUTS: '{ "ARTIFACT_FILENAME": "${{ matrix.project.filename }}", "CICD_OPERATING_SYSTEM_NAME": "${{ env.CICD_OPERATING_SYSTEM_NAME }}" }' | |
| USES_PATH: ./.github/actions/continuous-building/${{ matrix.project.filename }}/get-files | |
| - name: Pack and upload the artifact | |
| uses: ./.github/actions/_shared/pack-upload-artifact | |
| with: | |
| ARTIFACT_FILENAME: ${{ matrix.project.filename }}-files-${{ env.CICD_OPERATING_SYSTEM_NAME }} | |
| ARTIFACT_PATH: working-directory/${{ matrix.project.filename }}-files-${{ env.CICD_OPERATING_SYSTEM_NAME }}/ |