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

Upgrade Ruby to 3.2.6 & NodeJS to 22 #6557

Open
2 tasks
tpendragon opened this issue Dec 3, 2024 · 2 comments
Open
2 tasks

Upgrade Ruby to 3.2.6 & NodeJS to 22 #6557

tpendragon opened this issue Dec 3, 2024 · 2 comments
Assignees

Comments

@tpendragon
Copy link
Contributor

Acceptance Criteria

  • Ruby is upgraded to 3.2.6
  • NodeJS is upgraded to 22

Steps

  1. Update .tool-versions and circleci/config.yml to have new versions.
  2. Get tests passing.
  3. Send Draft PR
  4. Adjust group_vars for staging/prod for new versions in princeton_ansible.
  5. Provision one staging box.
  6. Deploy branch to staging box.
  7. Provision all staging boxes.
  8. Deploy branch to staging boxes.
  9. Make sure everything's working.
  10. Provision some production boxes.
  11. Deploy to those production boxes.
  12. Provision rest of production boxes.
  13. Deploy to rest of production boxes.
  14. Make sure everything's running.
  15. Merge all the PRs.

Notes

If you need or want to remove nodes from the load balancer you can do so with cap --hosts=<host> staging application:remove_from_nginx, and put it back with cap --hosts=<host> staging application:serve_from_nginx

@tpendragon tpendragon self-assigned this Dec 9, 2024
tpendragon added a commit that referenced this issue Dec 9, 2024
@tpendragon
Copy link
Contributor Author

Ran into two blockers that'll have to get figured out:

This generates errors for capybara tests that look like this:

<internal:pack>:20: warning: unknown unpack directive '0' in 'U*0'

and are very noisy.

Also, Mapnik segfaults on v22 unless we update it, but to update it we have to install it from github's NPM, but to install it from github's NPM we need a personal access token to be set to an environment variable, which means we'd have to generate one, put it in the vault, and distribute it to CI, dev systems, and staging. I don't really have time this week to do that work, so I'm putting this down.

@tpendragon
Copy link
Contributor Author

This is ready in pulibrary/princeton_ansible#5627 and #6563, but I'm about to go on vacation and don't want to deploy it all to prod right before that happens.

So I'm putting this ticket down - the last step needed is to do the prod deploy.

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

No branches or pull requests

1 participant