Skip to content

Commit c20b809

Browse files
authored
Merge pull request #736 from rstudio/dev
Merge dev to main
2 parents 6b25cb1 + 346e9a5 commit c20b809

File tree

5 files changed

+106
-18
lines changed

5 files changed

+106
-18
lines changed

.github/workflows/build-bake-preview.yaml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ jobs:
2323
WORKBENCH_DAILY_VERSION: ${{ steps.get-version.outputs.WORKBENCH_DAILY_VERSION }}
2424
WORKBENCH_PREVIEW_VERSION: ${{ steps.get-version.outputs.WORKBENCH_PREVIEW_VERSION }}
2525
PACKAGE_MANAGER_DAILY_VERSION: ${{ steps.get-version.outputs.PACKAGE_MANAGER_DAILY_VERSION }}
26+
PACKAGE_MANAGER_PREVIEW_VERSION: ${{ steps.get-version.outputs.PACKAGE_MANAGER_PREVIEW_VERSION }}
2627
CONNECT_DAILY_VERSION: ${{ steps.get-version.outputs.CONNECT_DAILY_VERSION }}
2728

2829
steps:
@@ -51,6 +52,8 @@ jobs:
5152
echo "WORKBENCH_PREVIEW_VERSION=$WORKBENCH_PREVIEW_VERSION" >> $GITHUB_OUTPUT
5253
PACKAGE_MANAGER_DAILY_VERSION=$(just -f ci.Justfile get-version package-manager --type=daily --local)
5354
echo "PACKAGE_MANAGER_DAILY_VERSION=$PACKAGE_MANAGER_DAILY_VERSION" >> $GITHUB_OUTPUT
55+
PACKAGE_MANAGER_PREVIEW_VERSION=$(just -f ci.Justfile get-version package-manager --type=preview --local)
56+
echo "PACKAGE_MANAGER_PREVIEW_VERSION=$PACKAGE_MANAGER_PREVIEW_VERSION" >> $GITHUB_OUTPUT
5457
CONNECT_DAILY_VERSION=$(just -f ci.Justfile get-version connect --type=daily --local)
5558
echo "CONNECT_DAILY_VERSION=$CONNECT_DAILY_VERSION" >> $GITHUB_OUTPUT
5659
@@ -64,6 +67,7 @@ jobs:
6467
WORKBENCH_DAILY_VERSION: ${{ needs.versions.outputs.WORKBENCH_DAILY_VERSION }}
6568
WORKBENCH_PREVIEW_VERSION: ${{ needs.versions.outputs.WORKBENCH_PREVIEW_VERSION }}
6669
PACKAGE_MANAGER_DAILY_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_DAILY_VERSION }}
70+
PACKAGE_MANAGER_PREVIEW_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_PREVIEW_VERSION }}
6771
CONNECT_DAILY_VERSION: ${{ needs.versions.outputs.CONNECT_DAILY_VERSION }}
6872
BRANCH: ${{ github.head_ref || github.ref_name }}
6973

@@ -107,6 +111,7 @@ jobs:
107111
WORKBENCH_DAILY_VERSION: ${{ needs.versions.outputs.WORKBENCH_DAILY_VERSION }}
108112
WORKBENCH_PREVIEW_VERSION: ${{ needs.versions.outputs.WORKBENCH_PREVIEW_VERSION }}
109113
PACKAGE_MANAGER_DAILY_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_DAILY_VERSION }}
114+
PACKAGE_MANAGER_PREVIEW_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_PREVIEW_VERSION }}
110115
CONNECT_DAILY_VERSION: ${{ needs.versions.outputs.CONNECT_DAILY_VERSION }}
111116
BRANCH: ${{ github.head_ref || github.ref_name }}
112117

