beta @ 8b07fd5b046cc384d022ab1329ae9c81c9e0c778 #142
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build All | |
run-name: ${{ inputs.release_type }} @ ${{ github.sha }} | |
permissions: | |
contents: write | |
concurrency: | |
group: delta | |
on: | |
workflow_dispatch: | |
inputs: | |
release_type: | |
description: Release type | |
default: beta | |
type: choice | |
options: | |
- beta | |
- prod | |
version_type: | |
description: Version type | |
default: minor | |
type: choice | |
options: | |
- patch | |
- minor | |
- major | |
build_foss: | |
description: Build FOSS | |
type: boolean | |
default: true | |
publish: | |
description: Publish the app | |
type: boolean | |
default: true | |
changelog: | |
description: Changelog (b64 encoded) | |
env: | |
token: ${{ secrets.PA_TOKEN || github.token }} | |
organization: Delta-Icons | |
current_repo: ${{ github.repository }} | |
website_repo: Delta-Icons/delta-icons.github.io | |
package_name: website.leifs.delta | |
jobs: | |
build: | |
name: Build | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ env.token }} | |
fetch-depth: 0 | |
- name: Export variables | |
run: | | |
python -u .github/scripts/resolve_paths.py -p >> $GITHUB_ENV | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: temurin | |
java-version: 18 | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y optipng | |
sudo pip install -r ${{ env.sd }}/requirements.txt | |
- name: Configure tools | |
run: | | |
git config user.name 'github-actions[bot]' | |
git config user.email 'github-actions[bot]@users.noreply.github.com' | |
cat << EOF >> $GITHUB_ENV | |
coauthor='Co-authored-by: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>' | |
EOF | |
- name: Bump version | |
run: | | |
python \ | |
-u ${{ env.sd }}/bump_version.py -e -w \ | |
-r ${{ inputs.release_type }} \ | |
-v ${{ inputs.version_type }} >> $GITHUB_ENV | |
- name: Add new icons | |
run: | | |
python -u ${{ env.sd }}/add_icons_wrapper.py | |
- name: Set icon count | |
run: | | |
python ${{ env.sd }}/count_icons.py -w | |
- name: Optimize images | |
run: | | |
bash ${{ env.sd }}/optimize_images.sh | |
- name: Sort appfilter and drawable | |
run: | | |
cd ${{ env.sd }} | |
python sort_appfilter.py -o | |
python sort_drawable.py -o | |
cp -fv ${{ env.a1 }} ${{ env.a2 }} | |
cp -fv ${{ env.d1 }} ${{ env.d2 }} | |
- name: Create changelog | |
run: | | |
mkdir changelog | |
changelog_txt=metadata/en-US/changelogs/${{ env.version_code }}.txt | |
changelog_tmp=changelog/whatsnew-en-US | |
changelog_xml=app/src/main/res/values/changelog.xml | |
python ${{ env.sd }}/create_changelog.py -p -w \ | |
-r ${{ inputs.release_type }} \ | |
-d '${{ inputs.changelog }}' \ | |
-t $changelog_txt \ | |
-x $changelog_xml | |
cp $changelog_txt $changelog_tmp | |
echo "changelog=$changelog_tmp" >> $GITHUB_ENV | |
- name: Commit pre-build changes | |
run: | | |
git add \ | |
app/build.gradle \ | |
app/src/ \ | |
contribs/ \ | |
metadata/ \ | |
resources/vectors/ | |
git commit -m 'Release: ${{ env.version }}' --author "${{ env.coauthor }}" | |
- name: Build APK | |
run: | | |
bash gradlew assemblePlay | |
- name: Build AAB | |
run: | | |
bash gradlew bundlePlay | |
if: | | |
inputs.publish == true | |
- name: Build APK FOSS | |
run: | | |
bash gradlew assembleFoss | |
if: | | |
inputs.build_foss == true | |
- name: Move unsigned builds | |
run: | | |
builds=$(find . -regextype posix-egrep -regex '.*-(release|unsigned).(aab|apk)$') | |
if [ -z "${builds}" ]; then | |
echo 'no builds found' | |
exit 1 | |
fi | |
for build in ${builds[@]}; do | |
mv -v $build . 2> /dev/null || true | |
done | |
- name: Sign builds | |
uses: kevin-david/zipalign-sign-android-release@main | |
with: | |
releaseDirectory: . | |
signingKeyBase64: ${{ secrets.KEYSTORE_BASE64 }} | |
keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }} | |
keyPassword: ${{ secrets.KEYSTORE_KEY_PASSWORD }} | |
alias: ${{ secrets.KEYSTORE_KEY_ALIAS }} | |
- name: Rename signed builds | |
run: | | |
rm -v *unsigned.apk | |
mv -v *foss*.apk ${{ env.filename }}-foss.apk 2> /dev/null || true | |
mv -v *play*.apk ${{ env.filename }}.apk 2> /dev/null || true | |
mv -v *play*.aab ${{ env.filename }}.aab 2> /dev/null || true | |
- name: Upload APKs to Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.filename }} | |
path: ${{ env.filename }}*.apk | |
if-no-files-found: error | |
retention-days: 90 | |
- name: Push pre-build changes | |
uses: ad-m/github-push-action@master | |
with: | |
github_token: ${{ env.token }} | |
branch: ${{ github.ref }} | |
if: | | |
inputs.publish == true | |
- name: Create a GitHub release | |
uses: softprops/action-gh-release@v2 | |
with: | |
prerelease: ${{ env.is_beta }} | |
files: '${{ env.filename }}*.apk' | |
name: ${{ env.version }} | |
tag_name: ${{ env.version }} | |
body_path: ${{ env.changelog }} | |
if: | | |
inputs.publish == true | |
- name: Commit post-release changes | |
run: | | |
sed -i '7,/^$/c\\' ${{ env.d1 }} ${{ env.d2 }} | |
git add ${{ env.d1 }} ${{ env.d2 }} | |
git commit -m "Cleanup: ${{ env.version }}" --author "${{ env.coauthor }}" | |
if: | | |
inputs.release_type == 'prod' && | |
inputs.publish == true | |
- name: Push post-release changes | |
uses: ad-m/github-push-action@master | |
with: | |
github_token: ${{ env.token }} | |
branch: ${{ github.ref }} | |
if: | | |
inputs.release_type == 'prod' && | |
inputs.publish == true | |
- name: Upload AAB to Google Play beta channel | |
uses: r0adkll/upload-google-play@v1 | |
with: | |
track: beta | |
status: completed | |
releaseFiles: ${{ env.filename }}.aab | |
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT }} | |
packageName: ${{ env.package_name }} | |
mappingFile: app/build/outputs/mapping/playRelease/mapping.txt | |
whatsNewDirectory: changelog | |
inAppUpdatePriority: 5 | |
if: | | |
github.repository_owner == env.organization && | |
inputs.publish == true | |
- name: Promote beta to production channel | |
uses: kevin-david/promote-play-release@v1.1.0 | |
with: | |
service-account-json-raw: ${{ secrets.SERVICE_ACCOUNT }} | |
package-name: ${{ env.package_name }} | |
inapp-update-priority: 5 | |
user-fraction: 1.0 | |
if: | | |
github.repository_owner == env.organization && | |
inputs.release_type == 'prod' && | |
inputs.publish == true | |
- name: Update the website | |
uses: benc-uk/workflow-dispatch@v1 | |
with: | |
token: ${{ env.token }} | |
repo: ${{ env.website_repo }} | |
workflow: deploy.yml | |
if: | | |
github.repository_owner == env.organization && | |
inputs.release_type == 'prod' && | |
inputs.publish == true | |
- name: Update the requests list | |
uses: benc-uk/workflow-dispatch@v1 | |
with: | |
repo: ${{ github.repository }} | |
workflow: update_requests.yml | |
token: ${{ env.token }} | |
if: | | |
github.repository_owner == env.organization && | |
inputs.release_type == 'prod' && | |
inputs.publish == true |