-
Notifications
You must be signed in to change notification settings - Fork 437
163 lines (141 loc) · 6.5 KB
/
publish.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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
name: "Publish all libs, Arrow-stack and Docs"
on:
push:
tags:
- '**'
env:
BASEDIR: ${{github.workspace}}/arrow-libs
GRADLE_OPTS: -Dorg.gradle.daemon=false -Dorg.gradle.parallel=false -Dorg.gradle.jvmargs="-Xmx5g -XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8"
SONATYPE_USER: ${{ secrets.SONATYPE_USER }}
SONATYPE_PWD: ${{ secrets.SONATYPE_PWD }}
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.ORG_GRADLE_PROJECT_signingKey }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_signingPassword }}
OSS_USER: '${{ secrets.OSS_USER }}'
OSS_TOKEN: '${{ secrets.OSS_TOKEN }}'
OSS_STAGING_PROFILE_ID: '${{ secrets.OSS_STAGING_PROFILE_ID }}'
SIGNING_KEY_NAME: '${{ secrets.SIGNING_KEY_NAME }}'
SIGNING_KEY_ID: '${{ secrets.SIGNING_KEY_ID }}'
SIGNING_KEY_PASSPHRASE: '${{ secrets.SIGNING_KEY_PASSPHRASE }}'
SIGNING_KEY: '${{ secrets.SIGNING_KEY }}'
GRADLE_PUBLISH_KEY: '${{ secrets.GRADLE_PUBLISH_KEY }}'
GRADLE_PUBLISH_SECRET: '${{ secrets.GRADLE_PUBLISH_SECRET }}'
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_CLOUDFRONT_ID: ${{ secrets.AWS_CLOUDFRONT_ID }}
AWS_DEFAULT_REGION: eu-west-1
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
JEKYLL_ENV: production
S3_BUCKET: ${{ secrets.S3_BUCKET }}
jobs:
publish:
timeout-minutes: 150
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Java
uses: actions/setup-java@v3.3.0
with:
distribution: 'zulu'
java-version: 11
- name: Build
uses: gradle/gradle-build-action@v2.2.0
with:
arguments: assemble -Pkotlin.mpp.enableCompatibilityMetadataVariant=true --full-stacktrace
- name: Get Arrow version
id: version
run: echo "::set-output name=arrow::$(head -n 1 build/semver/version.txt)"
- name: Upload reports
uses: actions/upload-artifact@v3.1.0
with:
name: 'reports-${{ matrix.os }}'
path: '**/build/reports/**'
- name: Publish alpha/beta/rc version
uses: gradle/gradle-build-action@v2.2.0
if: |
contains(steps.version.outputs.arrow, 'alpha') ||
contains(steps.version.outputs.arrow, 'beta') ||
contains(steps.version.outputs.arrow, 'rc')
with:
arguments: --full-stacktrace -Pkotlin.mpp.enableCompatibilityMetadataVariant=true publishToSonatype closeAndReleaseSonatypeStagingRepository
- name: Publish final version
uses: gradle/gradle-build-action@v2.2.0
if: |
!contains(steps.version.outputs.arrow, 'alpha') &&
!contains(steps.version.outputs.arrow, 'beta') &&
!contains(steps.version.outputs.arrow, 'rc')
with:
arguments: --full-stacktrace -Pkotlin.mpp.enableCompatibilityMetadataVariant=true publishToSonatype closeSonatypeStagingRepository
- name: Prepare environment
working-directory: arrow-site
run: |
mkdir $BASEDIR/logs
brew install tree
bundle config set --local path 'vendor/bundle'
bundle install --gemfile Gemfile
- name: Create API doc
uses: gradle/gradle-build-action@v2.2.0
with:
arguments: --full-stacktrace -Pkotlin.mpp.enableCompatibilityMetadataVariant=true dokkaGfm
- name: Build release directory (/docs)
working-directory: arrow-site
if: |
!contains(steps.version.outputs.arrow, 'alpha') &&
!contains(steps.version.outputs.arrow, 'beta') &&
!contains(steps.version.outputs.arrow, 'rc')
run: |
bundle exec jekyll build -b docs -s docs
tree _site > $BASEDIR/logs/content_docs-${{ steps.version.outputs.arrow }}.log
- name: Publish documentation (/docs)
working-directory: arrow-site
if: |
!contains(steps.version.outputs.arrow, 'alpha') &&
!contains(steps.version.outputs.arrow, 'beta') &&
!contains(steps.version.outputs.arrow, 'rc')
run: |
echo ">>> Latest release" >> $BASEDIR/logs/aws_sync.log
${GITHUB_WORKSPACE}/.github/scripts/sync-docs-with-aws.sh
- name: Build release directory (/docs/<major.minor>)
working-directory: arrow-site
if: |
!contains(steps.version.outputs.arrow, 'alpha') &&
!contains(steps.version.outputs.arrow, 'beta') &&
!contains(steps.version.outputs.arrow, 'rc')
run: |
bundle exec jekyll build -b docs/${{ steps.version.outputs.arrow }} -s docs
tree _site > $BASEDIR/logs/content_docs-${{ steps.version.outputs.arrow }}.log
- name: Publish release directory (/docs/<major.minor>)
working-directory: arrow-site
if: |
!contains(steps.version.outputs.arrow, 'alpha') &&
!contains(steps.version.outputs.arrow, 'beta') &&
!contains(steps.version.outputs.arrow, 'rc')
run: |
aws s3 sync _site s3://$S3_BUCKET/docs/${{ steps.version.outputs.arrow }} --delete --exclude "/CNAME" --exclude "/code/*" --exclude "/index.html" --exclude "/redirects.json" >> $BASEDIR/logs/aws_sync.log
- name: Build latest version (/docs/next)
working-directory: arrow-site
run: |
bundle exec jekyll build -b docs/next -s docs
tree _site > $BASEDIR/logs/content_docs-next.log
- name: Publish latest version (/docs/next)
working-directory: arrow-site
run: |
aws s3 sync _site s3://$S3_BUCKET/docs/next --delete --exclude "/CNAME" --exclude "/code/*" --exclude "/index.html" --exclude "/redirects.json" >> $BASEDIR/logs/aws_sync.log
- name: Publish sitemap.xml
if: |
!contains(steps.version.outputs.arrow, 'alpha') &&
!contains(steps.version.outputs.arrow, 'beta') &&
!contains(steps.version.outputs.arrow, 'rc')
run: |
${GITHUB_WORKSPACE}/.github/scripts/create-sitemap.sh > sitemap.xml
aws s3 cp sitemap.xml s3://$S3_BUCKET/sitemap.xml >> $BASEDIR/logs/aws_sync.log
- name: Invalidate CloudFront cache
run: aws cloudfront create-invalidation --distribution-id $AWS_CLOUDFRONT_ID --paths "/*"
- name: List S3
run: aws s3 ls s3://$S3_BUCKET --recursive --summarize > $BASEDIR/logs/site-content.log
- uses: actions/upload-artifact@v3
with:
name: logs
path: arrow-libs/logs.
- name: Stop Gradle daemons
run: ./gradlew -Pkotlin.mpp.enableCompatibilityMetadataVariant=true --stop