preping for github actions
This commit is contained in:
70
.github/workflows/android-release.yml
vendored
Normal file
70
.github/workflows/android-release.yml
vendored
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
name: Android Release Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build and Create Release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up JDK 17
|
||||||
|
uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
java-version: '17'
|
||||||
|
distribution: 'temurin'
|
||||||
|
cache: gradle
|
||||||
|
|
||||||
|
- name: Grant execute permission for gradlew
|
||||||
|
run: chmod +x gradlew
|
||||||
|
|
||||||
|
- name: Build with Gradle
|
||||||
|
run: ./gradlew assembleRelease
|
||||||
|
|
||||||
|
- name: Sign APK
|
||||||
|
uses: r0adkll/sign-android-release@v1
|
||||||
|
id: sign_app
|
||||||
|
with:
|
||||||
|
releaseDirectory: app/build/outputs/apk/release
|
||||||
|
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
|
||||||
|
alias: ${{ secrets.KEY_ALIAS }}
|
||||||
|
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
|
||||||
|
keyPassword: ${{ secrets.KEY_PASSWORD }}
|
||||||
|
env:
|
||||||
|
BUILD_TOOLS_VERSION: "33.0.0"
|
||||||
|
|
||||||
|
- name: Get the version
|
||||||
|
id: get_version
|
||||||
|
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Rename APK with version
|
||||||
|
run: |
|
||||||
|
cp ${{ steps.sign_app.outputs.signedReleaseFile }} SimpleLogUpload-${{ steps.get_version.outputs.VERSION }}.apk
|
||||||
|
|
||||||
|
- name: Create Release
|
||||||
|
id: create_release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
tag_name: ${{ github.ref }}
|
||||||
|
name: SimpleLogUpload ${{ steps.get_version.outputs.VERSION }}
|
||||||
|
draft: false
|
||||||
|
prerelease: false
|
||||||
|
files: |
|
||||||
|
SimpleLogUpload-${{ steps.get_version.outputs.VERSION }}.apk
|
||||||
|
app/build/outputs/apk/release/app-release-unsigned.apk
|
||||||
|
body: |
|
||||||
|
# SimpleLogUpload ${{ steps.get_version.outputs.VERSION }}
|
||||||
|
|
||||||
|
Android client written in Java to easily upload files, including Samsung dumpstate files.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
Download and install the APK file on your Android device.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
- Android 14+
|
||||||
|
- SimpleFileUpload-Server for handling the uploaded files
|
||||||
26
README.md
26
README.md
@@ -48,6 +48,32 @@ Note - this requires that you leverage SimpleFileUpload-Server
|
|||||||
- Upload history filtering and search
|
- Upload history filtering and search
|
||||||
- QR code generation for quick sharing
|
- QR code generation for quick sharing
|
||||||
|
|
||||||
|
## Development and Releases
|
||||||
|
|
||||||
|
### Automated Releases with GitHub Actions
|
||||||
|
This project uses GitHub Actions to automate the build and release process:
|
||||||
|
|
||||||
|
1. **Creating a new release:**
|
||||||
|
- Make your changes and commit them to the repository
|
||||||
|
- Create and push a new tag following the format `vYY.MM.PATCH` (e.g., `v25.04.1`)
|
||||||
|
- GitHub Actions will automatically:
|
||||||
|
- Build the APK
|
||||||
|
- Sign it using the stored signing keys
|
||||||
|
- Create a GitHub release with the APK attached
|
||||||
|
|
||||||
|
2. **Signing Configuration:**
|
||||||
|
Before the automated releases will work, you need to add the following secrets to your GitHub repository:
|
||||||
|
- `SIGNING_KEY`: Base64-encoded keystore file
|
||||||
|
- `KEY_ALIAS`: The alias used in the keystore
|
||||||
|
- `KEY_STORE_PASSWORD`: The keystore password
|
||||||
|
- `KEY_PASSWORD`: The key password
|
||||||
|
|
||||||
|
3. **Release Versioning:**
|
||||||
|
We follow a `vYY.MM.PATCH` versioning scheme:
|
||||||
|
- `YY`: Year (e.g., 25 for 2025)
|
||||||
|
- `MM`: Month (e.g., 04 for April)
|
||||||
|
- `PATCH`: Incremental patch number for the month
|
||||||
|
|
||||||
## Feature Details
|
## Feature Details
|
||||||
|
|
||||||
### Custom Upload Parameters
|
### Custom Upload Parameters
|
||||||
|
|||||||
96
RELEASE_PROCESS.md
Normal file
96
RELEASE_PROCESS.md
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
# Release Process for SimpleLogUpload
|
||||||
|
|
||||||
|
This document describes the process of creating new releases for the SimpleLogUpload Android application using GitHub Actions.
|
||||||
|
|
||||||
|
## Versioning Scheme
|
||||||
|
|
||||||
|
We use a `vYY.MM.PATCH` versioning format:
|
||||||
|
- `YY`: Year (last two digits, e.g., 25 for 2025)
|
||||||
|
- `MM`: Month (two digits, e.g., 04 for April)
|
||||||
|
- `PATCH`: Incremental patch number within the month (starting at 1)
|
||||||
|
|
||||||
|
Example: `v25.04.1` represents the first release in April 2025.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
Before you can use the automated release process, you need to set up the signing configuration:
|
||||||
|
|
||||||
|
1. **Create a keystore** (if you don't already have one):
|
||||||
|
```bash
|
||||||
|
keytool -genkey -v -keystore simplelogupload.keystore -alias upload_key -keyalg RSA -keysize 2048 -validity 10000
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Encode your keystore file**:
|
||||||
|
```bash
|
||||||
|
# Make the script executable
|
||||||
|
chmod +x scripts/prepare_signing_key.sh
|
||||||
|
|
||||||
|
# Run the script with your keystore file
|
||||||
|
./scripts/prepare_signing_key.sh /path/to/your/simplelogupload.keystore
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Add the required secrets to your GitHub repository**:
|
||||||
|
- `SIGNING_KEY`: The Base64-encoded keystore file (output from step 2)
|
||||||
|
- `KEY_ALIAS`: The alias of your key (e.g., `upload_key`)
|
||||||
|
- `KEY_STORE_PASSWORD`: The password for your keystore
|
||||||
|
- `KEY_PASSWORD`: The password for your key
|
||||||
|
|
||||||
|
Add these at: https://github.com/YOUR-USERNAME/SimpleLogUpload/settings/secrets/actions
|
||||||
|
|
||||||
|
## Creating a New Release
|
||||||
|
|
||||||
|
1. **Update your code**:
|
||||||
|
- Make all necessary code changes
|
||||||
|
- Update version numbers in app/build.gradle if needed
|
||||||
|
- Commit and push your changes to the main branch
|
||||||
|
|
||||||
|
2. **Create and push a tag**:
|
||||||
|
```bash
|
||||||
|
# Get the latest changes
|
||||||
|
git pull origin main
|
||||||
|
|
||||||
|
# Create a new tag
|
||||||
|
git tag v25.04.1
|
||||||
|
|
||||||
|
# Push the tag to GitHub
|
||||||
|
git push origin v25.04.1
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Monitor the GitHub Actions workflow**:
|
||||||
|
- Go to the "Actions" tab in your repository
|
||||||
|
- You should see a workflow named "Android Release Build" running
|
||||||
|
- When complete, it will create a new release with the APK attached
|
||||||
|
|
||||||
|
4. **Verify the release**:
|
||||||
|
- Check the "Releases" section of your repository
|
||||||
|
- Ensure the APK file is attached
|
||||||
|
- Download and test the APK on a device
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
If the automatic release process fails:
|
||||||
|
|
||||||
|
1. **Check the GitHub Actions logs**:
|
||||||
|
- Go to the "Actions" tab and click on the failed workflow
|
||||||
|
- Examine the logs for errors
|
||||||
|
|
||||||
|
2. **Common issues**:
|
||||||
|
- Missing GitHub secrets
|
||||||
|
- Incorrect keystore information
|
||||||
|
- Build errors in the codebase
|
||||||
|
|
||||||
|
3. **Manual release**:
|
||||||
|
If needed, you can build and release manually:
|
||||||
|
```bash
|
||||||
|
# Build the release APK
|
||||||
|
./gradlew assembleRelease
|
||||||
|
|
||||||
|
# Sign the APK using your keystore
|
||||||
|
# (Use apksigner from the Android SDK)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Post-Release Steps
|
||||||
|
|
||||||
|
1. **Announce the release** to users or stakeholders
|
||||||
|
2. **Monitor for issues** after the release
|
||||||
|
3. **Plan the next release** and begin work on new features
|
||||||
30
scripts/README.md
Normal file
30
scripts/README.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# Development Scripts
|
||||||
|
|
||||||
|
This directory contains helpful scripts for development and release management.
|
||||||
|
|
||||||
|
## prepare_signing_key.sh
|
||||||
|
|
||||||
|
This script helps you prepare your Android signing keystore for use with GitHub Actions by encoding it to Base64 format.
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Make the script executable
|
||||||
|
chmod +x prepare_signing_key.sh
|
||||||
|
|
||||||
|
# Run the script with your keystore file path
|
||||||
|
./prepare_signing_key.sh /path/to/your/keystore.jks
|
||||||
|
```
|
||||||
|
|
||||||
|
The script will output the Base64-encoded keystore which you should add as a GitHub secret named `SIGNING_KEY`.
|
||||||
|
|
||||||
|
### Required GitHub Secrets
|
||||||
|
|
||||||
|
To enable automatic signing and releasing of APKs, add the following secrets to your GitHub repository:
|
||||||
|
|
||||||
|
1. `SIGNING_KEY`: The Base64-encoded keystore file (output from this script)
|
||||||
|
2. `KEY_ALIAS`: The alias used in your keystore
|
||||||
|
3. `KEY_STORE_PASSWORD`: The password for your keystore
|
||||||
|
4. `KEY_PASSWORD`: The password for your key
|
||||||
|
|
||||||
|
Add these secrets at: https://github.com/YOUR-USERNAME/SimpleLogUpload/settings/secrets/actions
|
||||||
32
scripts/prepare_signing_key.sh
Executable file
32
scripts/prepare_signing_key.sh
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# This script helps encode your Android signing keystore for GitHub Actions secrets
|
||||||
|
|
||||||
|
# Check if a keystore file path is provided
|
||||||
|
if [ "$#" -ne 1 ]; then
|
||||||
|
echo "Usage: $0 <path-to-keystore>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
KEYSTORE_PATH="$1"
|
||||||
|
|
||||||
|
# Check if the keystore file exists
|
||||||
|
if [ ! -f "$KEYSTORE_PATH" ]; then
|
||||||
|
echo "Error: Keystore file not found at $KEYSTORE_PATH"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Encode the keystore file to base64
|
||||||
|
BASE64_KEYSTORE=$(base64 -i "$KEYSTORE_PATH")
|
||||||
|
|
||||||
|
# Print the encoded value
|
||||||
|
echo ""
|
||||||
|
echo "Add the following value to your GitHub repository secrets as SIGNING_KEY:"
|
||||||
|
echo ""
|
||||||
|
echo "$BASE64_KEYSTORE"
|
||||||
|
echo ""
|
||||||
|
echo "You will also need to add these secrets:"
|
||||||
|
echo "- KEY_ALIAS: Your keystore alias"
|
||||||
|
echo "- KEY_STORE_PASSWORD: Your keystore password"
|
||||||
|
echo "- KEY_PASSWORD: Your key password"
|
||||||
|
echo ""
|
||||||
|
echo "These values can be added at: https://github.com/YOUR-USERNAME/SimpleLogUpload/settings/secrets/actions"
|
||||||
Reference in New Issue
Block a user