Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Upload mappings #44

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add ability to upload mappings/symbols file
  • Loading branch information
mateuszkwiecinski authored and wzieba committed Apr 3, 2022
commit e0618e8d5084f232f62837e9e633af6a6fec5902
35 changes: 31 additions & 4 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
name: Sample workflow for App Center action
on: [push, pull_request, workflow_dispatch, pull_request_target]
jobs:
run:
android:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
uses: actions/checkout@v2
- name: Get sample .apk for test purposes
run: wget --output-document ApiDemos-debug.apk https://github.com/appium/appium/blob/906350fd335f9485376214fdd17c7cdb6c9ff26b/sample-code/apps/ApiDemos-debug.apk?raw=true
run: wget https://github.com/appium/appium/blob/906350fd335f9485376214fdd17c7cdb6c9ff26b/sample-code/apps/ApiDemos-debug.apk?raw=true -O ApiDemos-debug.apk
- name: Get sample mappings.txt file for test purposes
run: wget https://gist.githubusercontent.com/loopj/43a4a3231f32c17ab9e3/raw/2181ad9ae926cd3d46ee9becabcb0cce668ef9c0/mapping.txt -O mappings.txt
- name: Upload artifact with provided release notes
uses: ./
with:
Expand Down Expand Up @@ -47,4 +49,29 @@ jobs:
group: Collaborators
file: ApiDemos-debug.apk
debug: true

- name: Upload apk artifact with mappings file
uses: ./
with:
appName: ${{ secrets.APP_NAME }}
token: ${{ secrets.API_TOKEN }}
group: Collaborators
file: ApiDemos-debug.apk
mappings: mappings.txt
releaseNotes: Has mappings
debug: true
ios:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Get sample .ipa file for test purposes
run: wget https://github.com/bitbar/test-samples/blob/master/apps/ios/bitbar-ios-sample.ipa?raw=true -O sample-ios-app.ipa
- name: Upload ipa artifact with symbols file
uses: ./
with:
appName: ${{ secrets.IOS_APP_NAME }}
token: ${{ secrets.IOS_API_TOKEN }}
group: Collaborators
file: sample-ios-app.ipa
releaseNotes: Has symbols
debug: true
15 changes: 9 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
FROM node:12.10.0-alpine
FROM node:14

WORKDIR /app
COPY . /app

RUN npm install -g [email protected] \
&& apk update \
&& apk add git \
&& apk add bash
RUN npm install -g [email protected]

RUN mkdir -p /usr/local/lib/aapt/
RUN wget -q "https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/4.0.1-6197926/aapt2-4.0.1-6197926-linux.jar" -O aapt2-all.jar \
&& mv aapt2-all.jar /usr/local/lib/aapt/aapt2-all.jar \
&& cd /usr/local/lib/aapt \
&& unzip -qq aapt2-all.jar \
&& ln -s /usr/local/lib/aapt/aapt2 /usr/local/bin/aapt2

RUN chmod +x /app/entrypoint.sh

ENTRYPOINT [ "/app/entrypoint.sh" ]

46 changes: 44 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,24 @@ This action uploads artifacts (.apk or .ipa) to Visual Studio App Center.
**Required** Artifact to upload (.apk or .ipa)

### `buildVersion`

Build version parameter required for .zip, .msi, .pkg and .dmg files

### buildNumber
### `buildNumber`

Build number parameter required for macOS .pkg and .dmg files

### `mappings`

