You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [BCP 14](https://tools.ietf.org/html/bcp14)[RFC2119](https://tools.ietf.org/html/rfc2119)[RFC8174](https://tools.ietf.org/html/rfc8174) when, and only when, they appear in all capitals, as shown here.
4
4
@@ -10,30 +10,34 @@ When using the name 'version' we mean the versioning scheme described in [VERSIO
10
10
11
11
This document is to describe the functionality a project MUST provide in terms of creating build artifacts. It also describes the structure in which project's MUST write build artifacts in.
12
12
13
-
We propose:
13
+
a project MUST provide:
14
+
14
15
- a folder name convention for build artifacts
15
16
- a folder structure for the above-mentioned build artifacts folder
16
-
- a list of platforms we will target
17
-
-Using docker-compose with a service for each build target
17
+
- a list of targets
18
+
-a file called `bin/build.{target}.{ext}` to target each of the build targets
18
19
- a build pipeline given the above pretext
19
20
20
21
The purpose of having a uniform way of producing a build is that we may ALL produce builds for any of the projects, making the onramp for new developers less steep, while still maintaining an exceptionally high level of quality.
21
22
22
-
Further, the projects should adhere to the principles of 'architecture as code' - and should require a very minimal set of dependencies in order to contribute. That said, we have chose to center around docker for creating builds. Windows builds may be created using `wine`. If Wine is not an option, the standard may be broken to accomodate such cases.
23
+
The projects should follow the 'architecture as code' principal - and should require a very minimal set of dependencies.
23
24
24
25
It is the responsibilty of the build tooling to write artifacts to the appropriate location as outlined in this specification.
25
26
26
27
## Build Folder Name
28
+
27
29
The cannonical folder for builds SHALL be named `build` and be located at the root of the project repository.
28
30
Each project MUST `git ignore` the `build` folder.
29
31
30
32
## Build Folder Structure
33
+
31
34
Files and folder names MUST be lowercase.
32
35
The result of the build process should create a folder structure as follows:
36
+
33
37
```
34
38
.
35
39
└── build
36
-
└── {platform}
40
+
└── {target}
37
41
└── {project-name}.{ext}
38
42
```
39
43
@@ -46,25 +50,45 @@ Below is an example:
46
50
└── my-build.exe
47
51
```
48
52
49
-
## Build Platform Targets
50
-
Below is a list of platforms we will target for each project
53
+
## Build Targets
54
+
55
+
Below is a list of suggested targets for a project
51
56
1. windows
52
57
2. linux
53
-
3. mac
58
+
3. macos
59
+
60
+
## Build script
54
61
55
-
## Docker-compose to create a build
56
-
Each project MUST have a /docker-compose.build.yml file.
57
-
The result of this is that every project MUST produce a build for each target platform when the following command is invoked:
58
-
-`docker-compose up -f ./docker-compose.build.yml`
62
+
Each release target MUST have a `bin/build.{target}.{ext}` file.
59
63
60
-
The docker-compose.build.yml file MUST be placed in the project's root directory.
61
-
Any dockerfiles used by the docker-compose may be placed at the discretion of the developer of the project.
64
+
The result of this is that every project MUST produce a build for each target when the following command is invoked:
65
+
66
+
```
67
+
bin/build.{target}.{ext}`
68
+
```
69
+
70
+
The file MUST be placed in the project's `bin` directory.
62
71
63
72
## Build Pipeline
64
-
Starting from clean master branch with latest HEAD
65
73
66
-
### Building all targets
67
-
`docker-compose -f ./docker-compose.build.yml up` should create builds for each of the targeted platforms, and place the build artifacts in a folder structure outlined above.
74
+
### Building targets
75
+
76
+
`bin/build.{target}.{ext}` should create builds for each of the targets, and place the build artifacts in a folder structure outlined above.
68
77
69
-
### Building specific target
70
-
`docker-compose -f ./docker-compose.build.yml up [windows | linux | mac]`
Copy file name to clipboardexpand all lines: CONTRIBUTING.md
+6-15
Original file line number
Diff line number
Diff line change
@@ -40,31 +40,22 @@ For small documentation changes and fixes, these can be done quickly following t
40
40
### Submitting changes
41
41
42
42
1. Review & Test changes
43
-
44
-
If the code changed, then test it. If documentation changed, then preview the rendered Markdown.
45
-
43
+
* If the code changed, then test it. If documentation changed, then preview the rendered Markdown.
46
44
2. Commiting
47
-
48
-
Follow the [Convention Commits](CONVENTIONAL_COMMITS.md) guidelines to create a commit message
49
-
50
-
45
+
* Follow the [Convention Commits](CONVENTIONAL_COMMITS.md) guidelines to create a commit message
51
46
3. Sign the CLA
52
-
53
-
Make sure you've signed the repository's Contributor License Agreement. We are not asking you to assign copyright to us, but to give us the right to distribute your code without restriction. We ask this of all contributors in order to assure our users of the origin and continuing existence of the code. You only need to sign the CLA once.
54
-
55
-
47
+
* Make sure you've signed the repository's Contributor License Agreement. We are not asking you to assign copyright to us, but to give us the right to distribute your code without restriction. We ask this of all contributors in order to assure our users of the origin and continuing existence of the code. You only need to sign the CLA once.
56
48
4. Submit a pull request
57
-
58
-
Push local changes to your forked repository and make a pull request. Follow the [Convention Commits](CONVENTIONAL_COMMITS.md) guidelines for naming Github pull requests and what to put in the body.
49
+
* Push local changes to your forked repository and make a pull request. Follow the [Convention Commits](CONVENTIONAL_COMMITS.md) guidelines for naming Github pull requests and what to put in the body.
59
50
60
51
61
52
## Building
62
53
63
-
Follow the build process is outlined in [the BUILDING spec](BUILDING.md) to create a build.
54
+
Follow the build process is outlined in [BUILDING.md](BUILDING.md) to create a build.
64
55
65
56
66
57
## Releasing
67
58
68
-
Follow the release process is outlined in [the RELEASING spec](RELEASING.md) to create a release.
59
+
Follow the release process is outlined in [RELEASING.md](RELEASING.md) to create a release.
Copy file name to clipboardexpand all lines: README.md
+6-13
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,14 @@
1
1
# Pristine
2
2
3
-
Pristine is an open source repository in its original condition. Its goal is to be a starting point for new open source projects following a Documentation Driven Development pattern, as well as a resource from which to augment existing documentation.
3
+
Pristine is an open source repository in its original condition.
4
+
5
+
There are a lack of repositories to start from to build community driven open source projects. Pristine is a starting point, it follows a Documentation Driven Development approach, and can be used as a resource to augment existing documentation.
4
6
5
7
## Documentation Driven Development
6
8
7
-
There are many ways to drive open source development. Organizing solutions to this challenge around the README gives a middle ground between technical and non-technical specifications.
9
+
There are many ways to drive open source development. Documenting the problem in the README gives a middle ground between technical and non-technical specifications. This allows organizing solutions to this challenge around community and documentation.
8
10
9
-
> By the same principle a beautifully crafted library with no documentation is also damn near worthless. If your software solves the wrong problem or nobody can figure out how to use it, there’s something very bad going on.
11
+
> [...] a beautifully crafted library with no documentation is also damn near worthless. If your software solves the wrong problem or nobody can figure out how to use it, there’s something very bad going on.
10
12
11
13
-[Readme Driven Development](http://tom.preston-werner.com/2010/08/23/readme-driven-development.html) by Tom Preson-Werner
12
14
@@ -38,14 +40,5 @@ To get started, [fork](https://help.github.com/articles/fork-a-repo/) or [duplic
38
40
39
41
### Contributing
40
42
41
-
How to contribute, build and release are outlined in [CONTRIBUTING.md](CONTRIBUTING.md), [BUILDING.md](BUILDING.md) and [RELEASING.md](RELEASING.md) respectively.
42
-
43
-
### Requirements
44
-
45
-
#### Docker:
46
-
47
-
Docker is used as a building block in [BUILDING.md](BUILDING.md) and [RELEASING.md](RELEASING.md). Here are the resources needed to get started and install docker:
48
-
49
-
-[Install Docker Desktop for Mac](https://docs.docker.com/docker-for-mac/install/)
50
-
-[Install Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/install/)
43
+
How to contribute, build and release are outlined in [CONTRIBUTING.md](CONTRIBUTING.md), [BUILDING.md](BUILDING.md) and [RELEASING.md](RELEASING.md) respectively. Commits in this repository follow the [CONVENTIONAL_COMMITS.md](CONVENTIONAL_COMMITS.md) specification.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [BCP 14](https://tools.ietf.org/html/bcp14)[RFC2119](https://tools.ietf.org/html/rfc2119)[RFC8174](https://tools.ietf.org/html/rfc8174) when, and only when, they appear in all capitals, as shown here.
4
4
@@ -16,54 +16,50 @@ We propose:
16
16
17
17
It is NOT the purpose of this document to describe how a project might create a build, NOR is it describing a strcture in which projects MUST write build artifacts to. It is describing the structure of the releases themselves.
18
18
19
-
## Release Targets
20
-
1. Github
21
-
2. (tentative) docker
22
-
23
19
## Release Pipeline
24
-
The only parameter to the release pipeline is the new semver to use. We will refer to it as newVer.
25
-
Starting from a clean branch:
26
20
27
21
### Create a build from current branch
28
-
Process is outlined in [the BUILDING spec](building.md)
29
-
in summary, we will simply:
22
+
23
+
Process is outlined in [BUILDING.md](BUILDING.md)
24
+
30
25
1. Clean the build directory
31
-
2. run: `docker-compose up -f ./docker-compose.build.yml`
26
+
2. run: `bin/build.{target}.{ext}`
32
27
33
-
### Sign the releases.
34
-
- MUST be a pgp signature
35
-
- MUST be the same pgp key as is registered with Github
36
-
- MUST be a detached ascii-armored (.asc) signature
37
-
- All files in the build folder MUST have an associated signature file
28
+
### Bump the version of the project
29
+
30
+
Projects SHOULD automated the version bump following [CONVENTIONAL_COMMITS.md](CONVENTIONAL_COMMITS.md).
38
31
39
32
### Generate Changelog
40
-
For our projects we will be using [conventional changelog](https://github.com/conventional-changelog/conventional-changelog).
0 commit comments