Complete CI/CD release workflow (#958)

Import current metadata and screenshots.

Fixes #647
This commit is contained in:
Davide 2024-11-27 19:10:23 +01:00 committed by GitHub
parent 6e3e3e398e
commit c0dc2181e3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
396 changed files with 417 additions and 97 deletions

View File

@ -26,8 +26,19 @@ jobs:
- uses: passepartoutvpn/action-prepare-xcode-build@master
with:
access_token: ${{ secrets.ACCESS_TOKEN }}
- run: |
- name: Save app version
id: app_version
run: |
VERSION=`ci/version-number.sh $XCODEPROJ`
BUILD=`ci/build-number.sh $XCODEPROJ`
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "build=$BUILD" >> $GITHUB_OUTPUT
- name: Run Xcode tests
run: |
bundle exec fastlane test
outputs:
version: ${{ steps.app_version.outputs.version }}
build: ${{ steps.app_version.outputs.build }}
build_upload:
name: Upload to ASC
runs-on: macos-15
@ -57,7 +68,7 @@ jobs:
distribute_public_beta:
name: Distribute Public Beta
runs-on: ubuntu-latest
needs: build_upload
needs: [run_tests, build_upload]
environment:
name: public_beta
steps:
@ -65,12 +76,10 @@ jobs:
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Fetch build metadata
run: |
echo "PILOT_APP_VERSION=`ci/version-number.sh $XCODEPROJ`" >> $GITHUB_ENV
echo "PILOT_BUILD_NUMBER=`ci/build-number.sh $XCODEPROJ`" >> $GITHUB_ENV
- name: Publish on TestFlight
env:
PILOT_APP_VERSION: ${{ needs.run_tests.outputs.version }}
PILOT_BUILD_NUMBER: ${{ needs.run_tests.outputs.build }}
PILOT_GROUPS: ${{ vars.PILOT_GROUPS }}
PILOT_NOTIFY_EXTERNAL_TESTERS: ${{ vars.PILOT_NOTIFY_EXTERNAL_TESTERS }}
run: |
@ -78,3 +87,55 @@ jobs:
for PLATFORM in ${PLATFORMS[@]}; do
bundle exec fastlane --env $PLATFORM public_beta
done
submit_for_app_review:
name: Submit to App Review
runs-on: ubuntu-latest
needs: [run_tests, build_upload]
environment:
name: app_review
env:
DELIVER_APP_VERSION: ${{ needs.run_tests.outputs.version }}
DELIVER_BUILD_NUMBER: ${{ needs.run_tests.outputs.build }}
DELIVER_FORCE: true
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Submit for App Review
run: |
PLATFORMS=("iOS" "macOS" "tvOS")
for PLATFORM in ${PLATFORMS[@]}; do
bundle exec fastlane --env $PLATFORM asc_review
done
publish_to_app_store:
name: Publish to App Store
runs-on: ubuntu-latest
needs: [run_tests, build_upload, submit_for_app_review]
environment:
name: app_store
env:
APP_VERSION: ${{ needs.run_tests.outputs.version }}
RELEASE_NOTES: CHANGELOG.txt
steps:
- uses: actions/checkout@v4
- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.GPG_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
git_user_signingkey: true
git_commit_gpgsign: true
git_tag_gpgsign: true
git_push_gpgsign: false
- name: Tag release
run: |
bundle exec fastlane tag_release version:$APP_VERSION
- name: Publish release
uses: softprops/action-gh-release@v2
with:
tag_name: "v${{ env.APP_VERSION }}"
body_path: ${{ env.RELEASE_NOTES }}
draft: true
files: |
${{ env.RELEASE_NOTES }}

8
.gitignore vendored
View File

@ -2,12 +2,12 @@
*.swp
*.pbxuser
**/xcuserdata
fastlane/**/*.html
fastlane/README.md
fastlane/report.xml
fastlane/test_output
fastlane/metadata/review_information
fastlane/metadata/trade_representative_contact_information
fastlane/**/*.html
fastlane/**/test_output
fastlane/**/review_information
fastlane/**/trade_representative_contact_information
build/
dist/
/iap

View File

@ -1,5 +1,8 @@
MATCH_PLATFORM="ios"
GYM_SDK="iphoneos"
GYM_DESTINATION="generic/platform=iOS"
GYM_OUTPUT_DIRECTORY="dist/ios"
GYM_OUTPUT_DIRECTORY="dist/iOS"
PILOT_PLATFORM="ios"
DELIVER_PLATFORM="ios"
DELIVER_METADATA_PATH="fastlane/metadata/iOS"
DELIVER_SCREENSHOTS_PATH="fastlane/screenshots/iOS"

View File

@ -2,5 +2,8 @@ MATCH_PLATFORM="macos"
MATCH_ADDITIONAL_CERT_TYPES="mac_installer_distribution"
GYM_SDK="macosx"
GYM_DESTINATION="generic/platform=macOS"
GYM_OUTPUT_DIRECTORY="dist/macos"
GYM_OUTPUT_DIRECTORY="dist/macOS"
PILOT_PLATFORM="osx"
DELIVER_PLATFORM="osx"
DELIVER_METADATA_PATH="fastlane/metadata/macOS"
DELIVER_SCREENSHOTS_PATH="fastlane/screenshots/macOS"

View File

@ -3,3 +3,6 @@ GYM_SDK="appletvos"
GYM_DESTINATION="generic/platform=tvOS"
GYM_OUTPUT_DIRECTORY="dist/tvos"
PILOT_PLATFORM="appletvos"
DELIVER_PLATFORM="appletvos"
DELIVER_METADATA_PATH="fastlane/metadata/tvOS"
DELIVER_SCREENSHOTS_PATH="fastlane/screenshots/tvOS"

2
fastlane/Deliverfile Normal file
View File

@ -0,0 +1,2 @@
automatic_release false
run_precheck_before_submit false

View File

@ -19,6 +19,7 @@ Dotenv.load ".env.secret"
setup_ci if ENV["CI"]
api = "Passepartout/Library/Sources/CommonAPI/API"
metadata = "fastlane/metadata"
logname = "CHANGELOG.txt"
build_path = "build"
derived_data_path = "build/derived_data"
@ -98,3 +99,46 @@ lane :public_beta do
notify_external_testers: true
)
end
desc "Update App Store metadata"
lane :asc_metadata do
deliver(
skip_metadata: false,
skip_screenshots: true
)
end
desc "Update App Store screenshots"
lane :asc_screenshots do
deliver(
skip_metadata: true,
skip_screenshots: false
)
end
desc "Submit a build to App Review"
lane :asc_review do |options|
deliver(
submit_for_review: true,
skip_binary_upload: true,
skip_metadata: false,
skip_screenshots: false,
submission_information: {
add_id_info_uses_idfa: false,
export_compliance_uses_encryption: false
}
)
end
desc "Tag release"
lane :tag_release do |options|
version = options[:version]
tag = "v#{version}"
add_git_tag(
tag: tag,
sign: true
)
push_git_tags(
tag: tag
)
end

