Coder Social home page Coder Social logo

devops's People

Contributors

jordanpadams avatar pdsen-ci avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

devops's Issues

As a developer, I want to make sure I have access to all our Python PyPi package repos.

For more information on how to populate this new feature request, see the PDS Wiki on User Story Development:

https://github.com/NASA-PDS/nasa-pds.github.io/wiki/Issue-Tracking#user-story-development

Motivation

...so that I can update any of our PyPi packages.

Additional Details

See NASA-PDS/pds-api-client#2 (comment)

Acceptance Criteria

Given a completed update to a PDS Python repo
When I perform a deplyoment to PyPi
Then I expect to be able to successfully update the PyPi package with my PyPi account.

Engineering Details

This should just be something simple we can add to a "Create a New Python Repo" guide. maybe we just add this to the Python template README?

As a developer, I want a developer staging system with the latest dev versions of PDS services deployed

Motivation

...so that I can easily test services and clients against those services

Additional Details

Acceptance Criteria

Given
When I perform
Then I expect

Engineering Details

We want some generic tool / service identified and a process documented for continuous deployment of PDS EN services that are in development. This capability to be possible for services that may be deployed either (or both):

  • on prem
  • in AWS

things to thing about:

  • will this need to be separate from public Github Actions in order to access our internal servers / AWS services?
  • how often do we want to do this? on push to master? nightly? weekly?
  • we will need to handle some sort of post-deployment capability (e.g. deploy registry + ingest some data)?

Make the DOI service Dev staging deployment initialized with non empty database

πŸ’‘ Description

The database an sqllite file stored at the root of the virtual environment (doi.db).

The following command initialize the database with the PDS's dataCite dois:

pds-doi-init --service datacite --prefix ${PREFIX} --submitter ${SUBMITTER}

Where submitter is the email of the author of the operation and prefix is one of 10.17189, 10.26007, 10.2603 (to be confirmed with @jordanpadams which one is best in this case). We would get the DOIs from the dataCite test database anyway to avoid sharing the production login/password on the staging area and risking them to be used to update the production DOIs.

As a user, I want to continuously access the latest development version of the dictionaries (LDD)

πŸ’ͺ Motivation

...so that I can develop my product generation software in parallel of the development of the dictionary, seamlessly.

πŸ“– Additional Details

