Giter Site home page Giter Site logo

o3de / o3de-jenkins-pipeline Goto Github PK

View Code? Open in Web Editor NEW
3.0 4.0 4.0 188 KB

This project automates the deployment of the O3DE Jenkins Pipeline that runs the checks on all pull requests submitted to the Open 3D Engine (O3DE).

License: Other

Dockerfile 6.34% Python 85.97% Shell 2.43% Groovy 5.27%

o3de-jenkins-pipeline's Issues

Setup mechanism to run automated tests on Jenkins

Setup testing mechanism that can be added to CodePipeline to run tests on Jenkins. These tests can be used to test the staging instance or prod instance to determine if a rollback is needed.

Creating the actual tests (running jobs, load testing) is out of scope.

  • CDK is updated to add a stage in the deployment pipeline to run tests on the jenkins staging or prod instance
  • Stage can report success/fail to determine next actions.

Create custom entrypoint for Jenkins container

Jenkins doesn't support moving the plugins directory to another location. This causes issues when using shared storage to host jenkins_home. Plugins that are removed from the plugins.txt file are not removed and need to be uninstalled manually.

Create a custom startup script to clear out the plugins directory when starting up Jenkins.

Create guide for performing local testing

It's possible to run the Jenkins docker container locally for testing. However, there are a few settings that need to be updated to allow a user to successfully start up a local instance that mimics their prod server.

  • Add documentation that provides a set of instructions to easily deploy a local copy of the Jenkins pipeline server on a user's machine.

Add arg to dockerfile for java memory settings

Right now we default to 8GB for our prod deployments. A user should be able to change this setting for their own deployments or testing.

Change the hard-coded java memory settings an arg in the dockerfile.

Automated Updates for Jenkins Pipeline

Develop a mechanism to automatically submit PRs to update Jenkins. While deployments are already automated through CDK Pipelines we still need to manually update the dockerfile and plugins.txt to keep components up-to-date.

  • Research new or existing mechanisms that can be used to automatically submit a PR when new LTS versions of Jenkins is released. Including plugins will be nice, but not required.
  • Submit RFC to sig-build/sig-security for approval.

Create a mechanism to populate required values in JCasC config files

When a user wants to use the configs in a template file, they typically need to replace the <value> entrees with the required parameters. Or they can store secret values in AWS Parameter Store.

Create a script to automatically populate these values and push secrets to parameter store if required.

Setup automated rollback mechanism for Jenkins

Manual rollback mechanism is available through Fargate task revisions. An automated rollback would update the task to run the previous revision. ECS would then take care of replacing the task.

Prereq: Automated testing: #24

  • An automated rollback is triggered if automated tests fail in prod after a deployment.
  • CDK is updated to add pipeline stage to run this automated task.

Create CDK stack for ECS cluster

The current pipeline setup requires an empty ECS cluster to deploy into. At the moment this is manually created.

Create a CDK stack to replace this setup, so that the ECS cluster to host the Jenkins server is automatically created.

Define default o3de pipeline setup in job dsl

Add a config for an initial pipeline pointing to the o3de repo. That way users will not have to create a pipeline setup after the initial startup.

While the pipeline is defined in the Jenkinsfile, the pipeline job still needs to be manually created in Jenkins.

Setup JCasC to automate setup on startup

Add Jenkins Configuration as Code (JCasC) as an installed plugin and include the required configs to setup the Jenkins server on startup.

This will prevent having to manually configure jenkins on startup and minimize the time required have Jenkins up and running.

Create setup scripts for CDK Pipeline requirements

Certain dependencies need to be installed in order to perform the initial CDK deploy step for the AWS setup (e.g. node.js, cdk toolkit, etc.). Some of these steps can be automated.

  • Create a script to install these requirements to minimize manual setup steps for the deployment.
  • Update README with instructions to use the script

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.