-
Notifications
You must be signed in to change notification settings - Fork 7
147 lines (136 loc) · 6.19 KB
/
release-workflow.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
name: Release
env:
SONATYPE_USERNAME: embrace-io
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
MAVEN_QA_USER: github
MAVEN_QA_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
mavenSigningKeyId: ${{ secrets.MAVEN_ANDROID_SIGNING_KEY }}
mavenSigningKeyRingFileEncoded: ${{ secrets.MAVEN_ANDROID_GPG_KEY }}
mavenSigningKeyPassword: ${{ secrets.MAVEN_ANDROID_SIGNING_PASSWORD }}
on:
workflow_dispatch:
inputs:
# NTH: show current version (read-only) with current version that was pre-released
# current_version:
# description: 'Version to release'
# required: true
next_version:
description: 'Next Version (Do NOT include -SNAPSHOT, will be added automatically)'
required: true
jobs:
release:
runs-on: ubuntu-latest
# strategy:
# matrix:
# jdk-version: ["11"]
# ndk-version: ["21.4.7075529"]
steps:
# - name: Decode Keystore
# run: |
# mkdir "$RUNNER_TEMP"/keystore
# echo $mavenSigningKeyRingFileEncoded | base64 -di > "$RUNNER_TEMP"/keystore/2DE631C1.gpg
# echo "mavenSigningKeyRingFile=$RUNNER_TEMP/keystore/2DE631C1.gpg" >> $GITHUB_ENV
#
# - name: Checkout Branch
# uses: actions/checkout@v3
# with:
# fetch-depth: 0
# token: ${{ secrets.CD_GITHUB_TOKEN }}
#
# - uses: actions/cache@v3
# with:
# path: |
# ~/.gradle/caches
# ~/.gradle/wrapper
# ~/.m2/repository
# ~/.sonar/cache
# key: ${{ runner.os }}-gradle-jdk${{ matrix.jdk-version }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
# restore-keys: |
# ${{ runner.os }}-gradle
#
# - name: Install JDK ${{ matrix.jdk-version }}
# uses: actions/setup-java@v3
# with:
# distribution: 'adopt'
# java-version: ${{ matrix.jdk-version }}
#
# - name: Setup NDK ${{ matrix.ndk-version }}
# run: |
# export ANDROID_ROOT=/usr/local/lib/android
# export ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
# export ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk-bundle
# ln -sfn $ANDROID_SDK_ROOT/ndk/${{ matrix.ndk-version }} $ANDROID_NDK_ROOT
#
# - name: Validate Gradle wrapper
# uses: gradle/wrapper-validation-action@v1
#
# # Build the entire project, run the tests, and run all static analysis
# - name: Gradle Build
# run: ./gradlew assembleRelease check --stacktrace
#
# - name: Archive Test Results
# if: ${{ always() }}
# uses: actions/upload-artifact@v3
# with:
# name: android-sdk-test-results
# path: embrace-android-sdk/build/reports/tests/
- name: Gradlew Release
run: |
# git config --global user.name 'embrace-ci[bot]'
# git config --global user.email '[email protected]'
# git config --global url."https://${{ secrets.CD_GITHUB_USER }}:${{ secrets.CD_GITHUB_TOKEN }}@github.com".insteadOf "https://github.com"
# sed -i -r "s#version = ([^\']+)#version = ${{ github.event.inputs.current_version }}#" gradle.properties
# git add gradle.properties
# git commit -m "CI/CD: change version to be released: ${{ github.event.inputs.current_version }}"
# git push
./gradlew findSonatypeStagingRepository releaseSonatypeStagingRepository -Dorg.gradle.parallel=false --stacktrace
- name: Generate Documentation
run: ./gradlew dokkaHtml
- name: Configure git
run: |
git config --global user.name 'embrace-ci[bot]'
git config --global user.email '[email protected]'
git config --global url."https://${{ secrets.CD_GITHUB_USER }}:${{ secrets.CD_GITHUB_TOKEN }}@github.com".insteadOf "https://github.com"
- name: Publish gh-pages
run: |
mv docs .docs-newly-generated # new docs generated by previous step
git checkout gh-pages
git rm -rf docs # old docs on gh-pages branch
mv .docs-newly-generated docs
date > docs/version.txt
echo ${{ github.sha }} >> docs/version.txt
echo ${{ github.event.release.tag_name }} >> docs/version.txt
git add -f docs
git config --global user.name "embrace-ci"
git config --global user.email "[email protected]"
git commit --allow-empty --message 'CI/CD: Automatically generated documentation for ${{ github.event.release.tag_name }}' docs/
git push --force origin gh-pages
- name: Record SDK Version History (${{ github.event.inputs.current_version }})
run: |
curl -X POST ${{ vars.SDK_VERSION_URL }}/android/version/ -H 'X-Embrace-CI: ${{ secrets.SDK_VERSION_TOKEN }}' -H 'Content-Type: application/json' -d '{"version": "${{ github.event.inputs.current_version }}"}'
- name: Set next SDK version
run: |
git checkout master
sed -i -r "s#version = ([^\']+)#version = ${{ github.event.inputs.next_version }}-SNAPSHOT#" gradle.properties
git add gradle.properties
git commit -m "CI/CD: set next version: ${{ github.event.inputs.next_version }}"
git push
# - name: Checkout Swazzler
# uses: actions/checkout@v3
# with:
# repository: embrace-io/embrace-swazzler3
# ref: master
# path: ./embrace-swazzler3
# token: ${{ secrets.CD_GITHUB_TOKEN }}
#
# - name: Swazzler Release
# run: |
# cd ./embrace-swazzler3
# ./gradlew clean release -Dorg.gradle.parallel=false -Prelease.useAutomaticVersion=true -Prelease.releaseVersion=${{ github.event.inputs.current_version }} -Prelease.newVersion=${{ github.event.inputs.next_version }}-SNAPSHOT --stacktrace
- name: Cleanup Gradle Cache
# Based on https://docs.github.com/en/actions/guides/building-and-testing-java-with-gradle#caching-dependencies
# Remove some files from the Gradle cache, so they aren't cached by GitHub Actions.
# Restoring these files from a GitHub Actions cache might cause problems for future builds.
run: |
rm -f ~/.gradle/caches/modules-2/modules-2.lock
rm -f ~/.gradle/caches/modules-2/gc.properties