Skip to content

CodeDeploy agent is not supporting ruby v3.0.1 #301

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

Closed
charusat09 opened this issue Jul 20, 2021 · 54 comments
Closed

CodeDeploy agent is not supporting ruby v3.0.1 #301

charusat09 opened this issue Jul 20, 2021 · 54 comments

Comments

@charusat09
Copy link

charusat09 commented Jul 20, 2021

When I tried to install codedeploy agent on my server:

$ bundle install
Fetching gem metadata from http://rubygems.org/...........
Resolving dependencies...
Bundler found conflicting requirements for the Ruby version:
  In Gemfile:
    Ruby

    aws_codedeploy_agent was resolved to 1.3.2, which depends on
      Ruby (~> 2.0)

Ruby (~> 2.0), which is required by gem 'aws_codedeploy_agent', is not
available in the local ruby installation
$ ruby -v
ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-linux]

We are using Rails v6 and Ruby v3.0.1.

@rromanchuk
Copy link

@charusat09 i'm going to go down the rabbit hole fork and bump this project 3.0.1 and see how far i can get in my staging env

@rromanchuk
Copy link

tracking here rromanchuk#1

@charusat09
Copy link
Author

@rromanchuk Will you please submit your PR to this project? Thanks.

@OmriSama
Copy link

OmriSama commented Apr 4, 2022

So the agent STILL doesn't support Ruby 3?

@rromanchuk
Copy link

@OmriSama i've been using ansible/system manager to provision this as a standard systemd service using the same rbenv ruby 3.1.0 environment the rest of my production uses, without an issue. Wanted to make sure there were no major runtime blockers for the agent source on its own. a lot of the complexity here is just cross platform distribution

Another motivation was to get rid of the system ruby dependency, which really is just minor changes to the service config https://github.com/aws/aws-codedeploy-agent/blob/master/init.d/codedeploy-agent.service

Let me at least publish an example of what i am doing. I was thinking about maybe how adding a new install type https://github.com/aws/aws-codedeploy-agent/blob/master/bin/install#L478 to offer rbenv/custom install, which is really just a user supplied path, instead of relying on system packagers, which will consistently always drag many versions behind a modern ruby deployment.

@sebastianreloaded
Copy link

I'm trying to use the codedeploy agent with Ubuntu 22.04, but there seems to be no way to achieve that.

  1. The codedeploy package checks for ruby 2.x:
    Dependency is not satisfiable: ruby2.0|ruby2.1|ruby2.2|ruby2.3|ruby2.4|ruby2.5|ruby2.6|ruby2.7

  2. I can't install ruby 2.7, because it is not compatible with OpenSSL 3.0

So there is no way to use codedeploy on Ubuntu 22.04 atm, except maybe package my own codedeploy package...

@OmriSama
Copy link

OmriSama commented May 3, 2022

CodeDeploy should really embed its own Ruby, like Chef does.

@philstrong
Copy link
Contributor

philstrong commented May 5, 2022 via email

@fleaz
Copy link

fleaz commented May 12, 2022

It's "funny" that every two years I end up in this issue tracker because the Codedeploy agent is apparently an unloved child to AWS. Release of 18.04: broken (#158), Release of 20.04: broken (#264), Release of 22.04: broken (this issue).