Android mappings.txt file location. See [the documentation](https://developer.android.com/studio/build/shrink-code) for details

### `symbols`

iOS debug symbol file (.dSYM) location. See [the documentation](https://docs.microsoft.com/en-us/appcenter/diagnostics/ios-symbolication) for details

### `releaseNotes`

Release notes visible on release page
Release notes visible on App Center's Release page

### `gitReleaseNotes`

Expand All @@ -52,6 +62,7 @@ See Github Actions [documentation](https://docs.github.com/en/actions/creating-a

## Sample usage

Android:
```
name: Build, code quality, tests

Expand All @@ -77,6 +88,37 @@ jobs:
token: ${{secrets.APP_CENTER_TOKEN}}
group: Testers
file: app/build/outputs/apk/release/app-release-unsigned.apk
mappings: app/build/outputs/mappings/release/mappings.txt
notifyTesters: true
debug: false
```

iOS
```
name: Build, code quality, tests

on: [push]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1
- name: set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: build release
run: ./gradlew assembleRelease
- name: upload artefact to App Center
uses: wzieba/AppCenter-Github-Action@v1
with:
appName: wzieba/Sample-App
token: ${{secrets.APP_CENTER_TOKEN}}
group: Testers
file: path/to/iOS.ipa
symbols: path/to/crash_symbols.dSYM
notifyTesters: true
```
8 changes: 7 additions & 1 deletion action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ description: "GitHub Action that uploads artefacts for Visual Studio App Center"
author: "Wojciech Zięba <@wzieba>"
inputs:
appName:
description: "App name followed by username e.g. wzieba/Sample-App"
description: "App name preceded by the App Center's username e.g. wzieba/Sample-App"
required: true
token:
description: "Upload token - you can get one from appcenter.ms/settings"
Expand All @@ -29,6 +29,12 @@ inputs:
notifyTesters:
description: "If true, send an email notification to the distribution group"
required: false
mappings:
description: "Android mappings.txt file location"
required: false
symbols:
description: "iOS debug symbol file (.dSYM) location."
required: false
debug:
description: "If true, shows additional information from the action execution"
required: false
Expand Down
38 changes: 29 additions & 9 deletions entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ params=()
[ "${INPUT_NOTIFYTESTERS}" != true ] && params+=(--silent)
[ "${INPUT_DEBUG}" == true ] && params+=(--debug)
if [ -n "${INPUT_RELEASENOTES}" ]; then
RELEASE_NOTES=${INPUT_RELEASENOTES}
RELEASE_NOTES=${INPUT_RELEASENOTES}
elif [ $INPUT_GITRELEASENOTES ]; then
RELEASE_NOTES="$(git log -1 --pretty=short)"
RELEASE_NOTES="$(git log -1 --pretty=short)"
fi

if [ -n "${INPUT_BUILDVERSION}" ]; then
Expand All @@ -21,11 +21,31 @@ if [ -n "${INPUT_BUILDNUMBER}" ]; then
fi

for group in $INPUT_GROUP; do
if ${isFirst} ; then
isFirst=false
appcenter distribute release --token "$INPUT_TOKEN" --app "$INPUT_APPNAME" --group $group --file "$INPUT_FILE" --release-notes "$RELEASE_NOTES" "${params[@]}"
releaseId=$(appcenter distribute releases list --token "$INPUT_TOKEN" --app "$INPUT_APPNAME" | grep ID | tr -s ' ' | cut -f2 -d ' ' | sort -n -r | head -1)
else
appcenter distribute releases add-destination --token "$INPUT_TOKEN" -d $group -t group -r $releaseId --app "$INPUT_APPNAME" "${params[@]}"
fi
if ${isFirst}; then
isFirst=false
appcenter distribute release --token "$INPUT_TOKEN" --app "$INPUT_APPNAME" --group $group --file "$INPUT_FILE" --release-notes "$RELEASE_NOTES" "${params[@]}"
releaseId=$(appcenter distribute releases list --token "$INPUT_TOKEN" --app "$INPUT_APPNAME" | grep ID | tr -s ' ' | cut -f2 -d ' ' | sort -n -r | head -1)
else
appcenter distribute releases add-destination --token "$INPUT_TOKEN" -d $group -t group -r $releaseId --app "$INPUT_APPNAME" "${params[@]}"
fi
done

crashUploadParams=()
[ "${INPUT_DEBUG}" == true ] && crashUploadParams+=(--debug)

if [ "$INPUT_MAPPINGS" ]; then
APP_VERSION_NAME=$(/usr/local/bin/aapt2 dump badging "$INPUT_FILE" | grep "versionName=" | sed -e "s/.*versionName='//" -e "s/' .*//")
APP_VERSION_CODE=$(/usr/local/bin/aapt2 dump badging "$INPUT_FILE" | grep "versionCode=" | sed -e "s/.*versionCode='//" -e "s/' .*//")
if ($INPUT_DEBUG); then
echo "Upload mappings $INPUT_MAPPINGS -> $APP_VERSION_NAME -> $APP_VERSION_CODE"
fi

appcenter crashes upload-mappings --token "$INPUT_TOKEN" --app "$INPUT_APPNAME" --mapping "$INPUT_MAPPINGS" --version-name "$APP_VERSION_NAME" --version-code "$APP_VERSION_CODE" "${crashUploadParams[@]}"
fi

if [ "$INPUT_SYMBOLS" ]; then
if ($INPUT_DEBUG); then
echo "Upload symbols $INPUT_SYMBOLS"
fi
appcenter crashes upload-symbols --token "$INPUT_TOKEN" --app "$INPUT_APPNAME" --symbol "$INPUT_SYMBOLS" "${crashUploadParams[@]}"
fi