mirror of
https://github.com/passepartoutvpn/passepartout-apple.git
synced 2025-02-20 14:52:34 +00:00
Complete CI/CD release workflow (#958)
Import current metadata and screenshots. Fixes #647
This commit is contained in:
parent
6e3e3e398e
commit
c0dc2181e3
73
.github/workflows/release.yml
vendored
73
.github/workflows/release.yml
vendored
@ -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
8
.gitignore
vendored
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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
2
fastlane/Deliverfile
Normal file
@ -0,0 +1,2 @@
|
||||
automatic_release false
|
||||
run_precheck_before_submit false
|
@ -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
|
||||
|
@ -1 +0,0 @@
|
||||
Passepartout, VPN Client
|
@ -1,3 +0,0 @@
|
||||
### Fixed
|
||||
|
||||
- Minor stuff.
|
@ -1 +0,0 @@
|
||||
Für WireGuard und OpenVPN
|
@ -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.
|
@ -1 +0,0 @@
|
||||
Passepartout, VPN Client
|
@ -1,3 +0,0 @@
|
||||
### Fixed
|
||||
|
||||
- Minor stuff.
|
@ -1 +0,0 @@
|
||||
Για WireGuard και OpenVPN
|
@ -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.
|
@ -1 +0,0 @@
|
||||
Passepartout, VPN Client
|
@ -1,3 +0,0 @@
|
||||
### Fixed
|
||||
|
||||
- Minor stuff.
|
@ -1 +0,0 @@
|
||||
For WireGuard and OpenVPN
|
@ -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.
|
@ -1 +0,0 @@
|
||||
Passepartout, Client VPN
|
@ -1,3 +0,0 @@
|
||||
### Fixed
|
||||
|
||||
- Minor stuff.
|
@ -1 +0,0 @@
|
||||
Para WireGuard y OpenVPN
|
@ -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.
|
@ -1 +0,0 @@
|
||||
Passepartout, Client VPN
|
@ -1,3 +0,0 @@
|
||||
### Fixed
|
||||
|
||||
- Minor stuff.
|
@ -1 +0,0 @@
|
||||
Pour WireGuard et OpenVPN
|
BIN
fastlane/metadata/iOS/app_icon.jpg
Normal file
BIN
fastlane/metadata/iOS/app_icon.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
1
fastlane/metadata/iOS/de-DE/name.txt
Normal file
1
fastlane/metadata/iOS/de-DE/name.txt
Normal file
@ -0,0 +1 @@
|
||||
Passepartout, VPN Client
|
1
fastlane/metadata/iOS/de-DE/subtitle.txt
Normal file
1
fastlane/metadata/iOS/de-DE/subtitle.txt
Normal file
@ -0,0 +1 @@
|
||||
Für WireGuard und OpenVPN
|
1
fastlane/metadata/iOS/el/name.txt
Normal file
1
fastlane/metadata/iOS/el/name.txt
Normal file
@ -0,0 +1 @@
|
||||
Passepartout, VPN Client
|
1
fastlane/metadata/iOS/el/subtitle.txt
Normal file
1
fastlane/metadata/iOS/el/subtitle.txt
Normal file
@ -0,0 +1 @@
|
||||
Για WireGuard και OpenVPN
|
1
fastlane/metadata/iOS/en-US/name.txt
Normal file
1
fastlane/metadata/iOS/en-US/name.txt
Normal file
@ -0,0 +1 @@
|
||||
Passepartout, VPN Client
|
1
fastlane/metadata/iOS/en-US/subtitle.txt
Normal file
1
fastlane/metadata/iOS/en-US/subtitle.txt
Normal file
@ -0,0 +1 @@
|
||||
For WireGuard and OpenVPN
|
1
fastlane/metadata/iOS/es-MX/name.txt
Normal file
1
fastlane/metadata/iOS/es-MX/name.txt
Normal file
@ -0,0 +1 @@
|
||||
Passepartout, Client VPN
|
1
fastlane/metadata/iOS/es-MX/subtitle.txt
Normal file
1
fastlane/metadata/iOS/es-MX/subtitle.txt
Normal file
@ -0,0 +1 @@
|
||||
Para WireGuard y OpenVPN
|
0
fastlane/metadata/pl/promotional_text.txt → fastlane/metadata/iOS/fr-FR/apple_tv_privacy_policy.txt
Normal file → Executable file
0
fastlane/metadata/pl/promotional_text.txt → fastlane/metadata/iOS/fr-FR/apple_tv_privacy_policy.txt
Normal file → Executable file
0
fastlane/metadata/fr-FR/marketing_url.txt → fastlane/metadata/iOS/fr-FR/marketing_url.txt
Normal file → Executable file
0
fastlane/metadata/fr-FR/marketing_url.txt → fastlane/metadata/iOS/fr-FR/marketing_url.txt
Normal file → Executable file
1
fastlane/metadata/iOS/fr-FR/name.txt
Executable file
1
fastlane/metadata/iOS/fr-FR/name.txt
Executable file
@ -0,0 +1 @@
|
||||
Passepartout, Client VPN
|
0
fastlane/metadata/fr-FR/privacy_url.txt → fastlane/metadata/iOS/fr-FR/privacy_url.txt
Normal file → Executable file
0
fastlane/metadata/fr-FR/privacy_url.txt → fastlane/metadata/iOS/fr-FR/privacy_url.txt
Normal file → Executable file
0
fastlane/metadata/pt-BR/promotional_text.txt → fastlane/metadata/iOS/fr-FR/promotional_text.txt
Normal file → Executable file
0
fastlane/metadata/pt-BR/promotional_text.txt → fastlane/metadata/iOS/fr-FR/promotional_text.txt
Normal file → Executable file
1
fastlane/metadata/iOS/fr-FR/subtitle.txt
Executable file
1
fastlane/metadata/iOS/fr-FR/subtitle.txt
Executable file
@ -0,0 +1 @@
|
||||
Pour WireGuard et OpenVPN
|
0
fastlane/metadata/fr-FR/support_url.txt → fastlane/metadata/iOS/fr-FR/support_url.txt
Normal file → Executable file
0
fastlane/metadata/fr-FR/support_url.txt → fastlane/metadata/iOS/fr-FR/support_url.txt
Normal file → Executable file
1
fastlane/metadata/iOS/it/name.txt
Normal file
1
fastlane/metadata/iOS/it/name.txt
Normal file
@ -0,0 +1 @@
|
||||
Passepartout, Client VPN
|
1
fastlane/metadata/iOS/it/subtitle.txt
Normal file
1
fastlane/metadata/iOS/it/subtitle.txt
Normal file
@ -0,0 +1 @@
|
||||
Per WireGuard ed OpenVPN
|
1
fastlane/metadata/iOS/nl-NL/name.txt
Normal file
1
fastlane/metadata/iOS/nl-NL/name.txt
Normal file
@ -0,0 +1 @@
|
||||
Passepartout, VPN Client
|
1
fastlane/metadata/iOS/nl-NL/subtitle.txt
Normal file
1
fastlane/metadata/iOS/nl-NL/subtitle.txt
Normal file
@ -0,0 +1 @@
|
||||
Voor WireGuard en OpenVPN
|
1
fastlane/metadata/iOS/pl/name.txt
Normal file
1
fastlane/metadata/iOS/pl/name.txt
Normal file
@ -0,0 +1 @@
|
||||
Passepartout, Klient VPN
|
1
fastlane/metadata/iOS/pl/subtitle.txt
Normal file
1
fastlane/metadata/iOS/pl/subtitle.txt
Normal file
@ -0,0 +1 @@
|
||||
Do WireGuard oraz OpenVPN
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user