1+ # Thanks to https://github.com/coil-kt/coil/blob/master/.github/workflows/ci.yml
2+ name : CI
3+
4+ on :
5+ push :
6+ tags :
7+ - ' *'
8+ pull_request :
9+
10+ jobs :
11+ publish_archives :
12+ name : Publish Archives
13+ if : startsWith(github.ref, 'refs/tags/')
14+
15+ strategy :
16+ matrix :
17+ os : [macOS-latest]
18+
19+ runs-on : ${{matrix.os}}
20+
21+ steps :
22+ - name : Checkout the repo
23+ uses : actions/checkout@v2
24+
25+ - uses : actions/setup-java@v2
26+ with :
27+ distribution : ' adopt'
28+ java-version : ' 15'
29+
30+ - name : Copy CI gradle.properties
31+ run : mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
32+
33+ - name : Checkout Gradle Build Cache
34+ uses : actions/cache@v2
35+ with :
36+ path : |
37+ ~/.gradle/caches
38+ ~/.gradle/wrapper
39+ !~/.gradle/wrapper/dists/**/gradle*.zip
40+ key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
41+ restore-keys : |
42+ gradle-${{ runner.os }}-
43+
44+ - name : Prepare Sonatype Gradle properties
45+ run : |
46+ echo "signing.keyId=${{ secrets.SONATYPE_GPG_KEY }}" >> ~/.gradle/gradle.properties
47+ echo "signing.password=${{ secrets.SONATYPE_GPG_PASS }}" >> ~/.gradle/gradle.properties
48+ echo "${{ secrets.SONATYPE_GPG_FILE }}" > opensource.gpg.asc
49+ gpg -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch "opensource.gpg.asc" > "$HOME/.gradle/opensource.gpg"
50+ echo "signing.secretKeyRingFile=$HOME/.gradle/opensource.gpg" >> ~/.gradle/gradle.properties
51+
52+ - name : Prepare Sonatype Gradle properties - Secret
53+ run : |
54+ echo "${{ secrets.SONATYPE_GPG_FILE }}" > opensource.gpg.asc
55+ gpg -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch "opensource.gpg.asc" > ~/.gradle/opensource.gpg
56+ echo "signing.secretKeyRingFile=$HOME/.gradle/opensource.gpg" >> ~/.gradle/gradle.properties
57+
58+ - name : Publish the macOS artifacts
59+ if : matrix.os == 'macOS-latest'
60+ env :
61+ ORG_GRADLE_PROJECT_mavenCentralUsername : ${{ secrets.NEXUS_USERNAME }}
62+ ORG_GRADLE_PROJECT_mavenCentralPassword : ${{ secrets.NEXUS_PASSWORD }}
63+ run : ./gradlew publishAllPublicationsToMavenRepository --no-daemon
64+
65+ - name : Publish the linux artifact
66+ if : matrix.os == 'ubuntu-18.04'
67+ env :
68+ ORG_GRADLE_PROJECT_mavenCentralUsername : ${{ secrets.NEXUS_USERNAME }}
69+ ORG_GRADLE_PROJECT_mavenCentralPassword : ${{ secrets.NEXUS_PASSWORD }}
70+ run : ./gradlew publishLinuxX64PublicationToMavenRepository
71+
72+ build :
73+ name : Build
74+ runs-on : macos-latest
75+ steps :
76+ - name : Checkout
77+ uses : actions/checkout@v2
78+ with :
79+ fetch-depth : 100
80+
81+ - uses : actions/setup-java@v2
82+ with :
83+ distribution : ' adopt'
84+ java-version : ' 15'
85+
86+ - name : Validate gradle wrapper
87+ uses : gradle/wrapper-validation-action@v1
88+
89+ - name : Copy CI gradle.properties
90+ run : mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
91+
92+ - name : Checkout Gradle Build Cache
93+ uses : actions/cache@v2
94+ with :
95+ path : |
96+ ~/.gradle/caches
97+ ~/.gradle/wrapper
98+ !~/.gradle/wrapper/dists/**/gradle*.zip
99+ key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
100+ restore-keys : |
101+ gradle-${{ runner.os }}-
102+
103+ - name : Build Debug
104+ run : |
105+ ./gradlew clean || true
106+ ./gradlew app:assembleDebug --stacktrace
107+
108+ - name : Run Lint
109+ if : github.event_name == 'pull_request'
110+ run : ./gradlew lintDebug
111+
112+ - name : Detekt
113+ if : github.event_name == 'pull_request'
114+ run : ./gradlew detekt
115+
116+ - name : Setup Ruby
117+ if : github.event_name == 'pull_request'
118+ uses : ruby/setup-ruby@v1
119+ with :
120+ ruby-version : ' 2.6.3'
121+ bundler-cache : true
122+
123+ - name : Run Danger
124+ if : github.event_name == 'pull_request'
125+ run : |
126+ gem install danger
127+ bundle exec danger --dangerfile=Dangerfile --danger_id=danger-pr
128+ env :
129+ DANGER_GITHUB_API_TOKEN : ${{ secrets.GITHUB_TOKEN }}
130+
131+ - name : Prepare Keystore and Local.
132+ if : startsWith(github.ref, 'refs/tags/')
133+ run : |
134+ echo "${{ secrets.KEYSTORE }}" > opensource.jks.asc
135+ gpg -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch "opensource.jks.asc" > "app/opensource.jks"
136+ echo "${{ secrets.SIGNING_GRADLE }}" > signing.gradle.asc
137+ gpg -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch "signing.gradle.asc" > "app/signing.gradle"
138+ echo "openSource.signing.file=signing.gradle" >> local.properties
139+
140+ - name : Build Release App
141+ if : startsWith(github.ref, 'refs/tags/')
142+ run : ./gradlew app:assembleRelease app:bundleRelease
143+
144+ - name : Collect artifacts
145+ run : |
146+ COLLECT_PWD=${PWD}
147+ mkdir -p "artifacts"
148+ find . -name "*.apk" -type f -exec cp {} "artifacts" \;
149+ find . -name "*.aab" -type f -exec cp {} "artifacts" \;
150+
151+ - name : Archive Artifacts
152+ uses : actions/upload-artifact@v2
153+ with :
154+ name : " App-Artifacts"
155+ path : artifacts/*
156+
157+ - name : Build Changelog
158+ id : github_release
159+ uses : mikepenz/release-changelog-builder-action@v2
160+ if : startsWith(github.ref, 'refs/tags/')
161+ with :
162+ configuration : " .github/config/configuration.json"
163+ ignorePreReleases : ${{ !contains(github.ref, '-') }}
164+ env :
165+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
166+
167+ - name : Release
168+ uses : softprops/action-gh-release@91409e712cf565ce9eff10c87a8d1b11b81757ae
169+ if : startsWith(github.ref, 'refs/tags/')
170+ with :
171+ body : ${{steps.github_release.outputs.changelog}}
172+ prerelease : ${{ contains(github.ref, '-rc') || contains(github.ref, '-b') || contains(github.ref, '-a') }}
173+ files : artifacts/*
174+ env :
175+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments