Nightly builds #164
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: Nightly builds | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
schedule: | |
- cron: 0 1 * * 0-3,5-6 | |
workflow_dispatch: | |
inputs: | |
patch_version: | |
description: 'Provide the patch version for this release' | |
required: true | |
default: '1' | |
type: choice | |
options: | |
- '0' | |
- '1' | |
- '2' | |
- '3' | |
- '4' | |
- '5' | |
- '6' | |
- '7' | |
- '8' | |
- '9' | |
permissions: | |
contents: write | |
env: | |
# Due to a typo the last needs to be prefixed with this | |
RELEASE_STUPIDITY_PREFIX: '1' | |
jobs: | |
run_checker: | |
runs-on: ubuntu-latest | |
name: Check latest commit | |
outputs: | |
should_run: ${{ inputs.patch_version != null || (steps.check-new-commits.outputs.has-new-commits == 'true' && steps.check-changelog-files.outputs.has-changelog-files == 'true') }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # fetch the tags | |
- name: Check for new commits since last nightly | |
id: check-new-commits | |
shell: bash | |
run: | | |
if [ `git diff --name-only nightly-latest app native .changes | wc -l` -ne 0 ]; then | |
echo "has-new-commits=true" >> $GITHUB_OUTPUT ; | |
echo "has-new-commits=true"; | |
else | |
echo "has-new-commits=false" >> $GITHUB_OUTPUT ; | |
echo "has-new-commits=false"; | |
fi | |
- name: Check whether any changelog files are present | |
id: check-changelog-files | |
shell: bash | |
run: | | |
files=$(shopt -s nullglob;shopt -s dotglob;echo .changes/*.md) | |
if (( ${#files} )) | |
then | |
echo "has-changelog-files=true" >> $GITHUB_OUTPUT ; | |
echo "has-changelog-files=true"; | |
else | |
echo "has-changelog-files=false" >> $GITHUB_OUTPUT ; | |
echo "has-changelog-files=false"; | |
fi | |
tags: | |
env: | |
PATCH_VERSION: ${{ inputs.patch_version || 0 }} | |
runs-on: ubuntu-latest | |
needs: | |
- run_checker | |
if: ${{ needs.run_checker.outputs.should_run != 'false' }} | |
# Map a step output to a job output | |
outputs: | |
tag: ${{ steps.tag.outputs.tag }} | |
version: ${{ steps.version.outputs.version }} | |
msix_version: ${{ steps.msix_version.outputs.version }} | |
build_num: ${{ steps.build_num.outputs.build_num }} | |
targets: 'all' | |
steps: | |
- id: tag | |
run: echo "tag=`date +%F`" >> $GITHUB_OUTPUT | |
- id: version | |
run: | | |
VERSION=`date +1.%y.$RELEASE_STUPIDITY_PREFIX%-m%d$PATCH_VERSION` | |
echo "version=$VERSION" | |
echo "version=$VERSION" >> $GITHUB_OUTPUT | |
- id: msix_version | |
run: | | |
VERSION=`date +1.%y.%-m%d$PATCH_VERSION` | |
echo "version=$VERSION" | |
echo "version=$VERSION" >> $GITHUB_OUTPUT | |
- id: build_num | |
run: | | |
BUILD_NUM=`date +%s` | |
echo "build_num=$BUILD_NUM" | |
echo "build_num=$BUILD_NUM" >> $GITHUB_OUTPUT | |
create_draft_release: | |
runs-on: ubuntu-latest | |
needs: | |
- tags | |
steps: | |
- uses: actions/checkout@v4 | |
# create temporary release to upload assets to | |
- name: Create Draft Release | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
gh release create nightly-${{ needs.tags.outputs.tag }} \ | |
--prerelease --draft \ | |
--title "Nightly ${{ needs.tags.outputs.tag }}" | |
build: | |
uses: ./.github/workflows/build-app.yml | |
needs: | |
- tags | |
- create_draft_release | |
with: | |
targets: android,linux,ios,macos,windows-exe # skip: windows-msix | |
artifacts_prefix: 'nightly-' | |
build_num: ${{ needs.tags.outputs.build_num }} | |
version: ${{ needs.tags.outputs.version }} | |
msix_version: ${{ needs.tags.outputs.msix_version }} | |
release_tag: nightly-${{ needs.tags.outputs.tag }} | |
release_env: 'nightly' | |
release: true | |
env_extra: "IS_NIGHTLY=true" | |
secrets: inherit | |
changelog: | |
uses: ./.github/workflows/build-changelog.yml | |
needs: | |
- tags | |
secrets: inherit | |
######## ## ### ## ## ###### ######## ####### ######## ######## ### ## ######## ## ## ### | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
## ## ## ## ## #### ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
######## ## ## ## ## ###### ## ## ## ######## ###### ####### ## ## ## ######## ######### ## ## | |
## ## ######### ## ## ## ## ## ## ## ## ######### ## ## ## ## ######### | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
## ######## ## ## ## ###### ## ####### ## ## ######## ## ## ######## ## ## ## ## ## | |
google-play-store: | |
runs-on: ubuntu-latest | |
environment: release | |
needs: | |
- tags | |
- build | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: Android | |
# - uses: actions/download-artifact@v4 | |
# with: | |
# name: Android-debug-symbols | |
- name: Release Build to playstore | |
uses: r0adkll/upload-google-play@v1 | |
with: | |
serviceAccountJsonPlainText: ${{ secrets.PLAYSTORE_ACCOUNT_KEY }} | |
packageName: global.acter.a3 | |
releaseName: ${{ needs.tags.outputs.tag }} | |
releaseFiles: app-release.aab | |
# debugSymbols: "*.symbols" | |
track: alpha | |
status: completed | |
#### ####### ###### ######## ######## ###### ######## ######## ## #### ###### ## ## ######## | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
## ## ## ###### ## ###### ###### ## ###### ## ## ## #### ######### ## | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
#### ####### ###### ## ######## ###### ## ## ######## #### ###### ## ## ## | |
apple-store-ios: | |
runs-on: macos-latest | |
environment: release | |
needs: | |
- tags | |
- changelog | |
- build | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: iOS | |
- uses: actions/download-artifact@v4 | |
with: | |
name: Changelog | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
architecture: x64 | |
- run: pip3 install codemagic-cli-tools | |
- name: Install App Store Connect Auth | |
env: | |
APPLE_API_KEY_BASE64: ${{ secrets.APPLE_API_KEY_BASE64 }} | |
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }} | |
run: | | |
mkdir private_keys | |
echo -n "$APPLE_API_KEY_BASE64" | base64 --decode --output "private_keys/AuthKey_$APPLE_API_KEY_ID.p8" | |
ls -ltas private_keys | |
- name: Publish to Testflight | |
env: | |
APP_STORE_CONNECT_KEY_IDENTIFIER: ${{ secrets.APPLE_API_KEY_ID }} | |
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }} | |
shell: bash | |
run: | | |
app-store-connect publish --verbose --testflight --expire-build-submitted-for-review --platform=IOS --whats-new @file:CHANGELOG.md --path=*.ipa | |
- name: Clean up keychain and provisioning profile | |
if: ${{ always() }} | |
run: | | |
rm -rf private_keys | |
## ## ### ###### ######## ######## ###### ######## ######## ## #### ###### ## ## ######## | |
### ### ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
#### #### ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
## ### ## ## ## ## ## ###### ###### ## ###### ## ## ## #### ######### ## | |
## ## ######### ## ## ## ## ## ## ## ## ## ## ## ## ## | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
## ## ## ## ###### ## ######## ###### ## ## ######## #### ###### ## ## ## | |
apple-store-mac: | |
runs-on: macos-latest | |
environment: release | |
needs: | |
- tags | |
- build | |
- changelog | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: MacOS | |
- uses: actions/download-artifact@v4 | |
with: | |
name: Changelog | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
architecture: x64 | |
- run: pip3 install codemagic-cli-tools | |
- name: Install App Store Connect Auth | |
env: | |
APPLE_API_KEY_BASE64: ${{ secrets.APPLE_API_KEY_BASE64 }} | |
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }} | |
run: | | |
mkdir private_keys | |
echo -n "$APPLE_API_KEY_BASE64" | base64 --decode --output "private_keys/AuthKey_$APPLE_API_KEY_ID.p8" | |
ls -ltas private_keys | |
- name: Publish to Testflight | |
env: | |
APP_STORE_CONNECT_KEY_IDENTIFIER: ${{ secrets.APPLE_API_KEY_ID }} | |
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }} | |
shell: bash | |
run: | | |
app-store-connect publish --verbose --testflight --expire-build-submitted-for-review --platform=MAC_OS --whats-new @file:CHANGELOG.md --path=*.pkg | |
- name: Clean up keychain and provisioning profile | |
if: ${{ always() }} | |
run: | | |
rm -rf private_keys | |
### ######## ###### ## ## ### ## ## ######## | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
## ## ## ## ## ## ## ## ## ## ## ## ## | |
## ## ######## ## ######### ## ## ## ## ######## | |
######### ## ## ## ## ## ######### ## ## ## ## | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
## ## ## ## ###### ## ## ## ## ####### ## ## | |
publish_aur_nightly: | |
environment: release | |
needs: | |
- tags | |
- build | |
name: Publish AUR nightly | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: Linux x64 | |
- name: Patch PKGBUILD file | |
run: | | |
cp app/linux/packaging/aur/PKGBUILD PKGBUILD | |
VERSION=${{ needs.tags.outputs.version }} | |
DOWNLOAD_PATH='nightly-${{ needs.tags.outputs.tag }}\/acter-nightly-linux-x64-${{ needs.tags.outputs.version }}.tar.bz2' | |
MD5SUM=`md5sum acter-nightly-linux-x64-$VERSION.tar.bz2 | awk '{print $1}'` | |
echo "Version: $VERSION" | |
echo "Download Path: $DOWNLOAD_PATH" | |
echo "MD5Sum: $MD5SUM" | |
sed -i "s/%{{PKGNAME}}%/acter-nightly-bin/g" PKGBUILD | |
sed -i "s/%{{PKGNAME_CONFLICTS}}%/acter-bin/g" PKGBUILD | |
sed -i "s/%{{VERSION}}%/$VERSION/g" PKGBUILD | |
sed -i "s/%{{DOWNLOAD_PATH}}%/$DOWNLOAD_PATH/g" PKGBUILD | |
sed -i "s/%{{LINUX_MD5}}%/$MD5SUM/g" PKGBUILD | |
echo " --- Final PKGBUILD File " | |
cat PKGBUILD | |
- uses: KSXGitHub/github-actions-deploy-aur@v2.7.2 | |
name: Publish to AUR | |
with: | |
pkgname: acter-nightly-bin | |
pkgbuild: ./PKGBUILD | |
commit_username: Sari | |
commit_email: sari@acter.global | |
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} | |
commit_message: Updated to ${{ needs.tags.outputs.tag }} | |
###### #### ######## ## ## ## ## ######## ######## ## ## ######## ## #### ###### ## ## | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
## #### ## ## ######### ## ## ######## ######## ## ## ######## ## ## ###### ######### | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## | |
###### #### ## ## ## ####### ######## ## ####### ######## ######## #### ###### ## ## | |
publish: | |
environment: release | |
runs-on: ubuntu-latest | |
name: Publish | |
if: ${{ github.event.schedule }} | |
needs: | |
- tags | |
- build | |
- changelog | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: Changelog | |
- name: Configure git | |
run: | # make sure we have the tags and all | |
git fetch --prune --unshallow --tags | |
git config --global user.name 'Sari' | |
git config --global user.email 'acter-sari@users.noreply.github.com' | |
- name: Tag for nightly release | |
run: | | |
git tag nightly-${{ needs.tags.outputs.tag }} | |
git tag -f nightly-latest | |
git push -f origin main nightly-${{ needs.tags.outputs.tag }} nightly-latest | |
- name: Release | |
# publish this nightly release now | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
gh release upload nightly-${{ needs.tags.outputs.tag }} CHANGELOG.md | |
gh release edit nightly-${{ needs.tags.outputs.tag }} \ | |
--prerelease --draft=false \ | |
--note-file CHANGELOG.md |