-
Notifications
You must be signed in to change notification settings - Fork 56
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Workbench session init go cp #871
Conversation
The Release - Build, Test, and Push / Workbench Session Init (pull_request) check is failing as the Get Version step is returning the version as Fetch Workbench session init container version
It should be
When I run Get Version step locally, I get the correct version:
|
@skyeturriff I suggest we merge |
* add go program * add multi-stage build dockerfile * add positron * fix path * update err msgs and reuse file info * merge comments * enhance file copying with otiai10/copy package and update Dockerfile * remove uneeded components * add shared_run to common deps * fix component filename * update Dockerfile to use ubuntu:22.04 base image, as the scratch image doesn't work nicely with GOSS * remove test var --------- Co-authored-by: Ian Pittwood <[email protected]>
Addresses https://github.com/rstudio/rstudio-pro/issues/7006
This pull request introduces changes to the
workbench-session-init
image, including the addition of a Go-based entrypoint, updates to the Dockerfile, and new tests for the Go code. The main changes are grouped into Dockerfile updates, Go code additions, and test additions.Dockerfile Updates:
Dockerfile.ubuntu2204
to include a multi-stage build process, adding Go installation and setting up the Go workspace. The final image now includes the compiled Go binary and session components. [1] [2]builder
, sets up the environment to compile the Go application and download necessary components.build
, starts with another Ubuntu 22.04 base image. I was originally using the basescratch
image here, but this wouldn't work with the goss tests and there is not much difference in final image size. This stage just copies the compiled Go binary and session components from the builder stage.Go Code Additions:
main.go
file that contains the logic for copying session components based on the session type, validating the target directory, and ensuring the copy operation preserves permissions, times, and owner.go.mod
file to manage Go module dependencies for the project.otiai10/copy
package to handle the copying process, preserving important file attributes and optimizing performance with parallel execution. (I believe hosted used this at one point, or still does).Test Additions:
main_test.go
with tests for thegetFilesToCopy
function and thecopyFiles
function, ensuring correct behaviour for various session types and verifying file copying operations.Removal of Old Shell Script:
run.sh
shell script that previously handled the copying of session components.Test Configuration Update:
goss.yaml
test configuration to reflect the new entrypoint binary instead of the old shell script.Testing
just preview-bake workbench-session-init-daily mkdir init docker run -v $(pwd)/init:/mnt/init rstudio/workbench-session-init-preview:workbench-session-init-go-cp-jammy-daily