View File

@ -1 +0,0 @@
Passepartout, VPN Client

View File

@ -1,3 +0,0 @@
### Fixed
- Minor stuff.

View File

@ -1 +0,0 @@
Für WireGuard und OpenVPN

View File

@ -1,3 +0,0 @@
Passepartout is a bare VPN client and, as such, does not store nor forward any personal data. Therefore, you should get in touch with your VPN service provider to learn about its data retention policy.
Passepartout may access GitHub repositories on request. Please refer to GitHub privacy statement for any information about data retention when accessing their website.

View File

@ -1 +0,0 @@
Passepartout, VPN Client

View File

@ -1,3 +0,0 @@
### Fixed
- Minor stuff.

View File

@ -1 +0,0 @@
Για WireGuard και OpenVPN

View File

@ -1,3 +0,0 @@
Passepartout is a bare VPN client and, as such, does not store nor forward any personal data. Therefore, you should get in touch with your VPN service provider to learn about its data retention policy.
Passepartout may access GitHub repositories on request. Please refer to GitHub privacy statement for any information about data retention when accessing their website.

View File

@ -1 +0,0 @@
Passepartout, VPN Client

View File

@ -1,3 +0,0 @@
### Fixed
- Minor stuff.

View File

@ -1 +0,0 @@
For WireGuard and OpenVPN

View File

@ -1,3 +0,0 @@
Passepartout is a bare VPN client and, as such, does not store nor forward any personal data. Therefore, you should get in touch with your VPN service provider to learn about its data retention policy.
Passepartout may access GitHub repositories on request. Please refer to GitHub privacy statement for any information about data retention when accessing their website.

View File

@ -1 +0,0 @@
Passepartout, Client VPN

View File

@ -1,3 +0,0 @@
### Fixed
- Minor stuff.

View File

@ -1 +0,0 @@
Para WireGuard y OpenVPN

View File

@ -1,3 +0,0 @@
Passepartout is a bare VPN client and, as such, does not store nor forward any personal data. Therefore, you should get in touch with your VPN service provider to learn about its data retention policy.
Passepartout may access GitHub repositories on request. Please refer to GitHub privacy statement for any information about data retention when accessing their website.

View File

@ -1 +0,0 @@
Passepartout, Client VPN

View File

@ -1,3 +0,0 @@
### Fixed
- Minor stuff.

View File

@ -1 +0,0 @@
Pour WireGuard et OpenVPN

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1 @@
Passepartout, VPN Client

View File

@ -0,0 +1 @@
Für WireGuard und OpenVPN

View File

@ -0,0 +1 @@
Passepartout, VPN Client

View File

@ -0,0 +1 @@
Για WireGuard και OpenVPN

View File

@ -0,0 +1 @@
Passepartout, VPN Client

View File

@ -0,0 +1 @@
For WireGuard and OpenVPN

View File

@ -0,0 +1 @@
Passepartout, Client VPN

View File

@ -0,0 +1 @@
Para WireGuard y OpenVPN

View File

@ -0,0 +1 @@
Passepartout, Client VPN

View File

@ -0,0 +1 @@
Pour WireGuard et OpenVPN

View File

@ -0,0 +1 @@
Passepartout, Client VPN

View File

@ -0,0 +1 @@
Per WireGuard ed OpenVPN

View File

@ -0,0 +1 @@
Passepartout, VPN Client

View File

@ -0,0 +1 @@
Voor WireGuard en OpenVPN

View File

@ -0,0 +1 @@
Passepartout, Klient VPN

View File

@ -0,0 +1 @@
Do WireGuard oraz OpenVPN

Some files were not shown because too many files have changed in this diff Show More