Skip to content

beta @ 8b07fd5b046cc384d022ab1329ae9c81c9e0c778 #142

beta @ 8b07fd5b046cc384d022ab1329ae9c81c9e0c778

beta @ 8b07fd5b046cc384d022ab1329ae9c81c9e0c778 #142

Workflow file for this run

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