@@ -144,6 +149,7 @@ jobs:
144149
WORKBENCH_DAILY_VERSION: ${{ needs.versions.outputs.WORKBENCH_DAILY_VERSION }}
145150
WORKBENCH_PREVIEW_VERSION: ${{ needs.versions.outputs.WORKBENCH_PREVIEW_VERSION }}
146151
PACKAGE_MANAGER_DAILY_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_DAILY_VERSION }}
152+
PACKAGE_MANAGER_PREVIEW_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_PREVIEW_VERSION }}
147153
CONNECT_DAILY_VERSION: ${{ needs.versions.outputs.CONNECT_DAILY_VERSION }}
148154
BRANCH: ${{ github.head_ref || github.ref_name }}
149155

@@ -171,6 +177,44 @@ jobs:
171177
dockerhub-username: ${{ secrets.DOCKER_HUB_USERNAME }}
172178
dockerhub-token: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
173179

180+
package-manager-preview:
181+
needs: [versions]
182+
name: Package Manager - Preview
183+
runs-on: ubuntu-latest-4x
184+
185+
env:
186+
target: "package-manager-preview"
187+
WORKBENCH_DAILY_VERSION: ${{ needs.versions.outputs.WORKBENCH_DAILY_VERSION }}
188+
WORKBENCH_PREVIEW_VERSION: ${{ needs.versions.outputs.WORKBENCH_PREVIEW_VERSION }}
189+
PACKAGE_MANAGER_DAILY_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_DAILY_VERSION }}
190+
PACKAGE_MANAGER_PREVIEW_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_PREVIEW_VERSION }}
191+
CONNECT_DAILY_VERSION: ${{ needs.versions.outputs.CONNECT_DAILY_VERSION }}
192+
BRANCH: ${{ github.head_ref || github.ref_name }}
193+
194+
concurrency:
195+
group: bake-package-manager-preview-${{ github.ref }}
196+
cancel-in-progress: true
197+
198+
steps:
199+
- name: Checkout
200+
uses: actions/checkout@v4
201+
202+
- name: Set up Docker Buildx
203+
uses: docker/setup-buildx-action@v3
204+
id: setup-buildx
205+
with:
206+
buildkitd-config: ./share/buildkitd.toml
207+
208+
- name: Build, Test, and Push
209+
uses: ./.github/actions/bake-test-push
210+
with:
211+
target: ${{ env.target }}
212+
bakefile: docker-bake.preview.hcl
213+
push-image: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/dev-rspm' }}
214+
ghcr-token: ${{ secrets.GITHUB_TOKEN }}
215+
dockerhub-username: ${{ secrets.DOCKER_HUB_USERNAME }}
216+
dockerhub-token: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
217+
174218
package-manager-daily:
175219
needs: [versions]
176220
name: Package Manager - Daily
@@ -181,6 +225,7 @@ jobs:
181225
WORKBENCH_DAILY_VERSION: ${{ needs.versions.outputs.WORKBENCH_DAILY_VERSION }}
182226
WORKBENCH_PREVIEW_VERSION: ${{ needs.versions.outputs.WORKBENCH_PREVIEW_VERSION }}
183227
PACKAGE_MANAGER_DAILY_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_DAILY_VERSION }}
228+
PACKAGE_MANAGER_PREVIEW_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_PREVIEW_VERSION }}
184229
CONNECT_DAILY_VERSION: ${{ needs.versions.outputs.CONNECT_DAILY_VERSION }}
185230
BRANCH: ${{ github.head_ref || github.ref_name }}
186231

@@ -218,6 +263,7 @@ jobs:
218263
WORKBENCH_DAILY_VERSION: ${{ needs.versions.outputs.WORKBENCH_DAILY_VERSION }}
219264
WORKBENCH_PREVIEW_VERSION: ${{ needs.versions.outputs.WORKBENCH_PREVIEW_VERSION }}
220265
PACKAGE_MANAGER_DAILY_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_DAILY_VERSION }}
266+
PACKAGE_MANAGER_PREVIEW_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_PREVIEW_VERSION }}
221267
CONNECT_DAILY_VERSION: ${{ needs.versions.outputs.CONNECT_DAILY_VERSION }}
222268
BRANCH: ${{ github.head_ref || github.ref_name }}
223269

