-
Notifications
You must be signed in to change notification settings - Fork 7
155 lines (124 loc) · 5.65 KB
/
build-app-release.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
name: Build App Release
# This workflow is triggered by a schedule or manually (via the Actions tab on GitHub)
# It will generate a new version of the app and create a PR to increment the version numbers
permissions:
contents: write
pull-requests: write
on:
schedule:
# These will run only on the default branch
# These numbers will likely change when we move to EAS Update
- cron: "0 18 * * 2" # Tuesdays at 11 AM PT
- cron: "0 21 * * 4" # Thursdays at 2 PM PT
workflow_dispatch:
jobs:
build-android:
runs-on: ubuntu-latest
environment: Production
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: "18"
- name: Install dependencies
run: yarn install
- name: 🏗 Setup EAS
uses: expo/expo-github-action@v8
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- name: Create .env file from secrets
run: |
echo "EXPO_PUBLIC_CONTACT_ADDRESS=${{ secrets.EXPO_PUBLIC_CONTACT_ADDRESS }}" >> .env.production
echo "EXPO_PUBLIC_DEBUG_ADDRESSES=${{ secrets.EXPO_PUBLIC_DEBUG_ADDRESSES }}" >> .env.production
echo "EXPO_PUBLIC_SENTRY_DSN=${{ secrets.EXPO_PUBLIC_SENTRY_DSN }}" >> .env.production
echo "EXPO_PUBLIC_WALLETCONNECT_PROJECT_ID=${{ secrets.EXPO_PUBLIC_WALLETCONNECT_PROJECT_ID }}" >> .env.production
echo "EXPO_PUBLIC_THIRDWEB_CLIENT_ID=${{ secrets.EXPO_PUBLIC_THIRDWEB_CLIENT_ID }}" >> .env.production
echo "EXPO_PUBLIC_EXPO_PROJECT_ID=${{ secrets.EXPO_PUBLIC_EXPO_PROJECT_ID }}" >> .env.production
echo "EXPO_PUBLIC_PRIVY_APP_ID=${{ secrets.EXPO_PUBLIC_PRIVY_APP_ID }}" >> .env.production
echo "EXPO_PUBLIC_EVM_RPC_ENDPOINT=${{ secrets.EXPO_PUBLIC_EVM_RPC_ENDPOINT }}" >> .env.production
- name: Update EAS config with env variables
run: node scripts/build/eas.js --env production
- name: Update Android Files
# TODO: This should be handled by build configs in the future
run: node scripts/build/android/production.js
- name: Build for Android
run: eas build --profile production-android --platform android --non-interactive --auto-submit --no-wait
build-ios:
runs-on: ubuntu-latest
environment: Production
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: "18"
- name: Install dependencies
run: yarn install
- name: 🏗 Setup EAS
uses: expo/expo-github-action@v8
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- name: Create .env file from secrets
run: |
echo "EXPO_PUBLIC_CONTACT_ADDRESS=${{ secrets.EXPO_PUBLIC_CONTACT_ADDRESS }}" >> .env.production
echo "EXPO_PUBLIC_DEBUG_ADDRESSES=${{ secrets.EXPO_PUBLIC_DEBUG_ADDRESSES }}" >> .env.production
echo "EXPO_PUBLIC_SENTRY_DSN=${{ secrets.EXPO_PUBLIC_SENTRY_DSN }}" >> .env.production
echo "EXPO_PUBLIC_WALLETCONNECT_PROJECT_ID=${{ secrets.EXPO_PUBLIC_WALLETCONNECT_PROJECT_ID }}" >> .env.production
echo "EXPO_PUBLIC_THIRDWEB_CLIENT_ID=${{ secrets.EXPO_PUBLIC_THIRDWEB_CLIENT_ID }}" >> .env.production
echo "EXPO_PUBLIC_EXPO_PROJECT_ID=${{ secrets.EXPO_PUBLIC_EXPO_PROJECT_ID }}" >> .env.production
echo "EXPO_PUBLIC_PRIVY_APP_ID=${{ secrets.EXPO_PUBLIC_PRIVY_APP_ID }}" >> .env.production
echo "EXPO_PUBLIC_EVM_RPC_ENDPOINT=${{ secrets.EXPO_PUBLIC_EVM_RPC_ENDPOINT }}" >> .env.production
- name: Update EAS config with env variables
run: node scripts/build/eas.js --env production
- name: Update iOS Files
# TODO: This should be handled by schemes in the future
run: node scripts/build/ios/production.js
- name: Build for iOS
run: eas build --profile production-ios --platform ios --non-interactive --auto-submit --no-wait
increment-build-numbers:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: "18"
- name: Increment version number
run: |
node scripts/build/incrementVersion.js --bump=patch
- name: Commit changes
run: |
git add app.json
git commit -m "Increment build numbers"
git push
- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: increment-version
title: "Increment version numbers"
body: "This PR increments the buildNumber for iOS and the versionCode for Android."
create-release-notes:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Generate and output release notes
run: |
# Find the last commit hash with the specific title
START_COMMIT_SHA=$(git log -1 --grep="\[create-pull-request\] automated change" --format=format:%H)
# Exit if no matching commit was found
if [ -z "$START_COMMIT_SHA" ]; then
echo "No previous commit with title '[create-pull-request] automated change' found."
exit 1
fi
# Define the latest commit hash
END_COMMIT_SHA=$(git rev-parse HEAD)
# Run the release notes script with the start and end commit hashes
scripts/build/release_notes.sh $START_COMMIT_SHA $END_COMMIT_SHA