tracehubpm / pmo Goto Github PK
View Code? Open in Web Editor NEWProject registry, facilities and its home
License: MIT License
Project registry, facilities and its home
License: MIT License
I suggest this model of managing private repositories in a PMO:
All public projects will be free forever with support of all features.
@hizmailovich WDYT?
lets document steps required, to create a new project in a PMO
Lets send an invite to @tracehubgit in repo when project is created
We should think about JIRA Identity Provider, so we can retrieve information from JIRA and operate there. API should be similar to existing GitHub Identity Provider
The puzzle 2-e54979ee
from #2 has to be resolved:
Lines 15 to 18 in 9b49b8b
The puzzle was created by @hizmailovich on 15-Jan-24.
Estimate: 90 minutes, role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.
we are using
$ mvn clean install -DskipITs
to run default build cycle without integration tests, lets simplify it by removing failsafe-maven-plugin from the default maven profile, and including it only on a special profile, called simulation
or something similar.
so it should look
$ mvn clean install
and for integration tests
$ mvn clean install -Psimulation
pmo/src/main/resources/db/changelog/2024/001-projects.sql
Lines 36 to 43 in fa5ef9e
Lets change email
to login
, since we are not operating the emails for now, only with logins on GitHub, GitLab, and other platforms.
Emails can be added lately
The puzzle 1-ed8090c3
from tracehubpm/pmo-java-sdk#1 has to be resolved:
pmo/src/main/java/git/tracehub/pmo/controller/ProjectController.java
Lines 81 to 85 in ebc419c
The puzzle was created by @rultor on 23-Jan-24.
Estimate: 45 minutes, role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.
The puzzle 44-48bf6f8b
from #44 has to be resolved:
pmo/src/main/java/git/tracehub/pmo/secret/DefaultSecrets.java
Lines 34 to 36 in 786aafb
The puzzle was created by @hizmailovich on 20-Feb-24.
Estimate: 30 minutes, role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.
The puzzle 1-bb3b3f26
from tracehubpm/pmo-java-sdk#1 has to be resolved:
pmo/src/main/java/git/tracehub/pmo/controller/ProjectController.java
Lines 101 to 105 in ebc419c
The puzzle was created by @rultor on 23-Jan-24.
Estimate: 45 minutes, role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.
we should customize our Keycloak application, so it should use our custom color palette and icons
Lets define a proper database schema and create a Liquibase migrations.
We need a project
that has:
id
PRIMARY KEY, UUIDname
VARCHAR (32) NOT NULLdescription
VARCHAR (512)active
is it active or not (Boolean type)performers
: probably we will need a new table called performer
with all of the performer data and project
FKBesides things above, we need to store this data too:
secrets
which is a simple key-value pairs a.k.a secret variables, described heredependencies
, I think it can just an array of strings in project
tabletickets
the same as performers, should be a separate table with project
FK, these puzzles will help you understand what kind of fields we need to store:
something does not work
More convenient way is RSE. It would be automatically handled by Spring
Can be replaced with
public class SomeExcpetion extends ResponseStatusException {
Response:
HTTP/1.1 404
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Sat, 26 Dec 2020 19:38:09 GMT
{
"timestamp": "2020-12-26T19:38:09.426+00:00",
"status": 404,
"error": "Not Found",
"path": "/some/path"
}
We should implement a few endpoints for getting ticket information, in the database we need to store issue number, repo and full file path to the related job, and status; for instance:
issue number
: #34
repo
: tracehubpm/pmo
job
: .trace/jobs/fix-blah-blah-blah.yml
status
: status of the ticket, opened or closed.
Probably, we need 2 read-endpoints that will return us issue number
by full path + repo
and full path
by issue number + repo
.
And we need 1 write-endpoint for submitting ticket.
blocks: tracehubpm/tracehub#31, tracehubpm/tracehub#32, tracehubpm/tracehub#33
We should conduct those tickets to implement it right
The puzzle 1-ecd686dc
from tracehubpm/pmo-java-sdk#1 has to be resolved:
pmo/src/main/java/git/tracehub/pmo/security/IdpToken.java
Lines 58 to 62 in ebc419c
The puzzle was created by @rultor on 23-Jan-24.
Estimate: 45 minutes, role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.
As I described here, we need to store secrets inside our database, to give a possibility to a user to reference the values from it:
# we are in project.yml
...
backlog:
type: JIRA
jira-url: ${jira-url}
...
we should create and maintain API in PMO for storing secrets, data schema probably should be something like this:
key
: the key of the secretvalue
: the value of the secretAPI should be simply stupid:
key
, value
value
by the key
Its something new
It something new
now we doing something like this:
throw new ResourceAlreadyExistsException(...);
and we do support exception handling via Spring Exception Handlers:
pmo/src/main/java/git/tracehub/pmo/controller/AdviceController.java
Lines 76 to 87 in 385414f
We actually can get rid of this by making all our custom exceptions extend HttpStatusException
. After this all of them will be handled by Spring
@hizmailovich wdyt?
The puzzle 2-24aad16a
from #2 has to be resolved:
Lines 8 to 11 in 9b49b8b
The puzzle was created by @hizmailovich on 15-Jan-24.
Estimate: 60 minutes, role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.
we should prepare pmo project for being deployed to cloud VM with public IPv4, I'm looking forward Yandex cloud, Selectel, and Timeweb.
Besides that, we should have PostgreSQL instance for pmo + keycloak. Timeweb cloud database service looks quite good.
On deploy, rultor should be able to pull the image with version we providing and deploy it with an environment variables bundle to the Cloud VM.
We should create an all-events webhhok, right after the project was registered in pmo.
Docs: https://docs.github.com/en/webhooks/webhook-events-and-payloads
Lets create a few labels in GitHub repo when project is created:
here is the docs: https://docs.github.com/en/rest/issues/labels?apiVersion=2022-11-28
The puzzle 44-ef410327
from #44 has to be resolved:
pmo/src/main/java/git/tracehub/pmo/controller/SecretController.java
Lines 39 to 40 in 786aafb
The puzzle was created by @hizmailovich on 20-Feb-24.
Estimate: 30 minutes, role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.
The puzzle 1-da767492
from tracehubpm/pmo-java-sdk#1 has to be resolved:
pmo/src/main/java/git/tracehub/pmo/controller/ProjectController.java
Lines 114 to 116 in ebc419c
The puzzle was created by @rultor on 23-Jan-24.
Estimate: 45 minutes, role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.
Lets buy a domain like pmo.tracehub.git
or something similar
pmo GitHub repository, does not have a README that explains how to install, run and test the pmo software, we should fix that
The puzzle 49-dbcd9483
from #49 has to be resolved:
pmo/src/main/resources/application.yaml
Line 25 in 4878aa1
The puzzle was created by @h1alexbel on 23-Feb-24.
Estimate: 60 minutes, role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.
The puzzle 44-57fcb942
from #44 has to be resolved:
pmo/src/main/java/git/tracehub/pmo/controller/SecretController.java
Lines 41 to 43 in 786aafb
The puzzle was created by @hizmailovich on 20-Feb-24.
Estimate: 30 minutes, role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.
It's not so convenient to start pmo application and docker compose services separately, let's add it to docker compose services
lets configure GitLab OAuth
something new
We should provide an alternative way of running PMO application. So, since its an open source product, each user can pull the code and run on its own servers. Lets prepare docs on how to do so. Check this one for a reference:
s3:
region: us-east-1
bucket: xml.0pdd.com
key: AKIAI..........UTSQA
secret: Z2FbKB..........viCKaYo4H..........vva21
sentry: https://[email protected]/229223
dynamo:
region: us-east-1
key: AKIAI..........UTSQA
secret: Z2FbKB..........viCKaYo4H..........vva21
github:
client_id: b96a3b5..........87e
client_secret: be61c471154e2..........66f434d33e0f63a5f
encryption_secret: some-random-text
login: 0pdd
pwd: GitHub-Password
smtp:
host: email-smtp.us-east-1.amazonaws.com
port: 587
key: AKIAI..........UTSQA
secret: Z2FbKB..........viCKaYo4H..........vva21
id_rsa: |
-----BEGIN RSA PRIVATE KEY-----
MIIJKAIBAAKCAgEAoE94Xy8TGMbnoK5cKJXWccr9qLLDc/liKpMAMlnQEFDCgi0l
...
NaaFpowFg8LKSiwc04ERduu72Imv5GJBCkhS8F7laURXFcZiYNqBnWYzY0U=
-----END RSA PRIVATE KEY-----
taken from https://github.com/yegor256/0pdd/?tab=readme-ov-file#how-to-contribute
how to create a project using RESTful API? I can not find any examples in neither in integration test cases nor in on Swagger UI
Let's remove number
part from URI, soit will be /ticket/$repo/$number
for now, when keycloak just started, we need to setup secrets manually. Maybe we should think about some automation for that?
@rultor release, tag=0.0.1
The puzzle 8-e2415ebf
from #8 has to be resolved:
pmo/src/main/java/git/tracehub/pmo/platforms/Label.java
Lines 27 to 28 in 639288b
The puzzle was created by @rultor on 06-Feb-24.
Estimate: 30 minutes, role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.