hugsy / gef

GEF (GDB Enhanced Features) - a modern experience for GDB with advanced debugging capabilities for exploit devs & reverse engineers on Linux
https://hugsy.github.io/gef
MIT License
6.97k stars 732 forks source link

Move away from Travis-CI #226

Closed hugsy closed 6 years ago

hugsy commented 6 years ago

Possible alternatives:

cclauss commented 6 years ago

Why the move away from Travis? Have you considered Circle CI?

hugsy commented 6 years ago

Because it's poorly suited for testing gef on multiple architecture and uses super old packages. Not sure I see the difference between CircleCI and TravisCI, can you test on non x86 architectures ? Or at least deploy easily VMs that do?

cclauss commented 6 years ago

If you can put onto https://hub.docker.com a Docker image that houses the environment that you want then both Travis CI and Circle CI can mount it and run the tests inside of it. Pre-built images can have ready-to-run GDB linked into the Python of your pleasure and they will load in seconds. Circle CI might be a bit faster and more modern than Travis CI but both are approx equally capable.

cclauss commented 6 years ago
hugsy commented 6 years ago

I don't see pros for changing from Travis-CI to Circle-CI to make tests easier (looks 100% the same). And I don't see how Docker would help in any way. Can you clarify that?

cclauss commented 6 years ago

Docker can help because we can:

hugsy commented 6 years ago

I should have been clearer: how would Docker help for testing on non-x86 arch? Which is the whole point of moving away from Travis-CI in the 1st place.

cclauss commented 6 years ago

Would running VMware inside of a Docker container help to simulate non-x86 environments?

hugsy commented 6 years ago

AFAIK VMware doesn't do full virtualization, so no. Some examples would be Qemu or Bochs. I've got the Qemu images that I'm already using to test new releases, but I do that manually, and it's very tedious (which explans the will to have it tested via a CI service provider).

Grazfather commented 6 years ago

I am a fan of circle, but probably just because I've used it before.

One issue is that they run everything with docker, and I am not sure if they run them privileged. Without that, ptrace won't work.

hugsy commented 6 years ago

Did you test it for gef ?

Grazfather commented 6 years ago

I pushed a config to dev, and to master on my fork, which is setup for circle. See https://circleci.com/gh/Grazfather/gef/21. The failure is because of a real failure!

Could you please try this out and see if you like it? you'd have to merge this into master, and you'd have to setup a circleci integration/webhook.

hugsy commented 6 years ago

Can be closed with #324

Grazfather commented 6 years ago

Done!

cclauss commented 6 years ago

Eight undefined names in ./scripts/ida_gef.py

flake8 testing of https://github.com/hugsy/gef on Python 3.7.0

$ flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics

./scripts/ida_gef.py:149:35: F821 undefined name 'CIC_ITEM'
        return idc.SetColor(addr, CIC_ITEM, color)
                                  ^
./scripts/ida_gef.py:170:54: F821 undefined name 'Structs'
        for (struct_idx, struct_sid, struct_name) in Structs():
                                                     ^
./scripts/ida_gef.py:184:41: F821 undefined name 'StructMembers'
        res = {struct_name: [x for x in StructMembers(self.GetStructByName(struct_name))]}
                                        ^
./scripts/ida_gef.py:195:18: F821 undefined name 'Structs'
        for s in Structs():
                 ^
./scripts/ida_gef.py:208:48: F821 undefined name 'CIC_ITEM'
            idc.SetColor(_current_instruction, CIC_ITEM, _current_instruction_color)
                                               ^
./scripts/ida_gef.py:213:38: F821 undefined name 'GetColor'
        _current_instruction_color = GetColor(_current_instruction, CIC_ITEM)
                                     ^
./scripts/ida_gef.py:213:69: F821 undefined name 'CIC_ITEM'
        _current_instruction_color = GetColor(_current_instruction, CIC_ITEM)
                                                                    ^
./scripts/ida_gef.py:214:44: F821 undefined name 'CIC_ITEM'
        idc.SetColor(_current_instruction, CIC_ITEM, 0x00ff00)
                                           ^
8     F821 undefined name 'CIC_ITEM'
8