GitHub CI/CD

fjtrujy

Developer
Hello,

This thread is to explain to the community the current CI/CD flow that has been implemented in the PS2Dev GitHub repos.

The main objectives are basically 4:

  • Assure that the changes keep the compilation successful.
  • Generation of artifacts. They could be PS2 Executables (.elf), local machine content
  • Generation of several docker layers. This is useful either for compiling some repos inside of ps2dev or for external application as OPL, RetroArch or uLaunch
  • A change in a repo could dispatch an action to associated repos to trigger their CI/CD and update Docker images.

The repos that are involved in the implemented CI/CD are:

ps2toolchain
The scope of this repository now has been reduced, this is no longer the repo that you need to clone if you want to install ps2 environment in your local machine if you wanna do this your repo now, is ps2dev.
The ps2toolchain is just now, compiling binutils, gcc and newlib.
This repo generate:
alpine:latest + ps2toolchain
Once that the docker image has been build and uploaded to DockerHub, a dispatch action is being sent to ps2sdk repo.

ps2sdk
This repo uses the docker image ps2dev/ps2toolchain:latest as reference for the CI/CD process. The CI/CD in this case just check that the compilation works as expected.
This repo generate:
  • 2nd docker layer, named ps2dev/ps2sdk:latest and it is composed by:
    alpine:latest + ps2toolchain + ps2sdk
Once that the docker image has been build and uploaded to DockerHub, a dispatch action is being sent to gsKit and ps2-packer repos.

ps2-packer
This repo uses the docker image ps2dev/ps2sdk:latest as reference for the CI/CD process. The CI/CD in this case just check that the compilation works as expected.
This repo doesn't generate any docker layer and it doesn't make any dispatch either.

gsKit
This repo uses the docker image ps2dev/ps2sdk:latest as reference for the CI/CD process. The CI/CD in this case just check that the compilation works as expected.

This repo generate:
  • 3rd docker layer, named ps2dev/gsKit:latest and it is composed by:
    alpine:latest + ps2toolchain + ps2sdk + gsKit
Once that the docker image has been build and uploaded to DockerHub, a dispatch action is being sent to ps2sdk-ports repo.

ps2sdk-ports
This repo uses the docker image ps2dev/gsKit:latest as reference for the CI/CD process. The CI/CD in this case just checks that the compilation works as expected.
This repo generate:
  • 4th docker layer, named ps2dev/ps2sdk-ports:latest and it is composed by:
    alpine:latest + ps2toolchain + ps2sdk + gsKit + ps2sdk-ports
Once that the docker image has been build and uploaded to DockerHub, a dispatch action is being sent to ps2dev repo.

ps2dev
This is a new repo created with the main purpose of an offer to developers the whole PS2 environment. This is the REPO that you MUST clone if you want to prepare your machine for the ps2 development.
This repo uses the docker image ps2dev/ps2sdk-port:latest as reference for the CI/CD process.
This repo generate:
  • 5th docker layer, named ps2dev/ps2dev:latest and it is composed by:
    alpine:latest + ps2toolchain + ps2sdk + gsKit + ps2sdk-ports + ps2-packer + ps2client
  • A precompiled toolchain for Ubuntu x64 and MacOS x64, where lazy devs can just go there and download the zip file. It is composed by:
    ps2toolchain + ps2sdk + gsKit + ps2sdk-ports + ps2-packer + ps2client

As you can imagine this is an ongoing process that never ends, so PRs are more than welcome.

We have this graphic were you can see globally the whole process.

Thanks to @akuhak and @Maximus32 for their support.
 

Attachments

  • 2020-05-15.png
    2020-05-15.png
    13.9 KB · Views: 86
really nice work! :encouragement:

I want to learn about CI/CD and how to implement it on GitHub, so if you don't mind I might ask you some questions when I start to play around with CI :)

Edit: well, following this idea, I did a simple CI to auto-build the PS3 dev tools. Not as fancy as the ps2dev workflow (just binaries, no docker image), but it's a start :D
 
Last edited:
Back
Top