diff --git a/.github/scripts/check_team_membership.sh b/.github/scripts/check_team_membership.sh index cd88cde2..1f76c9ed 100755 --- a/.github/scripts/check_team_membership.sh +++ b/.github/scripts/check_team_membership.sh @@ -4,18 +4,27 @@ set -x USER=$1 -response=$(gh api \ - -H "Accept: application/vnd.github+json" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - "/orgs/immutable/teams/passport/memberships/${USER}") - -echo "$response" - -if echo "$response" | grep -q '"state":"active"'; then - IS_MEMBER=true -else - IS_MEMBER=false -fi +TEAMS=( + "ped-stream-sdk-integrations-list" + "ped-stream-blockchain-services-list" +) + +IS_MEMBER=false + +for TEAM in "${TEAMS[@]}"; do + response=$(gh api \ + -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + "/orgs/immutable/teams/${TEAM}/memberships/${USER}") + + echo "$response" + + if echo "$response" | grep -q '"state":"active"'; then + IS_MEMBER=true + break + fi +done + echo "$IS_MEMBER" # Set the environment variable for the GitHub workflow diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d6169bf2..cb120bdb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,8 +22,13 @@ jobs: - name: Get the latest tag run: | git fetch --tags - LATEST_TAG="$(git describe --tags "$(git rev-list --tags --max-count=1)")" + LATEST_TAG="$(git tag --sort=-creatordate | head -n 1)" echo "LATEST_TAG=${LATEST_TAG}" >> "$GITHUB_ENV" + if [[ "$LATEST_TAG" == audience/* ]]; then + echo "IS_AUDIENCE=true" >> "$GITHUB_ENV" + else + echo "IS_AUDIENCE=false" >> "$GITHUB_ENV" + fi - name: Pull LFS run: git lfs pull @@ -62,6 +67,7 @@ jobs: } - name: Extract TS SDK version from index.html + if: env.IS_AUDIENCE != 'true' id: extract_ts_sdk_version run: | version=$(grep -oP '"x-sdk-version":"ts-immutable-sdk-\K[0-9]+\.[0-9]+\.[0-9]+' ./src/Packages/Passport/Runtime/Resources/index.html | head -n 1) @@ -73,7 +79,15 @@ jobs: version=$(echo "$version" | tr -d '\r\n') - echo "VERSION=${version}" >> "$GITHUB_ENV" + echo "TS_SDK_VERSION=${version}" >> "$GITHUB_ENV" + + - name: Build release body suffix + run: | + if [[ "$IS_AUDIENCE" != "true" && -n "$TS_SDK_VERSION" ]]; then + echo "RELEASE_BODY_SUFFIX=Game bridge built from Immutable Typescript SDK version $TS_SDK_VERSION" >> "$GITHUB_ENV" + else + echo "RELEASE_BODY_SUFFIX=" >> "$GITHUB_ENV" + fi - name: Create Release id: create_release @@ -86,6 +100,6 @@ jobs: body: | ${{steps.github_release.outputs.changelog}} - Game bridge built from Immutable Typescript SDK version ${{ env.VERSION }} + ${{ env.RELEASE_BODY_SUFFIX }} draft: false - prerelease: false \ No newline at end of file + prerelease: false diff --git a/.github/workflows/tag.yml b/.github/workflows/tag.yml index 7122a598..95a3ace0 100644 --- a/.github/workflows/tag.yml +++ b/.github/workflows/tag.yml @@ -7,7 +7,7 @@ on: jobs: create-tag: - if: github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'release') + if: github.event.pull_request.merged == true && (contains(github.event.pull_request.labels.*.name, 'release') || contains(github.event.pull_request.labels.*.name, 'audience-release')) runs-on: ubuntu-latest steps: @@ -22,13 +22,20 @@ jobs: - name: Install jq run: sudo apt-get install -y jq - - name: Extract version from package.json + - name: Extract version and set tag id: extract_version run: | - VERSION=$(jq -r .version ./src/Packages/Passport/package.json) - echo "VERSION=$VERSION" >> "$GITHUB_ENV" + IS_AUDIENCE="${{ contains(github.event.pull_request.labels.*.name, 'audience-release') }}" + if [[ "$IS_AUDIENCE" == "true" ]]; then + VERSION=$(jq -r .version ./src/Packages/Audience/package.json) + echo "TAG=audience/v$VERSION" >> "$GITHUB_ENV" + else + VERSION=$(jq -r .version ./src/Packages/Passport/package.json) + echo "TAG=v$VERSION" >> "$GITHUB_ENV" + fi - name: Check TS SDK version exists in index.html + if: contains(github.event.pull_request.labels.*.name, 'release') && !contains(github.event.pull_request.labels.*.name, 'audience-release') id: check_ts_sdk_version run: | version=$(grep -oP '"x-sdk-version":"ts-immutable-sdk-\K[0-9]+\.[0-9]+\.[0-9]+' ./src/Packages/Passport/Runtime/Resources/index.html | head -n 1) @@ -41,6 +48,6 @@ jobs: - name: Create Tag uses: negz/create-tag@v1 with: - version: "v${{ env.VERSION }}" - message: "Version ${{ env.VERSION }}" + version: "${{ env.TAG }}" + message: "Version ${{ env.TAG }}" token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/update-version.yml b/.github/workflows/update-version.yml index 81779891..e3ce819c 100644 --- a/.github/workflows/update-version.yml +++ b/.github/workflows/update-version.yml @@ -3,22 +3,30 @@ name: "Update SDK version" on: workflow_dispatch: inputs: + package: + type: choice + description: Package to release + options: + - passport + - audience + required: true + default: passport upgrade_type: type: choice description: Upgrade Type options: - patch - minor - # - major required: true default: patch mark_as_alpha: type: boolean - description: Mark as alpha release + description: Mark as alpha release (Passport only) required: false default: false env: + PACKAGE: ${{ github.event.inputs.package || 'passport' }} UPGRADE_TYPE: ${{ github.event.inputs.upgrade_type || 'patch' }} MARK_AS_ALPHA: ${{ github.event.inputs.mark_as_alpha || false }} @@ -53,26 +61,43 @@ jobs: - name: Update Version in package.json id: replace_version run: | - PASSPORT_FILE=./src/Packages/Passport/package.json - MARKETPLACE_FILE=./src/Packages/Marketplace/package.json - - CURRENT_VERSION=$(jq -r '.version' $PASSPORT_FILE) + if [[ "$PACKAGE" == "audience" ]]; then + FILE=./src/Packages/Audience/package.json + else + FILE=./src/Packages/Passport/package.json + fi + + CURRENT_VERSION=$(jq -r '.version' $FILE) echo "CURRENT_VERSION: $CURRENT_VERSION" IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION" - HAS_ALPHA=$(echo "$CURRENT_VERSION" | grep -q "\.alpha" && echo "true" || echo "false") - echo "HAS_ALPHA: $HAS_ALPHA" NEW_VERSION="" - if [[ "$HAS_ALPHA" == "true" ]]; then - # If version is alpha and upgrade type is patch, don't increment patch - if [ "$UPGRADE_TYPE" == "patch" ]; then - NEW_VERSION="$MAJOR.$MINOR.$PATCH" - elif [ "$UPGRADE_TYPE" == "minor" ]; then - MINOR=$((MINOR + 1)) - PATCH=0 + if [[ "$PACKAGE" == "passport" ]]; then + HAS_ALPHA=$(echo "$CURRENT_VERSION" | grep -q "\.alpha" && echo "true" || echo "false") + echo "HAS_ALPHA: $HAS_ALPHA" + + if [[ "$HAS_ALPHA" == "true" ]]; then + if [ "$UPGRADE_TYPE" == "patch" ]; then + NEW_VERSION="$MAJOR.$MINOR.$PATCH" + elif [ "$UPGRADE_TYPE" == "minor" ]; then + MINOR=$((MINOR + 1)) + PATCH=0 + NEW_VERSION="$MAJOR.$MINOR.$PATCH" + fi + else + if [ "$UPGRADE_TYPE" == "patch" ]; then + PATCH=$((PATCH + 1)) + elif [ "$UPGRADE_TYPE" == "minor" ]; then + MINOR=$((MINOR + 1)) + PATCH=0 + fi NEW_VERSION="$MAJOR.$MINOR.$PATCH" fi + + if [[ "$MARK_AS_ALPHA" == "true" && "$HAS_ALPHA" == "false" ]]; then + NEW_VERSION="$NEW_VERSION.alpha" + fi else if [ "$UPGRADE_TYPE" == "patch" ]; then PATCH=$((PATCH + 1)) @@ -83,20 +108,12 @@ jobs: NEW_VERSION="$MAJOR.$MINOR.$PATCH" fi - if [[ "$MARK_AS_ALPHA" == "true" && "$HAS_ALPHA" == "false" ]]; then - NEW_VERSION="$NEW_VERSION.alpha" - fi - - # Update Passport package.json - jq --arg version "$NEW_VERSION" '.version = $version' $PASSPORT_FILE > tmp.$$.json && mv tmp.$$.json $PASSPORT_FILE - echo "Updated version in Passport package.json from $CURRENT_VERSION to $NEW_VERSION" - - # Update Marketplace package.json - jq --arg version "$NEW_VERSION" '.version = $version' $MARKETPLACE_FILE > tmp.$$.json && mv tmp.$$.json $MARKETPLACE_FILE - echo "Updated version in Marketplace package.json from $CURRENT_VERSION to $NEW_VERSION" + jq --arg version "$NEW_VERSION" '.version = $version' $FILE > tmp.$$.json && mv tmp.$$.json $FILE + echo "Updated version in $FILE from $CURRENT_VERSION to $NEW_VERSION" echo "version=$NEW_VERSION" >> "$GITHUB_OUTPUT" - name: Update SDK Version in SdkVersionInfoHelpers.cs + if: env.PACKAGE == 'passport' id: replace_engine_sdk_version run: | FILE=./src/Packages/Passport/Runtime/Scripts/Private/Helpers/SdkVersionInfoHelpers.cs @@ -105,31 +122,37 @@ jobs: echo "Updated SDK version in SdkVersionInfoHelpers.cs to $NEW_VERSION" - name: Ensure Samples~/SamplesScenesScripts directory exists and clear contents + if: env.PACKAGE == 'passport' run: | mkdir -p ./src/Packages/Passport/Samples~/SamplesScenesScripts rm -rf ./src/Packages/Passport/Samples~/SamplesScenesScripts/* - mkdir -p ./src/Packages/Marketplace/Samples~/SamplesScenesScripts - rm -rf ./src/Packages/Marketplace/Samples~/SamplesScenesScripts/* - - name: Install rsync + if: env.PACKAGE == 'passport' run: sudo apt-get install -y rsync - name: Copy sample scenes and scripts to Passport package Samples~ + if: env.PACKAGE == 'passport' id: copy_sample_scenes_and_scripts run: | rsync -av --exclude='*.meta' ./examples/passport/Assets/Scenes/Passport ./src/Packages/Passport/Samples~/SamplesScenesScripts/Scenes/ rsync -av --exclude='*.meta' --exclude='features.json' --exclude='_prompts~/' --exclude='_tutorials~/' ./examples/passport/Assets/Scripts/Passport ./src/Packages/Passport/Samples~/SamplesScenesScripts/Scripts/ - rsync -av --exclude='*.meta' ./examples/passport/Assets/Scenes/Marketplace ./src/Packages/Marketplace/Samples~/SamplesScenesScripts/Scenes/ - rsync -av --exclude='*.meta' ./examples/passport/Assets/Scripts/Marketplace ./src/Packages/Marketplace/Samples~/SamplesScenesScripts/Scripts/ + - name: Set release label + id: set_label + run: | + if [[ "$PACKAGE" == "audience" ]]; then + echo "label=audience-release" >> "$GITHUB_OUTPUT" + else + echo "label=release" >> "$GITHUB_OUTPUT" + fi - uses: gr2m/create-or-update-pull-request-action@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - title: "chore: update version" - body: "Update version in package.json" - branch: "chore/update-version-${{ steps.replace_version.outputs.version }}" - commit-message: "chore: update version" - labels: release + title: "chore: bump ${{ github.event.inputs.package }} to ${{ steps.replace_version.outputs.version }}" + body: "Bump ${{ github.event.inputs.package }} package version to ${{ steps.replace_version.outputs.version }}." + branch: "chore/bump-${{ github.event.inputs.package }}-${{ steps.replace_version.outputs.version }}" + commit-message: "chore: bump ${{ github.event.inputs.package }} to ${{ steps.replace_version.outputs.version }}" + labels: ${{ steps.set_label.outputs.label }} diff --git a/src/Packages/Audience/package.json b/src/Packages/Audience/package.json index 59e752bd..07b63a69 100644 --- a/src/Packages/Audience/package.json +++ b/src/Packages/Audience/package.json @@ -1,10 +1,18 @@ { "name": "com.immutable.audience", - "version": "0.1.0", + "version": "0.1.1", "description": "Immutable Audience SDK for Unity.", "displayName": "Immutable Audience", - "author": {"name": "Immutable", "url": "https://immutable.com"}, - "keywords": ["unity", "immutable", "audience", "analytics"], + "author": { + "name": "Immutable", + "url": "https://immutable.com" + }, + "keywords": [ + "unity", + "immutable", + "audience", + "analytics" + ], "unity": "2021.3", "documentationUrl": "https://docs.immutable.com/docs/products/audience/unity-sdk", "licensesUrl": "https://github.com/immutable/unity-immutable-sdk/blob/main/LICENSE.md"