@@ -255,6 +301,7 @@ jobs:
255301
WORKBENCH_DAILY_VERSION: ${{ needs.versions.outputs.WORKBENCH_DAILY_VERSION }}
256302
WORKBENCH_PREVIEW_VERSION: ${{ needs.versions.outputs.WORKBENCH_PREVIEW_VERSION }}
257303
PACKAGE_MANAGER_DAILY_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_DAILY_VERSION }}
304+
PACKAGE_MANAGER_PREVIEW_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_PREVIEW_VERSION }}
258305
CONNECT_DAILY_VERSION: ${{ needs.versions.outputs.CONNECT_DAILY_VERSION }}
259306
BRANCH: ${{ github.head_ref || github.ref_name }}
260307

@@ -292,6 +339,7 @@ jobs:
292339
WORKBENCH_DAILY_VERSION: ${{ needs.versions.outputs.WORKBENCH_DAILY_VERSION }}
293340
WORKBENCH_PREVIEW_VERSION: ${{ needs.versions.outputs.WORKBENCH_PREVIEW_VERSION }}
294341
PACKAGE_MANAGER_DAILY_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_DAILY_VERSION }}
342+
PACKAGE_MANAGER_PREVIEW_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_PREVIEW_VERSION }}
295343
CONNECT_DAILY_VERSION: ${{ needs.versions.outputs.CONNECT_DAILY_VERSION }}
296344
BRANCH: ${{ github.head_ref || github.ref_name }}
297345

@@ -329,6 +377,7 @@ jobs:
329377
WORKBENCH_DAILY_VERSION: ${{ needs.versions.outputs.WORKBENCH_DAILY_VERSION }}
330378
WORKBENCH_PREVIEW_VERSION: ${{ needs.versions.outputs.WORKBENCH_PREVIEW_VERSION }}
331379
PACKAGE_MANAGER_DAILY_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_DAILY_VERSION }}
380+
PACKAGE_MANAGER_PREVIEW_VERSION: ${{ needs.versions.outputs.PACKAGE_MANAGER_PREVIEW_VERSION }}
332381
CONNECT_DAILY_VERSION: ${{ needs.versions.outputs.CONNECT_DAILY_VERSION }}
333382
BRANCH: ${{ github.head_ref || github.ref_name }}
334383

Justfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ preview-bake target branch="$(git branch --show-current)":
5858
WORKBENCH_DAILY_VERSION=$(just -f ci.Justfile get-version workbench --type=daily --local) \
5959
WORKBENCH_PREVIEW_VERSION=$(just -f ci.Justfile get-version workbench --type=preview --local) \
6060
PACKAGE_MANAGER_DAILY_VERSION=$(just -f ci.Justfile get-version package-manager --type=daily --local) \
61+
PACKAGE_MANAGER_PREVIEW_VERSION=$(just -f ci.Justfile get-version package-manager --type=preview --local) \
6162
CONNECT_DAILY_VERSION=$(just -f ci.Justfile get-version connect --type=daily --local) \
6263
BRANCH="{{branch}}" \
6364
docker buildx bake --builder=posit-builder -f docker-bake.preview.hcl {{target}}

