-
Notifications
You must be signed in to change notification settings - Fork 32
171 lines (155 loc) · 6 KB
/
release-docs-bundles.yml
File metadata and controls
171 lines (155 loc) · 6 KB
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
164
165
166
167
168
169
170
171
on:
workflow_call:
inputs:
version:
required: false
type: string
overwrite:
required: false
type: boolean
default: false
release_channel:
required: true
type: string
default: releases
create_release:
required: false
type: boolean
default: true
secrets:
AWS_S3_RW_ROLE:
required: true
AWS_CDN_RW_ROLE:
required: true
AWS_CDN_DISTRIBUTION_ID:
required: true
workflow_dispatch:
inputs:
version:
description: 'Release version (e.g., "2026.02.0-139"). Leave empty to use RELEASE_VERSION from _environment'
required: false
type: string
overwrite:
description: 'Overwrite existing release if it exists'
required: false
type: boolean
default: false
release_channel:
description: "Release interval, e.g. 'dailies', 'releases'"
options:
- dailies
- staging
- releases
default: releases
required: true
type: choice
create_release:
description: 'Create a new GitHub release (uncheck to upload assets to an existing release)'
required: false
type: boolean
default: true
name: Release Documentation Bundles
jobs:
build-docs:
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write
outputs:
release_version: ${{ steps.get-version.outputs.release_version }}
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
repository: posit-dev/positron-website
ref: main
- name: Get Release Version
id: get-version
run: |
if [ -n "${{ inputs.version }}" ]; then
echo "release_version=${{ inputs.version }}" >> $GITHUB_OUTPUT
else
RELEASE_VERSION=$(grep '^RELEASE_VERSION=' $GITHUB_WORKSPACE/_environment | cut -d '=' -f 2 | tr -d '"')
echo "release_version=${RELEASE_VERSION}" >> $GITHUB_OUTPUT
fi
- name: Get Quarto Version
id: get-quarto-version
run: |
QUARTO_VERSION=$(grep 'version = ' netlify.toml | sed 's/.*version = "v\?\([^"]*\)".*/\1/')
echo "quarto_version=${QUARTO_VERSION}" >> $GITHUB_OUTPUT
- name: Set up Quarto
uses: quarto-dev/quarto-actions/setup@v2
with:
version: ${{ steps.get-quarto-version.outputs.quarto_version }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Render public Positron docs
uses: quarto-dev/quarto-actions/render@v2
env:
QUARTO_PROFILE: positron
RELEASE_VERSION: ${{ steps.get-version.outputs.release_version }}
- name: Render Workbench docs
uses: quarto-dev/quarto-actions/render@v2
env:
QUARTO_PROFILE: workbench
RELEASE_VERSION: ${{ steps.get-version.outputs.release_version }}
- name: Create docs bundles
run: |
cd _site
zip -r ../positron-docs-${{ steps.get-version.outputs.release_version }}.zip .
cd ../_site-workbench
zip -r ../positron-workbench-docs-${{ steps.get-version.outputs.release_version }}.zip .
- name: Delete existing release
if: ${{ inputs.overwrite }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release delete ${{ steps.get-version.outputs.release_version }} --yes --cleanup-tag || true
- name: Create Release
if: ${{ inputs.create_release }}
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.get-version.outputs.release_version }}
name: ${{ steps.get-version.outputs.release_version }}
body: |
Documentation for https://github.com/posit-dev/positron/releases/tag/${{ steps.get-version.outputs.release_version }}
files: |
positron-docs-${{ steps.get-version.outputs.release_version }}.zip
positron-workbench-docs-${{ steps.get-version.outputs.release_version }}.zip
- name: Upload assets to existing release
if: ${{ !inputs.create_release }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload ${{ steps.get-version.outputs.release_version }} \
--repo ${{ github.repository }} \
positron-docs-${{ steps.get-version.outputs.release_version }}.zip \
positron-workbench-docs-${{ steps.get-version.outputs.release_version }}.zip
- name: Configure AWS Credentials for S3
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_S3_RW_ROLE }}
aws-region: us-east-1
- name: Upload docs bundles to S3
run: |
S3_PREFIX="s3://posit-positron-downloads/positron/${{ inputs.release_channel }}/docs"
aws s3 cp "positron-docs-${{ steps.get-version.outputs.release_version }}.zip" "${S3_PREFIX}/positron-docs-${{ steps.get-version.outputs.release_version }}.zip" --no-progress
aws s3 cp "positron-workbench-docs-${{ steps.get-version.outputs.release_version }}.zip" "${S3_PREFIX}/positron-workbench-docs-${{ steps.get-version.outputs.release_version }}.zip" --no-progress
- name: Configure AWS Credentials for CloudFront
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_CDN_RW_ROLE }}
aws-region: us-east-1
- name: Invalidate CloudFront Cache
run: |
aws cloudfront create-invalidation \
--distribution-id ${{ secrets.AWS_CDN_DISTRIBUTION_ID }} \
--paths "/positron/${{ inputs.release_channel }}/docs/*"
update-all-releases:
needs: build-docs
if: ${{ inputs.release_channel == 'releases' }}
uses: ./.github/workflows/update-all-releases-json.yml
secrets: inherit
with:
release_tag: ${{ needs.build-docs.outputs.release_version }}
release_channel: ${{ inputs.release_channel }}