Build and Release #401
This file contains 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: Build and Release | |
on: | |
workflow_dispatch: | |
inputs: | |
push: | |
tags: | |
- v* | |
#schedule: | |
# m h d m w | |
#- cron: '7 */4 * * *' | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
outputs: | |
gameClientVersion: ${{ steps.gameClient.outputs.version }} | |
patchVersion: ${{ steps.patch.outputs.version }} | |
modVersion: v${{ steps.mod.outputs.version }} | |
commitish: ${{ steps.commitish.outputs.sha }} | |
releaseVersion: ${{ steps.currentrelease.outputs.name }} | |
steps: | |
- name: current release | |
id: currentrelease | |
uses: timcosgrove/fetch-latest-release@bfc69dd9892f644ff740234d8b8945f226f15a47 | |
with: | |
github_token: ${{ github.token }} | |
- name: checkout onelife | |
uses: actions/checkout@v3 | |
with: | |
repository: jasonrohrer/OneLife | |
path: OneLife | |
- name: Get Game Client Version | |
id: gameClient | |
run: echo "version="`grep versionNumber OneLife/gameSource/game.cpp | head -1 | sed -e 's/[^0-9]*//g'` >> "$GITHUB_OUTPUT" | |
- name: checkout patches | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: '0' | |
- name: fetch tags | |
run: git fetch origin "+refs/tags/*:refs/tags/*" | |
- name: get patch version number | |
id: patch | |
run: echo "version="`git for-each-ref --sort=-authordate --sort=-creatordate --format '%(refname:short)' --count=1 refs/tags/v* | sed -e 's/v//'` >> "$GITHUB_OUTPUT" | |
- name: Compose version | |
id: mod | |
run: echo "version=${{ steps.gameClient.outputs.version}}.${{ steps.patch.outputs.version }}" >> "$GITHUB_OUTPUT" | |
- name: Target Commit | |
id: commitish | |
run: echo "sha="`git log -1 --pretty=format:%H v${{ steps.patch.outputs.version }}` >> "$GITHUB_OUTPUT" | |
- name: report | |
run: echo "${{ steps.mod.outputs.version }} ${{ steps.currentrelease.outputs.name }}" | |
windows: | |
needs: test | |
if: needs.test.outputs.modVersion != needs.test.outputs.releaseVersion | |
outputs: | |
filename: ${{ steps.zip.outputs.filename }} | |
runs-on: ubuntu-latest | |
container: | |
image: wondible/ohol-dev-windows | |
steps: | |
- name: Fetch Latest Tagged | |
run: /ohol/fetch_latest_tagged.sh | |
- name: Apply Patches | |
run: /ohol/apply_patches.sh | |
- name: Build Client | |
run: /ohol/build_client_cross.sh | |
- name: Get Game Client Version | |
id: gameClientVersion | |
run: echo "version="`grep versionNumber OneLife/gameSource/game.cpp | head -1 | sed -e 's/[^0-9]*//g'` >> "$GITHUB_OUTPUT" | |
- name: Get Patch Version | |
id: patchVersion | |
run: echo "version="`cat OneLife/patches-master/patchVersionNumber.txt` >> "$GITHUB_OUTPUT" | |
- name: Compose filename | |
id: zip | |
run: echo "filename=WonLife-${{ steps.gameClientVersion.outputs.version}}.${{ steps.patchVersion.outputs.version }}.zip" >> "$GITHUB_OUTPUT" | |
- name: Package | |
run: cd OneLife/gameSource && 7z a ../../${{ steps.zip.outputs.filename }} @../patches-master/package_files.txt | |
- name: Upload versioned file | |
run: s3cmd -P --no-check-certificate --access_key=$ACCESS_KEY --secret_key=$SECRET_KEY --human-readable-sizes --stop-on-error put ${{ steps.zip.outputs.filename }} s3://$BUCKET/ | |
env: | |
BUCKET: ${{ secrets.AWS_S3_BUCKET }} | |
ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
SECRET_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
- name: Upload latest file | |
run: s3cmd -P --no-check-certificate --access_key=$ACCESS_KEY --secret_key=$SECRET_KEY --human-readable-sizes --stop-on-error cp s3://$BUCKET/${{ steps.zip.outputs.filename }} s3://$BUCKET/WonLife-latest.zip | |
env: | |
BUCKET: ${{ secrets.AWS_S3_BUCKET }} | |
ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
SECRET_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
macosx: | |
needs: test | |
if: false | |
#if: needs.test.outputs.modVersion != needs.test.outputs.releaseVersion | |
outputs: | |
filename: ${{ steps.zip.outputs.filename }} | |
runs-on: ubuntu-latest | |
container: | |
image: wondible/ohol-dev-macosx | |
steps: | |
- name: Fetch Latest Tagged | |
run: /ohol/fetch_latest_tagged.sh | |
- name: Apply Patches | |
run: /ohol/apply_patches.sh | |
- name: Build Client | |
run: /ohol/build_client_cross.sh | |
- name: Get Game Client Version | |
id: gameClientVersion | |
run: echo "version="`grep versionNumber OneLife/gameSource/game.cpp | head -1 | sed -e 's/[^0-9]*//g'` >> "$GITHUB_OUTPUT" | |
- name: Get Patch Version | |
id: patchVersion | |
run: echo "version="`cat OneLife/patches-master/patchVersionNumber.txt` >> "$GITHUB_OUTPUT" | |
- name: Compose filename | |
id: zip | |
run: echo "filename=WonLifeMacOSX-${{ steps.gameClientVersion.outputs.version}}.${{ steps.patchVersion.outputs.version }}.zip" >> "$GITHUB_OUTPUT" | |
- name: Package | |
run: cd OneLife/gameSource && 7z a ../../${{ steps.zip.outputs.filename }} @../patches-master/package_files.txt | |
- name: Upload versioned file | |
run: s3cmd -P --access_key=$ACCESS_KEY --secret_key=$SECRET_KEY --human-readable-sizes put ${{ steps.zip.outputs.filename }} s3://$BUCKET/ | |
env: | |
BUCKET: ${{ secrets.AWS_S3_BUCKET }} | |
ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
SECRET_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
- name: Upload latest file | |
run: s3cmd -P --access_key=$ACCESS_KEY --secret_key=$SECRET_KEY --human-readable-sizes cp s3://$BUCKET/${{ steps.zip.outputs.filename }} s3://$BUCKET/WonLifeMacOSX-latest.zip | |
env: | |
BUCKET: ${{ secrets.AWS_S3_BUCKET }} | |
ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
SECRET_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
linux: | |
needs: test | |
if: needs.test.outputs.modVersion != needs.test.outputs.releaseVersion | |
outputs: | |
filename: ${{ steps.zip.outputs.filename }} | |
runs-on: ubuntu-latest | |
container: | |
image: wondible/ohol-dev-linux | |
steps: | |
- name: Fetch Latest Tagged | |
run: /ohol/fetch_latest_tagged.sh | |
- name: Apply Patches | |
run: /ohol/apply_patches.sh | |
- name: Build Client | |
run: /ohol/build_client.sh | |
- name: Get Game Client Version | |
id: gameClientVersion | |
run: echo "version="`grep versionNumber OneLife/gameSource/game.cpp | head -1 | sed -e 's/[^0-9]*//g'` >> "$GITHUB_OUTPUT" | |
- name: Get Patch Version | |
id: patchVersion | |
run: echo "version="`cat OneLife/patches-master/patchVersionNumber.txt` >> "$GITHUB_OUTPUT" | |
- name: Compose filename | |
id: zip | |
run: echo "filename=WonLifeLinux-${{ steps.gameClientVersion.outputs.version}}.${{ steps.patchVersion.outputs.version }}.zip" >> "$GITHUB_OUTPUT" | |
- name: Package | |
run: cd OneLife/gameSource && 7z a ../../${{ steps.zip.outputs.filename }} @../patches-master/package_files.txt | |
- name: Upload versioned file | |
run: s3cmd -P --no-check-certificate --access_key=$ACCESS_KEY --secret_key=$SECRET_KEY --human-readable-sizes --stop-on-error put ${{ steps.zip.outputs.filename }} s3://$BUCKET/ | |
env: | |
BUCKET: ${{ secrets.AWS_S3_BUCKET }} | |
ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
SECRET_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
- name: Upload latest file | |
run: s3cmd -P --no-check-certificate --access_key=$ACCESS_KEY --secret_key=$SECRET_KEY --human-readable-sizes --stop-on-error cp s3://$BUCKET/${{ steps.zip.outputs.filename }} s3://$BUCKET/WonLifeLinux-latest.zip | |
env: | |
BUCKET: ${{ secrets.AWS_S3_BUCKET }} | |
ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
SECRET_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
release: | |
#needs: [test, windows, macosx, linux] | |
needs: [test, windows, linux] | |
runs-on: ubuntu-latest | |
steps: | |
- name: windows download | |
run: curl --fail https://${{ secrets.AWS_S3_BUCKET }}.s3.amazonaws.com/${{ needs.windows.outputs.filename }} -o ${{ needs.windows.outputs.filename }} | |
- name: macosx download | |
if: ${{false}} | |
run: curl --fail https://${{ secrets.AWS_S3_BUCKET }}.s3.amazonaws.com/${{ needs.macosx.outputs.filename }} -o ${{ needs.macosx.outputs.filename }} | |
- name: linux download | |
run: curl --fail https://${{ secrets.AWS_S3_BUCKET }}.s3.amazonaws.com/${{ needs.linux.outputs.filename }} -o ${{ needs.linux.outputs.filename }} | |
- name: file report | |
run: ls -R | |
- name: Create Release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token | |
with: | |
commitish: ${{ needs.test.outputs.commitish }} | |
tag_name: rel_${{ needs.test.outputs.modVersion}} | |
release_name: ${{ needs.test.outputs.modVersion}} | |
- name: Upload Windows | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ needs.windows.outputs.filename }} | |
asset_name: ${{ needs.windows.outputs.filename }} | |
asset_content_type: application/zip | |
- name: Upload MacOSX | |
if: ${{false}} | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ needs.macosx.outputs.filename }} | |
asset_name: ${{ needs.macosx.outputs.filename }} | |
asset_content_type: application/zip | |
- name: Upload Linux | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ needs.linux.outputs.filename }} | |
asset_name: ${{ needs.linux.outputs.filename }} | |
asset_content_type: application/zip |