docker-bake.hcl

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -116,28 +116,31 @@ variable CONNECT_CONTENT_INIT_BUILD_MATRIX {
116116

117117
variable CONTENT_BUILD_MATRIX {
118118
default = {
119+
# Add new entries to produce an image using a new patch version of
120+
# R/Python/Quarto. Do not modify existing entries, as that stops those
121+
# version combinations from receiving security updates.
119122
builds = [
120-
{os = "ubuntu1804", os_alt = "bionic", r = "3.1.3", py = "2.7.18", drivers = "2024.03.0", quarto = "1.0.37"},
121-
{os = "ubuntu1804", os_alt = "bionic", r = "3.2.5", py = "2.7.18", drivers = "2024.03.0", quarto = "1.0.37"},
122-
{os = "ubuntu1804", os_alt = "bionic", r = "3.3.3", py = "3.6.13", drivers = "2024.03.0", quarto = "1.0.37"},
123-
{os = "ubuntu1804", os_alt = "bionic", r = "3.4.4", py = "3.6.13", drivers = "2024.03.0", quarto = "1.0.37"},
124-
{os = "ubuntu1804", os_alt = "bionic", r = "3.4.4", py = "3.7.10", drivers = "2024.03.0", quarto = "1.0.37"},
125-
{os = "ubuntu1804", os_alt = "bionic", r = "3.5.3", py = "2.7.18", drivers = "2024.03.0", quarto = "1.0.37"},
126-
{os = "ubuntu1804", os_alt = "bionic", r = "3.5.3", py = "3.7.10", drivers = "2024.03.0", quarto = "1.0.37"},
127-
{os = "ubuntu1804", os_alt = "bionic", r = "3.6.3", py = "2.7.18", drivers = "2024.03.0", quarto = "1.0.37"},
128-
{os = "ubuntu1804", os_alt = "bionic", r = "3.6.3", py = "3.6.13", drivers = "2024.03.0", quarto = "1.0.37"},
129-
{os = "ubuntu1804", os_alt = "bionic", r = "3.6.3", py = "3.8.8", drivers = "2024.03.0", quarto = "1.0.37"},
130-
{os = "ubuntu1804", os_alt = "bionic", r = "4.0.5", py = "3.6.13", drivers = "2024.03.0", quarto = "1.0.37"},
131-
{os = "ubuntu1804", os_alt = "bionic", r = "4.0.5", py = "3.7.10", drivers = "2024.03.0", quarto = "1.0.37"},
132-
{os = "ubuntu1804", os_alt = "bionic", r = "4.0.5", py = "3.8.8", drivers = "2024.03.0", quarto = "1.0.37"},
133-
{os = "ubuntu1804", os_alt = "bionic", r = "4.0.5", py = "3.9.2", drivers = "2024.03.0", quarto = "1.0.37"},
134-
{os = "ubuntu1804", os_alt = "bionic", r = "4.1.0", py = "3.8.8", drivers = "2024.03.0", quarto = "1.0.37"},
135-
{os = "ubuntu1804", os_alt = "bionic", r = "4.1.0", py = "3.9.2", drivers = "2024.03.0", quarto = "1.0.37"},
136-
{os = "ubuntu1804", os_alt = "bionic", r = "4.1.3", py = "3.10.4", drivers = "2024.03.0", quarto = "1.0.37"},
123+
# R-3.6, Python-3.8, Quarto-1.3.
137124
{os = "ubuntu2204", os_alt = "jammy", r = "3.6.3", py = "3.8.16", drivers = "2024.03.0", quarto = "1.3.340"},
125+
{os = "ubuntu2204", os_alt = "jammy", r = "3.6.3", py = "3.8.19", drivers = "2024.03.0", quarto = "1.3.450"},
126+
127+
# R-4.0, Python-3.9, Quarto-1.3.
138128
{os = "ubuntu2204", os_alt = "jammy", r = "4.0.5", py = "3.9.16", drivers = "2024.03.0", quarto = "1.3.340"},
129+
{os = "ubuntu2204", os_alt = "jammy", r = "4.0.5", py = "3.9.19", drivers = "2024.03.0", quarto = "1.3.450"},
130+
131+
# R-4.1, Python-3.10, Quarto-1.3.
139132
{os = "ubuntu2204", os_alt = "jammy", r = "4.1.3", py = "3.10.11", drivers = "2024.03.0", quarto = "1.3.340"},
133+
{os = "ubuntu2204", os_alt = "jammy", r = "4.1.3", py = "3.10.14", drivers = "2024.03.0", quarto = "1.3.450"},
134+
135+
# R-4.2, Python-3.11, Quarto-1.3.
140136
{os = "ubuntu2204", os_alt = "jammy", r = "4.2.2", py = "3.11.3", drivers = "2024.03.0", quarto = "1.3.340"},
137+
{os = "ubuntu2204", os_alt = "jammy", r = "4.2.3", py = "3.11.9", drivers = "2024.03.0", quarto = "1.3.450"},
138+
139+
# R-4.3, Python-3.12, Quarto-1.4.
140+
{os = "ubuntu2204", os_alt = "jammy", r = "4.3.3", py = "3.12.3", drivers = "2024.03.0", quarto = "1.4.553"},
141+
142+
# R-4.4, Python-3.12, Quarto-1.4.
143+
{os = "ubuntu2204", os_alt = "jammy", r = "4.4.0", py = "3.12.3", drivers = "2024.03.0", quarto = "1.4.553"},
141144
]
142145
}
143146
}
@@ -515,4 +518,4 @@ target "workbench-for-microsoft-azure-ml" {
515518
}
516519

517520
matrix = WORKBENCH_MICROSOFT_AZURE_ML_BUILD_MATRIX
518-
}
521+
}

