Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 89 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,23 +1,64 @@
name: Build and upload release assets
name: Build and publish draft release assets

run-name: Release ${{ inputs.tag }} • publish=${{ inputs.publish_release }}

on:
release:
types: [published]
workflow_dispatch:
inputs:
tag:
description: Existing draft release tag (for example, v0.9.2)
required: true
type: string
publish_release:
description: Publish the draft release after all assets are uploaded
required: true
default: true
type: boolean

permissions:
contents: write

concurrency:
group: release-${{ github.event.release.tag_name }}
group: release-${{ github.event.inputs.tag }}
cancel-in-progress: false

env:
APP_NAME: cs2-simulator
TAG: ${{ github.event.release.tag_name }}
TAG: ${{ github.event.inputs.tag }}

jobs:
prepare-release:
runs-on: ubuntu-latest

outputs:
release_id: ${{ steps.resolve.outputs.release_id }}

steps:
- name: Resolve draft release
id: resolve
env:
GH_TOKEN: ${{ github.token }}
run: |
release_json="$(gh api "repos/${GITHUB_REPOSITORY}/releases?per_page=100" --jq ".[] | select(.tag_name == \"${TAG}\")")"
release_id="$(echo "$release_json" | jq -r '.id')"
is_draft="$(echo "$release_json" | jq -r '.draft')"

if [ -z "$release_id" ] || [ "$release_id" = "null" ]; then
echo "Release for tag ${TAG} was not found."
exit 1
fi

if [ "$is_draft" != "true" ]; then
echo "Release ${TAG} exists, but it is not a draft."
exit 1
fi

echo "release_id=$release_id" >> "$GITHUB_OUTPUT"
echo "Validated draft release ${TAG} (id=${release_id})."

build-android:
runs-on: ubuntu-latest
needs: prepare-release

steps:
- name: Checkout
Expand Down Expand Up @@ -63,10 +104,13 @@ jobs:
- name: Upload Android asset to release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.TAG }}
draft: true
files: dist/${{ env.APP_NAME }}-${{ env.TAG }}-android.apk

build-linux:
runs-on: ubuntu-latest
needs: prepare-release

steps:
- name: Checkout
Expand Down Expand Up @@ -110,10 +154,13 @@ jobs:
- name: Upload Linux asset to release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.TAG }}
draft: true
files: dist/${{ env.APP_NAME }}-${{ env.TAG }}-linux-x64.zip

build-web:
runs-on: ubuntu-latest
needs: prepare-release

steps:
- name: Checkout
Expand Down Expand Up @@ -145,10 +192,13 @@ jobs:
- name: Upload Web asset to release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.TAG }}
draft: true
files: dist/${{ env.APP_NAME }}-${{ env.TAG }}-web.zip

build-windows:
runs-on: windows-latest
needs: prepare-release

steps:
- name: Checkout
Expand Down Expand Up @@ -197,10 +247,13 @@ jobs:
- name: Upload Windows asset to release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.TAG }}
draft: true
files: dist/${{ env.APP_NAME }}-${{ env.TAG }}-windows-x64.zip

build-macos:
runs-on: macos-latest
needs: prepare-release

steps:
- name: Checkout
Expand Down Expand Up @@ -245,10 +298,13 @@ jobs:
- name: Upload macOS asset to release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.TAG }}
draft: true
files: dist/${{ env.APP_NAME }}-${{ env.TAG }}-macos.zip

build-ios-unsigned:
runs-on: macos-latest
needs: prepare-release

steps:
- name: Checkout
Expand Down Expand Up @@ -285,4 +341,32 @@ jobs:
- name: Upload iOS asset to release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.TAG }}
draft: true
files: dist/${{ env.APP_NAME }}-${{ env.TAG }}-ios-unsigned.ipa

publish-release:
runs-on: ubuntu-latest
needs:
- prepare-release
- build-android
- build-linux
- build-web
- build-windows
- build-macos
- build-ios-unsigned
if: ${{ inputs.publish_release }}

steps:
- name: Publish draft release
env:
GH_TOKEN: ${{ github.token }}
RELEASE_ID: ${{ needs.prepare-release.outputs.release_id }}
run: |
gh api \
--method PATCH \
-H "Accept: application/vnd.github+json" \
"repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}" \
-F draft=false

echo "Published release ${TAG}."
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: cs2_simulator
description: "Counter-Strike 2 case opening and Trade-Up contract creation simulator written in Flutter + Dart."
publish_to: 'none'

version: 0.9.1
version: 0.9.2

environment:
sdk: ^3.11.3
Expand Down
Loading