2 tasks foreseen:

  • update LDD-CORRAL to handle the snapshot version of the LDD and publish it

  • integrate the LDD-CORRAL (https://github.com/nasa-pds/operations/#ldd-corralpy) to the CICD framework so that stable and snapshot releases of the LDD are published:

    • whenever a commit/push is done on the main branch, update the snapshot release
    • whenever a stable release is created (processus to be defined, I don't know what it is currently)

βš–οΈ Acceptance Criteria

Given
When I perform
Then I expect

βš™οΈ Engineering Details

First we were thinking we could use Jenkins for the CICD integration. By doing so we would build on what has already been developed for the CD in integration and I&T environment.

Then I realized the final location of the deployment is going to be the web site hosted on AWS. So we might want to use the opportunity of this user story to start to look into continuous deployment on AWS. I have no idea what the would be yet. This ticket would include the required analysis for doing that.

Develop github action to publish docker images on docker hub

πŸ’ͺ Motivation

...so that we don't have to do it manually build and publish the images.

πŸ“– Additional Details

consider the publication on AWS ECR for later

βš–οΈ Acceptance Criteria

Given
When I perform
Then I expect

βš™οΈ Engineering Details

jenkins continuous deployment does not pull docker images

Checked for duplicates

Yes - I've already checked

πŸ› Describe the bug

The docker images used in the registry pipeline are not updated.

πŸ•΅οΈ Expected behavior

I expected the newest latest images to be pulled every night.

πŸ“œ To Reproduce

Go on the jenkins https://pds-jenkins.jpl.nasa.gov/job/Registry/

πŸ–₯ Environment Info

No response

πŸ“š Version of Software Used

No response

🩺 Test Data / Additional context

No response

πŸ¦„ Related requirements

πŸ¦„ #xyz

βš™οΈ Engineering Details

No response

NASA-PDS group on Zenodo should belong to a group account, not an individual

Currently the NASA-PDS group on Zenodo (what they call a "community") belongs to the GitHub user @nutjob4life, who is then responsible for listing newly-assigned DOIs in the group.

Zenodo says that "having multiple curators per community is an oft-requested feature" but is "currently not supported" and is recommended that "a single account that an organization has shared access to" be assigned the ownership role.

We have such an account: @pdsen-ci.

Please have it take over the NASA-PDS community on Zenodo.

Remove Versioneer

@MJJoyce and @nutjob4life have been struggling over the last 2β…— weeks with Python Versioneer and we keep running into issues (from mysterious git hashes when there shouldn't be any, to inconsistent handling of annotated/non-annotated tags, to puzzling out the unseen magic that goes into determining a version, to developing one-too-many workarounds in the Roundup Action and pds-github-util just to accommodate Versioneer).

There are some endemic issues to Versioneer as well, including:

Other users are running into these as wellβ€”@collinss-jpl in particular, where the pds-doi-service has served as the poster case for all that can go wrong with Versioneer.

One famous maxim from Python development (import this) reads:

Explicit is better than implicit.

Versioneer has made things so implicit that we find ourselves at a loss to explain its behaviorβ€”and worse, to correct it. We feel we've surpassed the point of diminishing returns with Versioneer and now recommend its excisionβ€”with prejudiceβ€”from the PDS codebase. Here's something that, perhaps, Maven has done right: just put the version number in pom.xml explicitly where people know how to find it!

This ticket will serve as an epic for the removal from other repositories that the Versioneer has infected.

For registry components, add a github action which runs the integration test when something is pushed on a dev branch

πŸ’‘ Description

For components:

  • registry-common (no docker image here)
  • harvest (no docker image here)
  • registry-manager (no docker image here)
  • registry-loader (docker image available here)
  • registry-api (docker image creation with mvn spring-boot:build-image)

A specific docker image is created from the dev branch and the latest docker image from the other components are used.

To move forward with that, I suggest to:

  1. migrate registry-common, harvest and registry-loader into the registry-loader repository as it was planned before.
  2. add the githb action on registry-loader
  3. add the github action on registry-api

As an EN developer, I want to make sure I have access to all PDS repos.

For more information on how to populate this new feature request, see the PDS Wiki on User Story Development:

https://github.com/NASA-PDS/nasa-pds.github.io/wiki/Issue-Tracking#user-story-development

Motivation

...so that I can update / access any of our repositories and source code at any time.

Additional Details

We should make sure all of our repos have the following teams with access:

  • @pds-software-committers - Write
  • @pds-software-pmc - Admin
  • @pdsen-operations - Admin

Additionally, not sure if doing this autonomously is worth the effort at this point. Let's just add this to the template repo READMEs or in a wiki for creating a new repo and call it good.

Acceptance Criteria

Given a member of the @pds-software-committers team has an update to push to a PDS EN repo
When I perform a commit and push to a branch
Then I expect to successfully push to a branch on that repo

Given a member of the @pds-software-pmc or @pdsen-operations team has an update to push to a PDS EN repo
When I perform a commit and push to master on that repo
Then I expect to successfully push to master on that repo

As an SA, I want a monitoring capability to check that PDS search and access services are up and running 99.9% of the time

For more information on how to populate this new feature request, see the PDS Wiki on User Story Development:

https://github.com/NASA-PDS/nasa-pds.github.io/wiki/Issue-Tracking#user-story-development

Motivation

...so that we can ensure the 99.99% uptime "requirement" we are striving for across all our systems

Additional Details

This goes beyond the systems monitoring the SAs have setup for our machines. That monitoring only ensures the services are up and running βš™οΈ (e.g. Tomcat hasn't crashed), but we need some tool or service that makes sure the API actually returns data.

Acceptance Criteria

Given a registry ingestion fails and wipes out the database (or name your favorite service)
When I perform nothing
Then I expect to get a notification that something is wrong with the registry

Engineering Details

We should think of this as some sort of generic "ping" software (or Github Action), that kicks all our services every so often to see if they are awake and functioning properly. At minimum, this should support the following services to start:

As a EN team member, I want to check the API test reports in testrail

Checked for duplicates

Yes - I've already checked

πŸ§‘β€πŸ”¬ User Persona(s)

EN team member

πŸ’ͺ Motivation

...so that I can report on the automatic testing.

πŸ“– Additional Details

No response

Acceptance Criteria

Given the jenkins dev staging server, testrail production service
When I perform when I go to the testrail run report https://cae-testrail.jpl.nasa.gov/testrail/index.php?/runs/overview/168
Then I expect to see nighty test reports for the suite PDS Registry API, automated tests (https://cae-testrail.jpl.nasa.gov/testrail/index.php?/suites/view/12824&group_by=cases:section_id&group_order=asc)

βš™οΈ Engineering Details

Follow the guidelines on https://medium.com/apis-with-valentine/how-to-integrate-testrail-with-postman-newman-api-tests-cc0380998d04

Use test suite in testrail https://cae-testrail.jpl.nasa.gov/testrail/index.php?/suites/view/12824 for API automated testing.

Use test with ID: C1274687

Add the reference in the postman test suite in the registry repository, see https://github.com/NASA-PDS/registry/tree/main/docker/postman

Update the newman configuration for the jenkins pipeline so that jenkins generates a nightly test report on test rail. That will be a single test for now, but we want that to be a starting point for the I&T team to get a full reporting on the postman tests in test rail.

Create ECS tasks definitions from the CICD (github-actions)

πŸ’‘ Description

Define the proper revision scheme related to the actual version of the components.
That could be using the version of the components or tags (latest, stable...)

Applies to the following repositories:

For registry:

  • registry-api
  • registry-sweepers

For nucleus:

  • validate
  • deep-archive
  • registry-loader

Validate that the tasks can be used on the AWS deployments (e.g. en-delta for registry).

Design and implement RDD vs. Software Summary vs. Software Catalog

  • RDD is release-specific documentation
  • Do we need software summaries? Should these just be included in the RDD?
  • Software Catalog - page of all tools available. very similar to software summary, but I don't care about past builds or that builds are a thing. just want the tools I need right now

Push docker image on AWS ECR in github-actions, in addition to docker hub

πŸ’‘ Description

Applies to the following repository:

For registry:

  • registry-api
  • registry-sweepers

For nucleus:

  • validate
  • deep-archive
  • registry-loader

Validate that the docker images work on the AWS deployment (e.g. on en-delta for registry). It is likely that the Dockerfile will require update since the one currently used for registry-api in the test environment (docker compose) and generated by the github action is different that the one used in AWS.

Update Stable Major Releases of PDS software with DOIs

Per the JPL-PDS Open Source Policy:

Each major release of the software must have a persistent identifier such as a Digital Object Identifier (DOI). 

Open Questions

  • The policy says "persistent identifiers". DOIs are the default for this outside of the PDS. Is that the route we want to take?
  • Apparently this is pretty easily integrated with Github, but, surprise, I don't think it is easily automated. Can we automate? Or is it just a procedural update to the wiki?

CI/CD Workflows Need to use Stable Tag

As part of our "lessons learned", having PDS repositories use the main branch of Roundup Action causes problemsβ€”namely, if a feature is implemented or a bug is fixed that introduces a new bug, every repository using main is affected.

Instead, when we have a point in the Roundup development that we consider stable, we tag it with stable. A workflow YAML file can say:

uses: NASA-PDS/roundup-action@stable

to say it prefers that tag of the action and not some other branchβ€”especially not main.

The following repositories are still using the @main branch of the Roundup Action. These should should be transitioned to use @stable:

  • api-search-query-lexer (awaiting merge)
  • archive-analytics (awaiting merge)
  • harvest (awaiting merge)
  • pds-api-javalib (awaiting merge)
  • pds-api-pythonlib (awaiting merge)
  • pds-api-service (awaiting merge)
  • pds-deep-archive (awaiting mrege)
  • pds-doi-service (awaiting merge)
  • pds-registry-app (awaiting merge)
  • pds-registry-common (awaiting merge)
  • pds-registry-mgr-elastic (awaiting merge)
  • pds-template-repo-java (awaiting merge)
  • pds-template-repo-python (awaiting merge)
  • pds4-information-model (awaiting merge)
  • pds4-jparser (awaiting merge)
  • pdsen-maven-parent (awaiting merge)
  • registry-api-service (awaiting merge)
  • supplementer (awaiting merge)

As a developer, I want to run the integration tests on the code in a specific branch

πŸ’ͺ Motivation

...so that I can make sure the integration tests run and so that I update the integration tests to test the feature I am developing.

This will also ease the development process by automating the docker image generation and publication and having that done in github actions and pushed to docker hub from there, rather than doing that manually from a laptop.

πŸ“– Additional Details

Integration tests are tests which requires the deployment of muultiple components, which source code is distributed in different github repositories. We want to aggregate them in application repositories (e.g. registry) which contains the code to deploy the different components from docker images and run the integration test.

I was thinking we could publish docker images with a suffix named after the branch, for example registry-api:1.2.0-SNAPSHOT.{name of the branch}

I don't know what would trigger the generation of the image and the deployment in an integration environment. Every commit/push sounds too often and not needed. In my previous job we were using a slack channel to command a robot which would deploy in the integration environment: deploy {env-name} {application} {branch}

I guess that could be managed in jenkins.

We can discuss the details more during one breakout meeting.

βš–οΈ Acceptance Criteria

Given
When I perform
Then I expect

βš™οΈ Engineering Details

As a developer, I want to have a documentation for the Continuous Deployment in the DEV STAGING venue

πŸ’ͺ Motivation

...so that I can check if that works, so that I can add an application.

πŸ“– Additional Details

We need a documentation to access the jenkins server and check that deployment work and to be able to add new applications.

I would expect this documentation to be around there https://wiki.jpl.nasa.gov/display/PDSEN/Developer+Guides since it is dedicated to the dev team and not available outside JPL.

βš–οΈ Acceptance Criteria

Given the PDS Engineering node internal documentation
When I perform go to the devlopers guidelines
Then I expect to find a documentation for the jenkins platform and the CD on the DEV STAGING venue

βš™οΈ Engineering Details

Create new Java template repo that works for unstable and stable builds

Brief Description

Based upon NASA-PDS/template-repo-python#5 and https://github.com/NASA-PDS/pds-template-repo-java, lets:

See https://github.com/NASA-PDS/validate or https://github.com/NASA-PDS/registry-api-service for example java repos

Deliverable

  • Link to working execution of an unstable release
  • Link to working execution of an stable release

As a user, I want PDS EN produced Docker images to support multiple platforms (x86 and ARM)

Checked for duplicates

Yes - I've already checked

πŸ§‘β€πŸ”¬ User Persona(s)

other developers or testers mostly.

πŸ’ͺ Motivation

...so that I can deploy PDS EN docker images on my macbook using a M1 chip.

πŸ“– Additional Details

This need to be implemented in the CICD.

Acceptance Criteria

Given
When I perform
Then I expect

βš™οΈ Engineering Details

No response

Fully terraform the registry application

πŸ’‘ Description

For deployment on NGAP now.

Components to terraform:

  • AWS managed OpenSearch (includes Kibana), with registry-manager creation of the schema
  • registry-api
  • registry-sweeper
  • scalable harvest (optional)

Remove version from docker's Dockerfile

πŸ’‘ Description

Sometimes the version of the application is hardcoded in the Dockerfile file, which requires to update it (and not forget to do so) whenever a new stable release is made.

We would like the application to be an argument of the docker build command that roundup can manage, so to simplify the life of the release manager.

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.