docker-bake.preview.hcl

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ variable CONNECT_DAILY_VERSION {
77
default = null
88
}
99

10+
variable PACKAGE_MANAGER_PREVIEW_VERSION {
11+
default = null
12+
}
13+
1014
variable PACKAGE_MANAGER_DAILY_VERSION {
1115
default = null
1216
}
@@ -253,6 +257,29 @@ target "product-base-pro-dev" {
253257
}
254258

255259
### Package Manager targets ###
260+
target "package-manager-preview" {
261+
inherits = ["base"]
262+
target = "build"
263+
264+
name = "package-manager-preview-${builds.os}-${replace(PACKAGE_MANAGER_PREVIEW_VERSION, ".", "-")}"
265+
tags = get_tags(builds.os, "rstudio-package-manager-preview", PACKAGE_MANAGER_PREVIEW_VERSION, "preview")
266+
267+
dockerfile = "Dockerfile.${builds.os}"
268+
context = "package-manager"
269+
contexts = {
270+
product-base = "target:product-base-dev-${builds.os}-r${replace(builds.r_primary, ".", "-")}_${replace(builds.r_alternate, ".", "-")}-py${replace(builds.py_primary, ".", "-")}_${replace(builds.py_alternate, ".", "-")}"
271+
}
272+
273+
matrix = PACKAGE_MANAGER_BUILD_MATRIX
274+
args = {
275+
R_VERSION = builds.r_primary
276+
R_VERSION_ALT = builds.r_alternate
277+
PYTHON_VERSION = builds.py_primary
278+
PYTHON_VERSION_ALT = builds.py_alternate
279+
RSPM_VERSION = PACKAGE_MANAGER_PREVIEW_VERSION
280+
}
281+
}
282+
256283
target "package-manager-daily" {
257284
inherits = ["base"]
258285
target = "build"

tools/get-version.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,12 @@ def rstudio_connect_daily():
163163
return connect_build_info['packages'][0]['version']
164164

165165

166+
def rstudio_pm_preview():
167+
latest_url = "https://cdn.posit.co/package-manager/deb/amd64/rstudio-pm-rc-latest.txt"
168+
raw_version = requests.get(latest_url).content
169+
return raw_version.decode('utf-8').replace('\n','')
170+
171+
166172
def rstudio_pm_daily():
167173
latest_url = "https://cdn.rstudio.com/package-manager/deb/amd64/rstudio-pm-main-latest.txt"
168174
raw_version = requests.get(latest_url).content
@@ -269,6 +275,8 @@ def rstudio_pm_daily():
269275
elif selected_product == 'package-manager':
270276
if version_type == 'release':
271277
version = get_release_version(selected_product, local)
278+
elif version_type == 'preview':
279+
version = rstudio_pm_preview()
272280
elif version_type == 'daily':
273281
version = rstudio_pm_daily()
274282
else:

0 commit comments

Comments
 (0)