name: Release on: workflow_dispatch: inputs: ref: description: 'Ref to build (for Pull Requests, use refs/pull/NNN/head)' required: true repository_dispatch: # client_payload should be the same as the inputs for workflow_dispatch. types: - Build* release: types: - published jobs: source: name: Source uses: ./.github/workflows/release-source.yml secrets: inherit docs: name: Docs needs: source if: ${{ false }} # CM uses: ./.github/workflows/release-docs.yml secrets: inherit with: version: ${{ needs.source.outputs.version }} linux: name: Linux (Generic) needs: source uses: ./.github/workflows/release-linux.yml secrets: inherit with: survey_key: ${{ needs.source.outputs.survey_key }} macos: name: MacOS needs: source uses: ./.github/workflows/release-macos.yml secrets: inherit with: survey_key: ${{ needs.source.outputs.survey_key }} windows: name: Windows needs: source uses: ./.github/workflows/release-windows.yml secrets: inherit with: is_tag: ${{ needs.source.outputs.is_tag }} survey_key: ${{ needs.source.outputs.survey_key }} windows-store: name: Windows Store needs: - source - windows if: ${{ false }} # CM # if: needs.source.outputs.is_tag == 'true' uses: ./.github/workflows/release-windows-store.yml secrets: inherit with: version: ${{ needs.source.outputs.version }} upload: name: Upload needs: - source - docs - linux - macos - windows - windows-store if: ${{ false }} # CM # As windows-store is condition, we need to check ourselves if we need to run. # The always() makes sure the rest is always evaluated. # if: always() && needs.source.result == 'success' && needs.docs.result == 'success' && needs.linux.result == 'success' && needs.macos.result == 'success' && needs.windows.result == 'success' && (needs.windows-store.result == 'success' || needs.windows-store.result == 'skipped') runs-on: ubuntu-latest # This job is empty, but ensures no upload job starts before all targets finished and are successful. steps: - name: Build completed run: | true upload-cdn: name: Upload (CDN) needs: - source - upload # As windows-store is condition, we need to check ourselves if we need to run. # The always() makes sure the rest is always evaluated. # Yes, you even need to do this if you yourself don't depend on the condition. if: always() && needs.source.result == 'success' && needs.upload.result == 'success' uses: ./.github/workflows/upload-cdn.yml secrets: inherit with: version: ${{ needs.source.outputs.version }} folder: ${{ needs.source.outputs.folder }} trigger_type: ${{ needs.source.outputs.trigger_type }} upload-steam: name: Upload (Steam) needs: - source - upload # As windows-store is condition, we need to check ourselves if we need to run. # The always() makes sure the rest is always evaluated. # Yes, you even need to do this if you yourself don't depend on the condition. # Additionally, only nightlies and releases go to Steam; not PRs. # if: always() && needs.source.result == 'success' && needs.upload.result == 'success' && (needs.source.outputs.trigger_type == 'new-master' || needs.source.outputs.trigger_type == 'new-tag') if: ${{ false }} # CM uses: ./.github/workflows/upload-steam.yml secrets: inherit with: version: ${{ needs.source.outputs.version }} trigger_type: ${{ needs.source.outputs.trigger_type }} upload-gog: name: Upload (GOG) needs: - source - upload # As windows-store is condition, we need to check ourselves if we need to run. # The always() makes sure the rest is always evaluated. # Yes, you even need to do this if you yourself don't depend on the condition. # Additionally, only releases go to GOG; not nightlies or PRs. # if: always() && needs.source.result == 'success' && needs.upload.result == 'success' && needs.source.outputs.trigger_type == 'new-tag' if: ${{ false }} # CM uses: ./.github/workflows/upload-gog.yml secrets: inherit with: version: ${{ needs.source.outputs.version }} cm-upload-github: name: Release GitHub assets needs: - source - linux - macos - windows if: needs.source.outputs.trigger_type == 'new-master' || needs.source.outputs.trigger_type == 'new-tag' runs-on: ubuntu-latest steps: - name: Download all bundles uses: actions/download-artifact@v7 - name: Release GitHub assets uses: softprops/action-gh-release@v2.5.0 # if: startsWith(github.ref, 'refs/tags/') with: files: | citymania-client-*/*.zip citymania-client-*/*.xz citymania-client-*/*.dmg cm-upload-citymania: name: Upload to CityMania needs: - source - linux - macos - windows if: needs.source.outputs.trigger_type == 'new-master' || needs.source.outputs.trigger_type == 'new-tag' runs-on: ubuntu-latest steps: - name: Download all bundles uses: actions/download-artifact@v7 - name: Upload to CityMania uses: appleboy/scp-action@master # if: startsWith(github.ref, 'refs/tags/') with: host: ${{ secrets.UPLOAD_HOST }} username: ${{ secrets.UPLOAD_USERNAME }} key: ${{ secrets.UPLOAD_KEY }} port: ${{ secrets.UPLOAD_PORT }} source: "citymania-client-*/*.zip,citymania-client-*/*.xz,citymania-client-*/*.dmg" strip_components: 1 target: ${{ secrets.UPLOAD_PATH }}