I really can't wrap my head around how such a fundamental* piece of software can be such a trash fire for years when released by a multi-billion dollar company. This repo once again hasn't seen a commit for 10 months now :(

Sorry for all the negativity in most of my comments in this repo, but it's really frustrating when you have to work with this every day and run into the same walls every Ubuntu release :(

* Or am I one of the last 5 persons on earth that aren't using containers and still rely on Codedeploy?

@OmriSama
Copy link

It's "funny" that every two years I end up in this issue tracker because the Codedeploy agent is apparently an unloved child to AWS. Release of 18.04: broken (#158), Release of 20.04: broken (#264), Release of 22.04: broken (this issue).

I really can't wrap my head around how such a fundamental* piece of software can be such a trash fire for years when released by a multi-billion dollar company. This repo once again hasn't seen a commit for 10 months now :(

Sorry for all the negativity in most of my comments in this repo, but it's really frustrating when you have to work with this every day and run into the same walls every Ubuntu release :(

  • Or am I one of the last 5 persons on earth that aren't using containers and still rely on Codedeploy?

You are not alone, my friend.

Although, you could still be using CodeDeploy even if you did use containers!

@rromanchuk
Copy link

@philstrong I was thinking about maybe a BYOB(inary) solution, something simple like passing --binary-path. The cross platform requirements are what makes this challenging. Apt and Amazon Linux 2 are always going to be 5 years behind, so there would never be a case where the daemon would be able to use the same production ruby binary.

@alexekorn
Copy link

alexekorn commented May 15, 2022

I've verified a successful installation and deployment, using a similar process to 20.04's required installation, where you repackage the .deb to require ruby3.0 instead of 2.x:

cd /tmp
wget https://aws-codedeploy-us-east-1.s3.us-east-1.amazonaws.com/releases/codedeploy-agent_1.3.2-1902_all.deb
mkdir codedeploy-agent_1.3.2-1902_ubuntu22
dpkg-deb -R codedeploy-agent_1.3.2-1902_all.deb codedeploy-agent_1.3.2-1902_ubuntu22
sed 's/Depends:.*/Depends:ruby3.0/' -i ./codedeploy-agent_1.3.2-1902_ubuntu22/DEBIAN/control
dpkg-deb -b codedeploy-agent_1.3.2-1902_ubuntu22/
dpkg -i codedeploy-agent_1.3.2-1902_ubuntu22.deb

You will also need to install ruby-webrick via apt/yum/etc, since it is no longer included by default in Ruby 3.

And afterward, voila:

$ systemctl list-units --type=service | grep codedeploy
  codedeploy-agent.service                       loaded active running LSB: AWS CodeDeploy Host Agent

(It sure feels like CodeDeploy is abandoned/deprecated. Or, if not, it's been the biggest issue for our Ubuntu upgrades the last two times. Given this experience, I'll be looking for a less janky way to deploy.)

EDITED to add information about webrick, now that I've verified a successful deployment.

@moosthuizen42
Copy link

Expanding on the answer above, here is a full script. Massive thank you to @alexekorn. This script essentially replaces all the intructions in the official documentation (Install the CodeDeploy agent for Ubuntu Server).

#!/bin/bash
# This installs the CodeDeploy agent and its prerequisites on Ubuntu 22.04.

sudo apt-get update
sudo apt-get install ruby-full ruby-webrick wget -y
cd /tmp
wget https://aws-codedeploy-us-east-1.s3.us-east-1.amazonaws.com/releases/codedeploy-agent_1.3.2-1902_all.deb
mkdir codedeploy-agent_1.3.2-1902_ubuntu22
dpkg-deb -R codedeploy-agent_1.3.2-1902_all.deb codedeploy-agent_1.3.2-1902_ubuntu22
sed 's/Depends:.*/Depends:ruby3.0/' -i ./codedeploy-agent_1.3.2-1902_ubuntu22/DEBIAN/control
dpkg-deb -b codedeploy-agent_1.3.2-1902_ubuntu22/
sudo dpkg -i codedeploy-agent_1.3.2-1902_ubuntu22.deb
systemctl list-units --type=service | grep codedeploy
sudo service codedeploy-agent status

You should see this when installation has been successfully completed:

output

Working on Ubuntu 22.04 (ami-09d56f8956ab235b3) deployed on a t3.nano instance in N. Virginia.

@OmriSama
Copy link

Update to CodeDeploy agent has been postponed to end of June: #318 (comment)

@wbelk
Copy link

wbelk commented Jun 18, 2022

@moosthuizen42 thanks for this, worked perfectly, had a time finding this

@mpdude
Copy link

mpdude commented Jun 29, 2022

So there is no code issue/compatibility issue per se, only the question of how to package this to make it installable on different Debian/Ubuntu/… distros?

@wbelk
Copy link

wbelk commented Jun 29, 2022

@mpdude that is my recent experience, yes. once installed properly works as expected.

@mpdude mpdude mentioned this issue Jul 1, 2022
@trunov
Copy link

trunov commented Aug 10, 2022

@alexekorn Thank you so much ! I've been struggling with this for one day.

@philstrong
Copy link
Contributor

philstrong commented Oct 11, 2022 via email

@yasircodingcrafts
Copy link

Thanks @moosthuizen42

For anyone who doesn't know how to do anything like me, here's the noob steps:

  1. Enter the following command:
    touch install-code-deploy-ubuntu22-ec2.sh

  2. Enter the following command:
    cat > install-code-deploy-ubuntu22-ec2.sh

  3. Paste the following:

    #!/bin/bash
    # This installs the CodeDeploy agent and its prerequisites on Ubuntu 22.04.
    sudo apt-get update
    sudo apt-get install ruby-full ruby-webrick wget -y
    cd /tmp
    wget https://aws-codedeploy-us-east-1.s3.us-east-1.amazonaws.com/releases/codedeploy-agent_1.3.2-1902_all.deb
    mkdir codedeploy-agent_1.3.2-1902_ubuntu22
    dpkg-deb -R codedeploy-agent_1.3.2-1902_all.deb codedeploy-agent_1.3.2-1902_ubuntu22
    sed 's/Depends:.*/Depends:ruby3.0/' -i ./codedeploy-agent_1.3.2-1902_ubuntu22/DEBIAN/control
    dpkg-deb -b codedeploy-agent_1.3.2-1902_ubuntu22/
    sudo dpkg -i codedeploy-agent_1.3.2-1902_ubuntu22.deb
    systemctl list-units --type=service | grep codedeploy
    
  4. Press ctrl + d

  5. Enter the following command:
    chmod u+x install-code-deploy-ubuntu22-ec2.sh

  6. Enter the following command:
    ./install-code-deploy-ubuntu22-ec2.sh

  7. Enter the following command:
    sudo service codedeploy-agent status

@rnhurt
Copy link

rnhurt commented Feb 20, 2023

We are in the process of upgrading our Rails apps to Ruby 3.0.5 and this is a huge blocker for us. It's inconceivable that this agent doesn't support a more updated version of Ruby! 😡

NOTE: I was actually able to remove the Ruby checks and it seems like the agent installed correctly. However, I'm pretty sure that the auto-update function will try to update to the next version which will probably screw up somewhere/somehow.

@philstrong
Copy link
Contributor

philstrong commented Feb 21, 2023 via email

@rnhurt
Copy link

rnhurt commented Feb 22, 2023

The next version of the agent will support Ruby 3. We’re sorry for the delay in this support.

That's great news! Any thoughts on when the next version might appear? I don't even really need any new features or bug fixes, just adding Ruby 3.x support would be enough. 😁

@philstrong
Copy link
Contributor

Target is to begin shipping in early March and complete all commercial regions by mid March.

@alboyadjian alboyadjian mentioned this issue Feb 23, 2023
@sasha-id
Copy link

Amazon Linux 2022 script, with 3.1, 3.2 support

#!/bin/bash

# Installs CodeDeploy agent and its prerequisites on Ubuntu 22.04 given AWS CodeDeploy team doesn't exist
# https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent.html#codedeploy-agent-version-history
CODEDEPLOY_VERSION=1.4.1-2244


cd /tmp
wget https://aws-codedeploy-ap-southeast-2.s3.ap-southeast-2.amazonaws.com/releases/codedeploy-agent-"$CODEDEPLOY_VERSION".noarch.rpm
mkdir codedeploy-agent_"$CODEDEPLOY_VERSION"_al2022
rpm2cpio codedeploy-agent-"$CODEDEPLOY_VERSION".noarch.rpm |  (cd codedeploy-agent_"$CODEDEPLOY_VERSION"_al2022; cpio -idmv)
sudo cp -r codedeploy-agent_"$CODEDEPLOY_VERSION"_al2022/etc /
sudo cp -r codedeploy-agent_"$CODEDEPLOY_VERSION"_al2022/usr /

sudo git clone https://github.com/brandinfluencegroup/aws-codedeploy-agent.git /opt/codedeploy-agent

sudo dnf install chkconfig -y

sudo systemctl enable codedeploy-agent
sudo systemctl start codedeploy-agent
systemctl list-units --type=service | grep codedeploy
sudo systemctl status codedeploy-agent

@karlkatzke
Copy link

karlkatzke commented Feb 28, 2023 via email

@sasha-id
Copy link

I have it on good authority that codedeploy agent version 1.5 is in QA and will be released within a few weeks.

few weeks for ruby 3.0, few months for 3.1 and few years for 3.2 🤦

@t0shiii
Copy link
Contributor

t0shiii commented Mar 1, 2023

I have it on good authority that codedeploy agent version 1.5 is in QA and will be released within a few weeks.

Confirmed. 1.5 rollout is imminent and will add support for Ruby 3.0 along with Ubuntu 22.04 LTS support. Release notes and official docs coming soon.

@t0shiii t0shiii moved this from Researching to Coming Soon in CodeDeploy Public Roadmap Mar 1, 2023
@iramello
Copy link

iramello commented Mar 1, 2023

I have it on good authority that codedeploy agent version 1.5 is in QA and will be released within a few weeks.

Confirmed. 1.5 rollout is imminent and will add support for Ruby 3.0 along with Ubuntu 22.04 LTS support. Release notes and official docs coming soon.

Great to see it after only 27 months for ruby 3 and 11 months for Jammy! Thanks! <3

@rnhurt
Copy link

rnhurt commented Mar 2, 2023

This article is apropos - https://www.lastweekinaws.com/blog/AWS-is-Asleep-at-the-Lambda-Wheel/

@t0shiii
Copy link
Contributor

t0shiii commented Mar 8, 2023

FYI: as mentioned in #349 1.5.0 is live. Installation instructions are linked in the announcement.

@t0shiii t0shiii closed this as completed Mar 8, 2023
@sasha-id
Copy link

sasha-id commented Mar 8, 2023

as predicted, no 3.1 and 3.2 support

@philstrong
Copy link
Contributor

as predicted, no 3.1 and 3.2 support
😄

few weeks for ruby 3.0, few months for 3.1 and few years for 3.2

I promise it won't be that long. We're spinning up tests now for 3.1 and 3.2. 1.5.1 will have that support with good regression tests going forward.

@alboyadjian
Copy link

1.5 doesn't seem to be working under ruby3.1 for me. I'm getting the same issue as reported here
#352

@rnhurt
Copy link

rnhurt commented Mar 13, 2023

1.5 doesn't seem to be working under ruby3.1 for me. I'm getting the same issue as reported here #352

I think v1.5 only supports Ruby 3.0.x, not Ruby v3.1.x (or v3.2.x).

@t0shiii t0shiii moved this from Coming Soon to Just Shipped in CodeDeploy Public Roadmap Mar 15, 2023
@e200
Copy link

e200 commented Apr 6, 2023

AWS is forcing us to switch to Fargate.

@yacinehmito
Copy link

AWS is forcing us to switch to Fargate.

@e200 Just released Ruby 3.2 support. I don't think there's anything left to be complaining about.

@mwjones-aws
Copy link
Contributor

Correct, CodeDeploy Agent 1.6.0 adds support for Ruby 3.1 and 3.2. It has been deployed to most commercial AWS regions as of this comment.

Please track its rollout on #360

@e200
Copy link

e200 commented Apr 7, 2023

AWS is forcing us to switch to Fargate.

@e200 Just released Ruby 3.2 support. I don't think there's anything left to be complaining about.

My region is eu-south-2, that’s why.

@t0shiii
Copy link
Contributor

t0shiii commented Apr 12, 2023

My region is eu-south-2, that’s why.

@e200 just wanted to let you know that CodeDeploy Agent 1.6.0 is available in all commercial regions now including eu-south-2

@ring-pete
Copy link

Will there be build artifacts available for v1.6.0? this page still lists v1.5.0 as being the latest:

https://github.com/aws/aws-codedeploy-agent/releases

@t0shiii
Copy link
Contributor

t0shiii commented May 22, 2023

@ring-pete I would recommend you install the latest CodeDeploy Agent using the installation instructions on the official documentation

@ring-pete
Copy link

I can't because AWS does not support FeeBSD. Also, I would think you'd include the release in the same place as previous releases?

@t0shiii
Copy link
Contributor

t0shiii commented May 22, 2023

@ring-pete Just published it. Here is a link to the release: https://github.com/aws/aws-codedeploy-agent/releases/tag/1.6.0

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

No branches or pull requests