Skip to content
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

Open
wants to merge 14 commits into
base: dev
Choose a base branch
from
Open

Conversation

skyeturriff
Copy link
Contributor

@skyeturriff skyeturriff commented Nov 15, 2024

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:

  • Updated the 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]
  • The first stage, labeled as builder, sets up the environment to compile the Go application and download necessary components.
  • The second stage, labeled as build, starts with another Ubuntu 22.04 base image. I was originally using the base scratch 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:

  • Added a new 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.
  • Introduced a go.mod file to manage Go module dependencies for the project.
  • It uses the 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:

  • Added main_test.go with tests for the getFilesToCopy function and the copyFiles function, ensuring correct behaviour for various session types and verifying file copying operations.

Removal of Old Shell Script:

  • Removed the old run.sh shell script that previously handled the copying of session components.

Test Configuration Update:

  • Updated the goss.yaml test configuration to reflect the new entrypoint binary instead of the old shell script.

Testing

  • Verified that the Docker image builds successfully and includes the compiled Go binary and session components.
  • Tested the Go program to ensure it correctly copies files and directories while preserving permissions and ownership.
  • Confirmed that the entrypoint script executes the Go program and logs relevant information for debugging.
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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants