Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add sample stream and release metadata, and release index #207

Merged
merged 6 commits into from
Jul 12, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions metadata/release-index.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we include stream name in release-index.json as well? Can be useful to figure out stream while looking at the json file.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The release-index is inside of a stream specific location (e.x.: s3://fcos-builds/prod/streams/<stream>/release-index.json)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Followup: the release-index is also specific to an architecture. Thus, architecture label should be part of the location, or somewhere in the index.

Copy link
Contributor

@arithx arithx Jun 24, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lucab: Reading the code again with more coffee leads me to believe that I misread something earlier and that is not the case currently.

Each entry in release-index points to an endpoint for the release.json which IS stream specific but is NOT architecture specific.

e.x.:

s3://fcos-builds/prod/streams/foo/release-index.json is the release-index for the foo stream. An example entry would be something like:

{
    "commit": "<hash>",
    "version": "30.123.45",
    "endpoint": "https://fcos-builds.s3.amazonaws.com/prod/streams/foo/builds/30.123.45/release.json"
}

"releases": [
{
"commit": "<hash>",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From comment #98 (comment), I believe commit and version we are referring here is ostree commit and version. One thing to note that, we will have same ostree version number for a release across all arches but commit hash will be different for different arches.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

None of these fields are unique, we can have different commits with the same version and it won't conflict.

"version": "<version>",
"metadata": "<url endpoint to build release metadata>"
},
{
"commit": "<hash>",
"version": "<version>",
"metadata": "<url endpoint to build release metadata>"
}
],
"metadata": {
"last-modified": "<timestamp>"
}
}
117 changes: 117 additions & 0 deletions metadata/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Note: the actual document will be JSON

release: 30.1.2.3
stream: stable
metadata:
last-modified: "2019-06-04T16:18:34Z"
architectures:
x86_64:
commit: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
media:
aws:
artifacts:
"vmdk.xz":
disk:
location: https://artifacts.example.com/dsB2fnzP7KhqzQ5a.vmdk.xz
signature: https://artifacts.example.com/dsB2fnzP7KhqzQ5a.vmdk.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
images:
us-east-1:
image: ami-0123456789abcdef
us-east-2:
image: ami-0123456789abcdef
azure:
artifacts:
"vdi.xz":
disk:
location: https://artifacts.example.com/aeng0xah6vaaVosh.vdi.xz
signature: https://artifacts.example.com/aeng0xah6vaaVosh.vdi.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
images:
global:
image: Fedora:CoreOS:Stable:30.1.2.3
digitalocean:
artifacts:
"raw.xz":
disk:
location: https://artifacts.example.com/ichaloomuHax9ahR.raw.xz
signature: https://artifacts.example.com/ichaloomuHax9ahR.raw.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
gcp:
artifacts:
"tar.gz":
disk:
location: https://artifacts.example.com/ais7tah1aa7Ahvei.tar.gz
signature: https://artifacts.example.com/ais7tah1aa7Ahvei.tar.gz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
image: projects/fedora-cloud/global/images/fedora-coreos-stable-30-1-2-3
metal:
artifacts:
"raw.xz":
disk:
location: https://artifacts.example.com/xTqYJZKCPNvoNs6B.raw.xz
signature: https://artifacts.example.com/xTqYJZKCPNvoNs6B.raw.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
iso:
disk:
location: https://artifacts.example.com/ADE5GO3bjAXeDcLO.iso
signature: https://artifacts.example.com/ADE5GO3bjAXeDcLO.iso.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
pxe:
kernel:
location: https://artifacts.example.com/hkIj8FkCydT3lV9h
signature: https://artifacts.example.com/hkIj8FkCydT3lV9h.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
initramfs:
location: https://artifacts.example.com/a9ytS8yB4cGZpca1.cpio.gz
signature: https://artifacts.example.com/a9ytS8yB4cGZpca1.cpio.gz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
"installer.iso":
disk:
location: https://artifacts.example.com/KwKye6YW4SIIPrhY.iso
signature: https://artifacts.example.com/KwKye6YW4SIIPrhY.iso.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
installer-pxe:
kernel:
location: https://artifacts.example.com/EtqI0KsLIwZOHlCx
signature: https://artifacts.example.com/EtqI0KsLIwZOHlCx.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
initramfs:
location: https://artifacts.example.com/EhoS1x66RVA2k8y6.cpio.gz
signature: https://artifacts.example.com/EhoS1x66RVA2k8y6.cpio.gz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
openstack:
artifacts:
"qcow.xz":
disk:
location: https://artifacts.example.com/oKooheogobofai8l.qcow.xz
signature: https://artifacts.example.com/oKooheogobofai8l.qcow.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
packet:
artifacts:
"raw.xz":
disk:
location: https://artifacts.example.com/Oofohng0xo2phai5.raw.xz
signature: https://artifacts.example.com/Oofohng0xo2phai5.raw.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
qemu:
artifacts:
"qcow.xz":
disk:
location: https://artifacts.example.com/Siejeeb6ohpu8Eel.qcow.xz
signature: https://artifacts.example.com/Siejeeb6ohpu8Eel.qcow.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
virtualbox:
artifacts:
ova:
disk:
location: https://artifacts.example.com/yohsh2haiquaeYah.ova
signature: https://artifacts.example.com/yohsh2haiquaeYah.ova.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
vmware:
artifacts:
ova:
disk:
location: https://artifacts.example.com/quohgh8ei0uzaD5a.ova
signature: https://artifacts.example.com/quohgh8ei0uzaD5a.ova.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
163 changes: 163 additions & 0 deletions metadata/stream.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
# Note: the actual document will be JSON

# Include stream name so the document is self-contained
stream: stable
metadata:
last-modified: "2019-06-04T16:18:34Z"
architectures:
x86_64:
artifacts:
# Some of these will be useful for many users, such as qemu or
# openstack. Some will likely only be useful for cloud operators,
# such as digitalocean or packet. Some, such as aws, are useful
# for users in special situations.
aws:
release: 30.1.2.3
formats:
# Generally one format per platform, but allow for future expansion
# without obscuring the platform ID (as on Container Linux)
"vmdk.xz":
# Generally only one artifact, but not always
disk:
location: https://artifacts.example.com/dsB2fnzP7KhqzQ5a.vmdk.xz
signature: https://artifacts.example.com/dsB2fnzP7KhqzQ5a.vmdk.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
# Could also include artifact size/uncompressed-size/uncompressed-sha256 from meta.json
azure:
release: 30.1.2.3
formats:
"vdi.xz":
disk:
location: https://artifacts.example.com/aeng0xah6vaaVosh.vdi.xz
signature: https://artifacts.example.com/aeng0xah6vaaVosh.vdi.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
digitalocean:
release: 30.1.2.3
formats:
"raw.xz":
disk:
location: https://artifacts.example.com/ichaloomuHax9ahR.raw.xz
signature: https://artifacts.example.com/ichaloomuHax9ahR.raw.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
gcp:
release: 30.1.2.3
formats:
"tar.gz":
disk:
location: https://artifacts.example.com/ais7tah1aa7Ahvei.tar.gz
signature: https://artifacts.example.com/ais7tah1aa7Ahvei.tar.gz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
metal:
release: 30.1.2.3
formats:
"raw.xz":
disk:
location: https://artifacts.example.com/xTqYJZKCPNvoNs6B.raw.xz
signature: https://artifacts.example.com/xTqYJZKCPNvoNs6B.raw.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
iso:
disk:
location: https://artifacts.example.com/ADE5GO3bjAXeDcLO.iso
signature: https://artifacts.example.com/ADE5GO3bjAXeDcLO.iso.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
pxe:
kernel:
location: https://artifacts.example.com/hkIj8FkCydT3lV9h
signature: https://artifacts.example.com/hkIj8FkCydT3lV9h.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
initramfs:
location: https://artifacts.example.com/a9ytS8yB4cGZpca1.cpio.gz
signature: https://artifacts.example.com/a9ytS8yB4cGZpca1.cpio.gz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
"installer.iso":
disk:
location: https://artifacts.example.com/KwKye6YW4SIIPrhY.iso
signature: https://artifacts.example.com/KwKye6YW4SIIPrhY.iso.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
installer-pxe:
kernel:
location: https://artifacts.example.com/EtqI0KsLIwZOHlCx
signature: https://artifacts.example.com/EtqI0KsLIwZOHlCx.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
initramfs:
location: https://artifacts.example.com/EhoS1x66RVA2k8y6.cpio.gz
signature: https://artifacts.example.com/EhoS1x66RVA2k8y6.cpio.gz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
openstack:
release: 30.1.2.3
formats:
"qcow.xz":
disk:
location: https://artifacts.example.com/oKooheogobofai8l.qcow.xz
signature: https://artifacts.example.com/oKooheogobofai8l.qcow.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
packet:
release: 30.1.2.3
formats:
"raw.xz":
disk:
location: https://artifacts.example.com/Oofohng0xo2phai5.raw.xz
signature: https://artifacts.example.com/Oofohng0xo2phai5.raw.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
qemu:
release: 30.1.2.3
formats:
"qcow.xz":
disk:
location: https://artifacts.example.com/Siejeeb6ohpu8Eel.qcow.xz
signature: https://artifacts.example.com/Siejeeb6ohpu8Eel.qcow.xz.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
virtualbox:
release: 30.1.2.3
formats:
ova:
disk:
location: https://artifacts.example.com/yohsh2haiquaeYah.ova
signature: https://artifacts.example.com/yohsh2haiquaeYah.ova.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
vmware:
release: 30.1.2.3
formats:
ova:
disk:
location: https://artifacts.example.com/quohgh8ei0uzaD5a.ova
signature: https://artifacts.example.com/quohgh8ei0uzaD5a.ova.sig
sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

images:
# Cloud images to be launched directly by users. These are in a
# separate section because they might not always in sync with the
# release artifacts above.
aws:
regions:
us-east-1:
# We know the release because we uploaded it, so might as well
# list it.
release: 30.1.2.3
image: ami-0123456789abcdef
us-east-2:
release: 30.1.2.3
image: ami-0123456789abcdef
azure:
# We could give a specific image URN here, but we probably want
# users to always use a Marketplace URN. So this is a static
# string, and represents advice rather than a value we might
# change.
image: Fedora:CoreOS:stable:latest
gcp:
# We could give a specific image name here, but we probably want
# users to always use an image family. So this is a static string,
# and represents advice rather than a value we might change.
image: projects/fedora-cloud/global/images/family/fedora-coreos-stable
digitalocean:
# We don't control platform ingest, so an image slug is probably
# the best we can do.
image: fedora-coreos-stable
packet:
# Images don't have addressable versions, so an operating system
# slug is the best we can do.
image: fedora_coreos_stable

updates:
Copy link
Contributor

@lucab lucab Jun 27, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm unsure about the indentation of this. I don't think we want to have different update metadata for each architecture, to avoid exploding RelEng complexity. If so, I think this can become a top-level section on its own.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, in hindsight that choice seems somewhat arbitrary. If we want different update targets for different arches, presumably we'd also want them for different platforms. I don't want to introduce that level of complexity right now, so I'll switch this to a single value.

# Primarily meant as input to Cincinnati
release: 30.1.2.3