Compare commits
	
		
			7 Commits
		
	
	
		
			main
			...
			c4adac65fb
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| c4adac65fb | |||
| e15689ef22 | |||
| 5313016312 | |||
| 2d29a61dfa | |||
| 7c8b44559d | |||
| 342a8b9e4d | |||
| 15c674fadf | 
| @@ -5,7 +5,7 @@ on: | ||||
|     paths: | ||||
|       - frontend/** | ||||
|  | ||||
| name: Build and release apps to beta track | ||||
| name: Build and release release apps to production track | ||||
|  | ||||
| jobs: | ||||
|   get-version: | ||||
| @@ -13,7 +13,6 @@ jobs: | ||||
|     runs-on: macos | ||||
|     steps: | ||||
|       - uses: https://gitea.com/actions/checkout@v4 | ||||
|  | ||||
|       - name: Fetch tags from main branch | ||||
|         # since this workflow is triggered by a pull request, we want to match the latest tag of the main branch | ||||
|         id: version | ||||
| @@ -21,34 +20,27 @@ jobs: | ||||
|           git fetch origin main --tags | ||||
|           LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1)) | ||||
|           # remove the 'v' prefix from the tag name | ||||
|           echo "BUILD_NAME=${LATEST_TAG//v}" >> $GITHUB_OUTPUT | ||||
|           echo "BUILD_NAME=${LATEST_TAG//v}" >> $GITHUB_ENV | ||||
|  | ||||
|       - name: Output the version that is being used | ||||
|         run: | | ||||
|           echo "Building for version ${{ steps.version.outputs.BUILD_NAME }}" | ||||
|  | ||||
|     outputs: | ||||
|       build_name: ${{ steps.version.outputs.BUILD_NAME }} | ||||
|  | ||||
|   build-android: | ||||
|     name: Build and upload android app | ||||
|     uses: ./.gitea/workflows/workflow_build-app-android.yaml | ||||
|     with: | ||||
|       build_type: beta | ||||
|       build_name: ${{ needs.get-version.outputs.build_name }} | ||||
|     secrets: | ||||
|       ANDROID_SECRET_PROPERTIES_BASE64: ${{ secrets.ANDROID_SECRET_PROPERTIES_BASE64 }} | ||||
|       ANDROID_GOOGLE_PLAY_JSON_BASE64: ${{ secrets.ANDROID_GOOGLE_PLAY_JSON_BASE64 }} | ||||
|       ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} | ||||
|       ANDROID_GOOGLE_MAPS_API_KEY: ${{ secrets.ANDROID_GOOGLE_MAPS_API_KEY }} | ||||
|     needs: get-version | ||||
|   # build-android: | ||||
|   #   name: Build and upload android app | ||||
|   #   uses: ./.gitea/workflows/workflow_build-app-android.yaml | ||||
|   #   with: | ||||
|   #     build_type: release # for current testing | ||||
|   #     build_name: ${{ env.BUILD_NAME }} | ||||
|   #   secrets: | ||||
|   #     ANDROID_SECRET_PROPERTIES_BASE64: ${{ secrets.ANDROID_SECRET_PROPERTIES_BASE64 }} | ||||
|   #     ANDROID_GOOGLE_PLAY_JSON_BASE64: ${{ secrets.ANDROID_GOOGLE_PLAY_JSON_BASE64 }} | ||||
|   #     ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} | ||||
|   #     ANDROID_GOOGLE_MAPS_API_KEY: ${{ secrets.ANDROID_GOOGLE_MAPS_API_KEY }} | ||||
|   #   needs: get-version | ||||
|  | ||||
|   build-ios: | ||||
|     name: Build and upload ios app | ||||
|     uses: ./.gitea/workflows/workflow_build-app-ios.yaml | ||||
|     with: | ||||
|       build_type: beta | ||||
|       build_name: ${{ needs.get-version.outputs.build_name }} | ||||
|       build_type: release # for current testing | ||||
|       build_name: ${{ env.BUILD_NAME }} | ||||
|     secrets: | ||||
|       IOS_ASC_KEY_ID: ${{ secrets.IOS_ASC_KEY_ID }} | ||||
|       IOS_ASC_ISSUER_ID: ${{ secrets.IOS_ASC_ISSUER_ID }} | ||||
| @@ -56,4 +48,6 @@ jobs: | ||||
|       IOS_MATCH_REPO_SSH_KEY_BASE64: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }} | ||||
|       IOS_MATCH_PASSWORD: ${{ secrets.IOS_MATCH_PASSWORD }} | ||||
|       IOS_GOOGLE_MAPS_API_KEY: ${{ secrets.IOS_GOOGLE_MAPS_API_KEY }} | ||||
|     needs: build-android # technically not needed, but this prevents the builds from running in parallel | ||||
|     needs: get-version | ||||
|  | ||||
|     # needs: build-android # technically not needed, but this prevents the builds from running in parallel | ||||
|   | ||||
| @@ -3,7 +3,7 @@ on: | ||||
|     tags: | ||||
|       - v* | ||||
|  | ||||
| name: Build and release apps to production track | ||||
| name: Build and release release apps to production track | ||||
|  | ||||
| jobs: | ||||
|   get-version: | ||||
| @@ -11,28 +11,21 @@ jobs: | ||||
|     runs-on: macos | ||||
|     steps: | ||||
|       - uses: https://gitea.com/actions/checkout@v4 | ||||
|  | ||||
|       - name: Get version from git tag | ||||
|         id: version | ||||
|         env:  | ||||
|           REF_NAME: ${{ gitea.ref_name }} | ||||
|         # remove the 'v' prefix from the tag name | ||||
|         run: | | ||||
|           echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_OUTPUT | ||||
|           echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV | ||||
|  | ||||
|       - name: Output the version that is being used | ||||
|         run: | | ||||
|           echo "Building for version ${{ steps.version.outputs.BUILD_NAME }}" | ||||
|  | ||||
|     outputs: | ||||
|       build_name: ${{ steps.version.outputs.BUILD_NAME }} | ||||
|  | ||||
|   build-android: | ||||
|     name: Build and upload android app | ||||
|     uses: ./.gitea/workflows/workflow_build-app-android.yaml | ||||
|     with: | ||||
|       build_type: release | ||||
|       build_name: ${{ needs.get-version.outputs.build_name }} | ||||
|       build_name: ${{ env.BUILD_NAME }} | ||||
|     secrets: | ||||
|       ANDROID_SECRET_PROPERTIES_BASE64: ${{ secrets.ANDROID_SECRET_PROPERTIES_BASE64 }} | ||||
|       ANDROID_GOOGLE_PLAY_JSON_BASE64: ${{ secrets.ANDROID_GOOGLE_PLAY_JSON_BASE64 }} | ||||
| @@ -45,7 +38,7 @@ jobs: | ||||
|     uses: ./.gitea/workflows/workflow_build-app-ios.yaml | ||||
|     with: | ||||
|       build_type: release | ||||
|       build_name: ${{ needs.get-version.outputs.build_name }} | ||||
|       build_name: ${{ env.BUILD_NAME }} | ||||
|     secrets: | ||||
|       IOS_ASC_KEY_ID: ${{ secrets.IOS_ASC_KEY_ID }} | ||||
|       IOS_ASC_ISSUER_ID: ${{ secrets.IOS_ASC_ISSUER_ID }} | ||||
|   | ||||
| @@ -27,7 +27,7 @@ defaults: | ||||
|  | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: macos-14 | ||||
|     runs-on: macos | ||||
|     env: | ||||
|       # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps | ||||
|       BUNDLE_GEMFILE: ${{ gitea.workspace }}/frontend/android/Gemfile | ||||
|   | ||||
| @@ -31,7 +31,7 @@ defaults: | ||||
|  | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: macos-14 | ||||
|     runs-on: macos | ||||
|     env: | ||||
|       # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps | ||||
|       BUNDLE_GEMFILE: ${{ gitea.workspace }}/frontend/ios/Gemfile | ||||
| @@ -54,7 +54,6 @@ jobs: | ||||
|           bundler-cache: true # runs 'bundle install' and caches installed gems automatically | ||||
|  | ||||
|       - uses: GuillaumeFalourd/setup-rsync@v1.2 | ||||
|         # rsync is required by the google maps ios tools | ||||
|  | ||||
|       - name: Install dependencies and clean up | ||||
|         run: | | ||||
| @@ -73,11 +72,6 @@ jobs: | ||||
|         env: | ||||
|           MATCH_REPO_SSH_KEY: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }} | ||||
|  | ||||
|       - name: Replace API Key from secret | ||||
|         # on a macOS runner, sed requires a replacement suffix after the -i flag | ||||
|         run: | | ||||
|           sed -i '' -e "s/IOS_GOOGLE_MAPS_API_KEY/${{ secrets.IOS_GOOGLE_MAPS_API_KEY }}/g" Runner/AppDelegate.swift | ||||
|  | ||||
|       - name: Run fastlane lane | ||||
|         run: bundle exec fastlane deploy_${{ inputs.build_type }} | ||||
|         env: | ||||
|   | ||||
							
								
								
									
										59
									
								
								frontend/.github/workflows/build_app_android.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,59 @@ | ||||
| on: | ||||
|   push: | ||||
|     tags: | ||||
|       - 'v*' | ||||
|  | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: macos-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Set up ruby env | ||||
|         uses: ruby/setup-ruby@v1 | ||||
|         with: | ||||
|           ruby-version: 3.2.1 | ||||
|           bundler-cache: true | ||||
|  | ||||
|       - name: Setup java for android build | ||||
|         uses: actions/setup-java@v4 | ||||
|         with: | ||||
|           java-version: '17' | ||||
|           distribution: 'zulu' | ||||
|  | ||||
|       - name: Setup android SDK | ||||
|         uses: android-actions/setup-android@v3 | ||||
|        | ||||
|       - name: Install Flutter | ||||
|         uses: subosito/flutter-action@v2 | ||||
|         with: | ||||
|           channel: stable | ||||
|           flutter-version: 3.22.0 | ||||
|           cache: true | ||||
|  | ||||
|       - name: Infer version number from git tag | ||||
|         id: version | ||||
|         env:  | ||||
|           REF_NAME: ${{ github.ref_name }} | ||||
|         run: | ||||
|           # remove the 'v' prefix from the tag name | ||||
|           echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV | ||||
|  | ||||
|       - name: Put selected secrets into files | ||||
|         run: | | ||||
|           echo "${{ secrets.ANDROID_SECRET_PROPERTIES_BASE64 }}" | base64 -d > secrets.properties | ||||
|           echo "${{ secrets.ANDROID_GOOGLE_PLAY_JSON_BASE64 }}" | base64 -d > google-key.json | ||||
|           echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 -d > release.keystore | ||||
|         working-directory: android | ||||
|  | ||||
|       - name: Install fastlane | ||||
|         run: bundle install | ||||
|         working-directory: android | ||||
|  | ||||
|       - name: Run fastlane lane | ||||
|         run: bundle exec fastlane deploy_release | ||||
|         working-directory: android | ||||
|         env: | ||||
|           BUILD_NUMBER: ${{ github.run_number }} | ||||
|           # BUILD_NAME is implicitly available | ||||
|           GOOGLE_MAPS_API_KEY: ${{ secrets.GOOGLE_MAPS_API_KEY }} | ||||
							
								
								
									
										64
									
								
								frontend/.github/workflows/build_app_ios.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,64 @@ | ||||
| on: | ||||
|   push: | ||||
|     tags: | ||||
|       - 'v*' | ||||
|  | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: macos-latest | ||||
|     env: | ||||
|       # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps | ||||
|       BUNDLE_GEMFILE: ${{ github.workspace }}/ios/Gemfile | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Set up ruby env | ||||
|         uses: ruby/setup-ruby@v1 | ||||
|         with: | ||||
|           ruby-version: 3.3 | ||||
|           bundler-cache: true # runs 'bundle install' and caches installed gems automatically | ||||
|  | ||||
|       - name: Install Flutter | ||||
|         uses: subosito/flutter-action@v2 | ||||
|         with: | ||||
|           channel: stable | ||||
|           flutter-version: 3.22.0 | ||||
|           cache: true | ||||
|  | ||||
|       - name: Infer version number from git tag | ||||
|         id: version | ||||
|         env:  | ||||
|           REF_NAME: ${{ github.ref_name }} | ||||
|         run: | ||||
|           # remove the 'v' prefix from the tag name | ||||
|           echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV | ||||
|  | ||||
|       - name: Setup SSH key for match git repo | ||||
|         # and mark the host as known | ||||
|         run: | | ||||
|           echo $MATCH_REPO_SSH_KEY | base64 --decode > ~/.ssh/id_rsa | ||||
|           chmod 600 ~/.ssh/id_rsa | ||||
|           ssh-keyscan -p 2222 git.kluster.moll.re > ~/.ssh/known_hosts | ||||
|         env: | ||||
|           MATCH_REPO_SSH_KEY: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }} | ||||
|  | ||||
|       - name: Install dependencies and clean up | ||||
|         run: | | ||||
|           flutter pub get | ||||
|           bundle exec pod install | ||||
|           flutter clean | ||||
|           bundle exec pod cache clean --all | ||||
|         working-directory: ios | ||||
|  | ||||
|       - name: Run fastlane lane | ||||
|         run: bundle exec fastlane deploy_release --verbose | ||||
|         working-directory: ios | ||||
|         env: | ||||
|           BUILD_NUMBER: ${{ github.run_number }} | ||||
|           # BUILD_NAME is implicitly available | ||||
|           GOOGLE_MAPS_API_KEY: ${{ secrets.GOOGLE_MAPS_API_KEY }} | ||||
|           IOS_ASC_KEY_ID: ${{ secrets.IOS_ASC_KEY_ID }} | ||||
|           IOS_ASC_ISSUER_ID: ${{ secrets.IOS_ASC_ISSUER_ID }} | ||||
|           IOS_ASC_KEY: ${{ secrets.IOS_ASC_KEY }} | ||||
|           MATCH_PASSWORD: ${{ secrets.IOS_MATCH_PASSWORD }} | ||||
|           IOS_GOOGLE_MAPS_API_KEY: ${{ secrets.IOS_GOOGLE_MAPS_API_KEY }} | ||||
| @@ -17,7 +17,7 @@ platform :android do | ||||
|       ) | ||||
|      | ||||
|     upload_to_play_store( | ||||
|       track: 'beta', | ||||
|       track: 'alpha', | ||||
|       # upload aab files intstead | ||||
|       skip_upload_apk: true, | ||||
|       skip_upload_changelogs: true, | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| AnyWay is an application that helps you plan truly unique city trips. When planning a new trip, you can specify your preferences and constraints and anyway generates a personalized itinerary just for you.  | ||||
| AnyWay is an application that helps you plan truly unique city trips. When planning a new trip, you can specify <your> preferences and constraints and anyway generates a personalized itinerary just for you.  | ||||
|  | ||||
| Anyway follows these core principles: | ||||
| - Personalization: Trips should be match your interests - not just the most popular destinations. | ||||
| - Efficiency: Don't just walk in circles! Anyway creates the most efficient route for you. | ||||
| - Flexibility: Vacations are the time to be spontaneous. Anyway lets you update your plans on the go. | ||||
| - Discoverability: Tourism means exploration. Anyway encourages you to take detours and make spontaneous decisions. | ||||
| - **Personalization**: Trips should be match your interests - not just the most popular destinations. | ||||
| - **Efficiency**: Don't just walk in circles! Anyway creates the most efficient route for you. | ||||
| - **Flexibility**: Vacations are the time to be spontaneous. Anyway lets you update your plans on the go. | ||||
| - **Discoverability**: Tourism means exploration. Anyway encourages you to take detours and make spontaneous decisions. | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| app_identifier("info.anydev.anyway") # The bundle identifier of your app | ||||
| app_identifier("info.anydev.testing") # The bundle identifier of your app | ||||
| apple_id("me@moll.re") # Your Apple Developer Portal username | ||||
|  | ||||
| itc_team_id("127439860") # App Store Connect Team ID | ||||
|   | ||||
| @@ -28,6 +28,17 @@ platform :ios do | ||||
|       readonly: true, | ||||
|     ) | ||||
|  | ||||
|     # replace secrets by real values, the stupid way | ||||
|     sh( | ||||
|       "sed", | ||||
|       "-i",  | ||||
|       '\'\'',  | ||||
|       "s/IOS_GOOGLE_MAPS_API_KEY/#{ENV["IOS_GOOGLE_MAPS_API_KEY"]}/g",  | ||||
|       "../Runner/AppDelegate.swift" | ||||
|     ) | ||||
|      | ||||
|  | ||||
|  | ||||
|     sh( | ||||
|       "flutter", | ||||
|       "build", | ||||
| @@ -63,6 +74,15 @@ platform :ios do | ||||
|       readonly: true, | ||||
|     ) | ||||
|  | ||||
|     # replace secrets by real values, the stupid way | ||||
|     sh( | ||||
|       "sed", | ||||
|       "-i", | ||||
|       '\'\'',  | ||||
|       "s/IOS_GOOGLE_MAPS_API_KEY/#{ENV["IOS_GOOGLE_MAPS_API_KEY"]}/g", | ||||
|       "../Runner/AppDelegate.swift" | ||||
|     ) | ||||
|  | ||||
|     sh( | ||||
|       "flutter", | ||||
|       "build", | ||||
| @@ -81,9 +101,9 @@ platform :ios do | ||||
|     upload_to_app_store( | ||||
|       overwrite_screenshots: true, | ||||
|       metadata_path: "fastlane/metadata", | ||||
|       screenshots_path: "fastlane/screenshots", | ||||
|       screenshot_path: "fastlane/screenshots", | ||||
|       precheck_include_in_app_purchases: false, | ||||
|       force: true, # Skip HTMl report verification | ||||
|  | ||||
|       submit_for_review: true, | ||||
|       automatic_release: true, | ||||
|       # automatically release the app after review | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| 2025 anydev | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| AnyWay is an application that helps you plan truly unique city trips. When planning a new trip, you can specify your preferences and constraints and anyway generates a personalized itinerary just for you.  | ||||
| AnyWay is an application that helps you plan truly unique city trips. When planning a new trip, you can specify <our> preferences and constraints and anyway generates a personalized itinerary just for you.  | ||||
|  | ||||
| Anyway follows these core principles: | ||||
| - Personalization: Trips should be match your interests - not just the most popular destinations. | ||||
| - Efficiency: Don't just walk in circles! Anyway creates the most efficient route for you. | ||||
| - Flexibility: Vacations are the time to be spontaneous. Anyway lets you update your plans on the go. | ||||
| - Discoverability: Tourism means exploration. Anyway encourages you to take detours and make spontaneous decisions. | ||||
| - **Personalization**: Trips should be match your interests - not just the most popular destinations. | ||||
| - **Efficiency**: Don't just walk in circles! Anyway creates the most efficient route for you. | ||||
| - **Flexibility**: Vacations are the time to be spontaneous. Anyway lets you update your plans on the go. | ||||
| - **Discoverability**: Tourism means exploration. Anyway encourages you to take detours and make spontaneous decisions. | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								frontend/ios/fastlane/metadata/en-US/iOS Phones  6.9-01.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.6 MiB | 
| Before Width: | Height: | Size: 2.1 MiB After Width: | Height: | Size: 2.1 MiB | 
| Before Width: | Height: | Size: 626 KiB After Width: | Height: | Size: 626 KiB | 
| Before Width: | Height: | Size: 758 KiB After Width: | Height: | Size: 758 KiB | 
| After Width: | Height: | Size: 2.2 MiB | 
| Before Width: | Height: | Size: 2.5 MiB After Width: | Height: | Size: 2.5 MiB | 
| Before Width: | Height: | Size: 574 KiB After Width: | Height: | Size: 574 KiB | 
| Before Width: | Height: | Size: 800 KiB After Width: | Height: | Size: 800 KiB | 
| @@ -1 +1 @@ | ||||
| Any.Way | ||||
| AnyWay | ||||
| @@ -1 +1 @@ | ||||
| TRAVEL | ||||
|  | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| anydev.anyway@gmail.com | ||||
|  | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| Remy | ||||
|  | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| Moll | ||||
|  | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| +4915128785827 | ||||
|  | ||||
|   | ||||
| Before Width: | Height: | Size: 1.6 MiB | 
| Before Width: | Height: | Size: 2.2 MiB |