Skip to content

Commit a25be38

Browse files
authored
Merge pull request #617 from 1EdTech/feature/microsites
Feature/microsites
2 parents 4f21722 + cb2252d commit a25be38

35 files changed

+8527
-3
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
name: Build and Deploy to Cloud Run
2+
3+
on:
4+
push:
5+
branches: [ "publish" ]
6+
workflow_dispatch:
7+
inputs:
8+
branch:
9+
description: 'Branch to deploy from'
10+
required: false
11+
default: 'publish'
12+
type: choice
13+
options:
14+
- publish
15+
16+
env:
17+
PROJECT_ID: ${{ vars.GCP_PROJECT_ID }}
18+
REGION: ${{ vars.GCP_REGION }}
19+
SERVICE: ${{ vars.CLOUD_RUN_SERVICE }}
20+
REPOSITORY: ${{ vars.ARTIFACT_REPO }}
21+
IMAGE_NAME: ${{ vars.IMAGE_NAME }}
22+
ASTRO_BASE_PATH: ${{ vars.PATH }}
23+
# Auth-related variables (from repo variables and secrets)
24+
AUTH0_DOMAIN: ${{ vars.AUTH0_DOMAIN }}
25+
AUTH0_CLIENT_ID: ${{ vars.AUTH0_CLIENT_ID }}
26+
AUTH0_AUDIENCE: ${{ vars.AUTH0_AUDIENCE }}
27+
AUTH_REDIRECT_URI: ${{ vars.AUTH_REDIRECT_URI }}
28+
AUTH_POST_LOGIN_REDIRECT: ${{ vars.AUTH_POST_LOGIN_REDIRECT }}
29+
30+
# Secrets
31+
AUTH0_CLIENT_SECRET: ${{ secrets.AUTH0_CLIENT_SECRET }}
32+
AUTH_COOKIE_SECRET: ${{ secrets.AUTH_COOKIE_SECRET }}
33+
MPS_API_KEY: ${{ secrets.MPS_API_KEY }}
34+
35+
jobs:
36+
deploy:
37+
name: Deploy
38+
runs-on: ubuntu-latest
39+
# Only run on upstream repository, not on forks
40+
if: github.repository == '1edtech/openbadges-specification' && github.event_name != 'pull_request'
41+
permissions:
42+
contents: read
43+
id-token: write
44+
45+
steps:
46+
- name: Checkout
47+
uses: actions/checkout@v4
48+
with:
49+
ref: ${{ github.event.inputs.branch || github.ref }}
50+
51+
- name: Set up Docker Buildx
52+
uses: docker/setup-buildx-action@v3
53+
54+
- name: Set up gcloud auth
55+
uses: google-github-actions/auth@v2
56+
with:
57+
credentials_json: ${{ secrets.GOOGLE_CREDENTIALS }}
58+
59+
- name: Configure gcloud
60+
uses: google-github-actions/setup-gcloud@v2
61+
with:
62+
project_id: ${{ env.PROJECT_ID }}
63+
64+
- name: Configure Artifact Registry Docker auth
65+
run: gcloud auth configure-docker ${{ env.REGION }}-docker.pkg.dev --quiet
66+
67+
- name: Set IMAGE_URI
68+
id: vars
69+
run: echo "IMAGE_URI=${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPOSITORY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}" >> $GITHUB_OUTPUT
70+
71+
- name: Build and push image (linux/amd64)
72+
run: |
73+
docker buildx build \
74+
--platform linux/amd64 \
75+
--build-arg ASTRO_BASE_PATH=${{ env.ASTRO_BASE_PATH }} \
76+
-t ${{ steps.vars.outputs.IMAGE_URI }} \
77+
--push .
78+
79+
- name: Deploy to Cloud Run
80+
id: deploy
81+
uses: google-github-actions/deploy-cloudrun@v2
82+
with:
83+
service: ${{ env.SERVICE }}
84+
region: ${{ env.REGION }}
85+
image: ${{ steps.vars.outputs.IMAGE_URI }}
86+
flags: |
87+
--allow-unauthenticated
88+
--ingress=internal-and-cloud-load-balancing
89+
--port=4321
90+
--set-env-vars ASTRO_BASE_PATH=${{ env.ASTRO_BASE_PATH }}
91+
--set-env-vars AUTH0_DOMAIN=${{ env.AUTH0_DOMAIN }}
92+
--set-env-vars AUTH0_CLIENT_ID=${{ env.AUTH0_CLIENT_ID }}
93+
--set-env-vars AUTH0_CLIENT_SECRET=${{ env.AUTH0_CLIENT_SECRET }}
94+
--set-env-vars AUTH0_AUDIENCE=${{ env.AUTH0_AUDIENCE }}
95+
--set-env-vars AUTH_COOKIE_SECRET=${{ env.AUTH_COOKIE_SECRET }}
96+
--set-env-vars AUTH_REDIRECT_URI=${{ env.AUTH_REDIRECT_URI }}
97+
--set-env-vars AUTH_POST_LOGIN_REDIRECT=${{ env.AUTH_POST_LOGIN_REDIRECT }}
98+
--set-env-vars MPS_API_KEY=${{ env.MPS_API_KEY }}
99+
100+
101+
- name: Output URL
102+
run: echo "Deployed to ${{ steps.deploy.outputs.url }}"
103+

Dockerfile

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
FROM us-central1-docker.pkg.dev/specautomation-458709/microsites/microsites-base:dev
2+
ARG ASTRO_BASE_PATH=/case/
3+
ENV ASTRO_BASE_PATH=/case/
4+
5+
# This clears some test upstream content bundled in the base image, preserving content.config.ts
6+
RUN if [ -f /app/src/content/content.config.ts ]; then \
7+
cp /app/src/content/content.config.ts /tmp/content.config.ts; \
8+
fi && \
9+
rm -rf /app/src/content && \
10+
mkdir -p /app/src/content/standards && \
11+
if [ -f /tmp/content.config.ts ]; then \
12+
cp /tmp/content.config.ts /app/src/content/content.config.ts; \
13+
rm /tmp/content.config.ts; \
14+
fi
15+
16+
17+
COPY --chown=astro:nodejs ob_v3p0/microsites /app/src/content/standards/
18+
19+
# The base image handles everything:
20+
# 1. Runtime processes the assets (transforms paths, copies assets)
21+
# 2. Starts the Astro server
22+
# No additional commands needed!

ob_v3p0/common_credentials.lines

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ Package SharedCredentialDataModels DataModel
196196
Property points String 0..1 "The points associated with this rubric criterion level."
197197
Mixin Extensions
198198

199-
Class VerifiableCredential Unordered false [] "A Verifiable Credential as defined in the [[VC-DATA-MODEL-2.0]]. As described in [[[#proofs-signatures]]], at least one proof mechanism, and the details necessary to evaluate that proof, MUST be expressed for a credential to be a verifiable credential. In the case of an embedded proof, the credential MUST append the proof in the `proof` property." "i:https://www.w3.org/2018/credentials#VerifiableCredential"
199+
Class VerifiableCredential Unordered false [] "A Verifiable Credential as defined in the [[VC-DATA-MODEL-2.0]]. As described in [[[#data-integrity]]], at least one proof mechanism, and the details necessary to evaluate that proof, MUST be expressed for a credential to be a verifiable credential. In the case of an embedded proof, the credential MUST append the proof in the `proof` property." "i:https://www.w3.org/2018/credentials#VerifiableCredential"
200200
Property @context Context 1..* "The value of the `@context` property MUST be an ordered set where the first item is a URI with the value 'https://www.w3.org/ns/credentials/v2'."
201201
Constraint items [https://www.w3.org/ns/credentials/v2]
202202
Property id URI 0..1 "Unambiguous reference to the credential."
@@ -361,7 +361,7 @@ Package SharedLegacyCredentialsDataModels DataModel
361361
Property credentialSubject EndorsementSubject 1 "The individual, entity, organization, assertion, or achievement that is endorsed and the endorsement comment."
362362
Property awardedDate DateTimeZ 0..1 "Timestamp of when the credential was awarded. `validFrom` is used to determine the most recent version of a Credential in conjunction with `issuer` and `id`. Consequently, the only way to update a Credental is to update the `validFrom`, losing the date when the Credential was originally awarded. `awardedDate` is meant to keep this original date."
363363

364-
Class VerifiableCredentialv1p1 Unordered false [] "A Verifiable Credential as defined in the [[VC-DATA-MODEL]]. As described in [[[#proofs-signatures]]], at least one proof mechanism, and the details necessary to evaluate that proof, MUST be expressed for a credential to be a verifiable credential. In the case of an embedded proof, the credential MUST append the proof in the `proof` property." "i:https://www.w3.org/2018/credentials#VerifiableCredential"
364+
Class VerifiableCredentialv1p1 Unordered false [] "A Verifiable Credential as defined in the [[VC-DATA-MODEL]]. As described in [[[#data-integrity]]], at least one proof mechanism, and the details necessary to evaluate that proof, MUST be expressed for a credential to be a verifiable credential. In the case of an embedded proof, the credential MUST append the proof in the `proof` property." "i:https://www.w3.org/2018/credentials#VerifiableCredential"
365365
Property @context Context 1..* "The value of the `@context` property MUST be an ordered set where the first item is a URI with the value 'https://www.w3.org/2018/credentials/v1'."
366366
Constraint items [https://www.w3.org/2018/credentials/v1]
367367
Property id URI 0..1 "Unambiguous reference to the credential."

ob_v3p0/impl/introduction.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ include:
8989
- Revocation of an Issued Credential
9090
- Badge Class Status
9191

92-
[Comprehensive Learner Record use cases (not yet published)](https://github.com/1EdTech/ComprehensiveLearnerRecord/blob/develop/clr_v2p0/usecases.md)
92+
[Comprehensive Learner Record use cases](https://www.imsglobal.org/spec/clr/v2p0#use-cases)
9393
include:
9494

9595
- Recent graduate wants to hold a copy of their own official transcript
Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
{
2+
"OB-30": {
3+
"title": "Open Badges Specification v3.0",
4+
"href": "https://www.imsglobal.org/spec/ob/v3p0/",
5+
"status": "Candidate Final Public",
6+
"publisher": "1EdTech"
7+
},
8+
"OB-CERT-30": {
9+
"title": "Open Badges Specification Conformance and Certification Guide v3.0",
10+
"href": "https://www.imsglobal.org/spec/ob/v3p0/cert/",
11+
"status": "Candidate Final Public",
12+
"publisher": "1EdTech"
13+
},
14+
"OB-IMPL-30": {
15+
"title": "Open Badges Implementation Guide v3.0",
16+
"href": "https://www.imsglobal.org/spec/ob/v3p0/impl/",
17+
"status": "Candidate Final Public",
18+
"publisher": "1EdTech"
19+
},
20+
"OB-ERRATA-30": {
21+
"title": "Open Badges Specification v3.0: Errata",
22+
"href": "https://www.imsglobal.org/spec/ob/v3p0/errata/"
23+
},
24+
"OB-INFO-30": {
25+
"title": "Open Badges Specification Information Model v3.0",
26+
"href": "https://www.imsglobal.org/spec/ob/v3p0/InfoModel/ob_InfoModel.html",
27+
"status": "IMS Base Document",
28+
"publisher": "1EdTech"
29+
},
30+
"OB-BAKE-30": {
31+
"title": "Open Badges Specification Baking a Badge v3.0",
32+
"href": "https://www.imsglobal.org/spec/ob/v3p0/ImageBinding/ob_ImageBinding.html",
33+
"status": "IMS Base Document",
34+
"publisher": "1EdTech"
35+
},
36+
"OB-REST-30": {
37+
"title": "Open Badges Specification REST/JSON API v3.0",
38+
"href": "https://www.imsglobal.org/spec/ob/v3p0/RESTBinding/ob_RESTBind.html",
39+
"status": "IMS Base Document",
40+
"publisher": "1EdTech"
41+
},
42+
"OB-OPEN-30": {
43+
"title": "Open Badges Specification OpenAPI Schema v3.0",
44+
"href": "https://www.imsglobal.org/spec/ob/v3p0/schema/openapi/",
45+
"status": "IMS Base Document",
46+
"publisher": "1EdTech"
47+
},
48+
"OB-JSON-30": {
49+
"title": "Open Badges Specification JSON Schema v3.0",
50+
"href": "https://www.imsglobal.org/spec/ob/v3p0/schema/json",
51+
"status": "IMS Base Document",
52+
"publisher": "1EdTech"
53+
},
54+
"OB-JSONLD-30": {
55+
"title": "Open Badges Specification JSON-LD Context v3.0",
56+
"href": "https://www.imsglobal.org/spec/ob/v3p0/",
57+
"status": "IMS Base Document",
58+
"publisher": "1EdTech"
59+
},
60+
"CLR-20": {
61+
"title": "Comprehensive Learner Record Standard v2.0",
62+
"href": "https://www.imsglobal.org/spec/clr/v2p0/",
63+
"status": "IMS Base Document",
64+
"publisher": "1EdTech"
65+
},
66+
"CLR-CERT-20": {
67+
"title": "Comprehensive Learner Record Conformance and Certification Guide v2.0",
68+
"href": "https://www.imsglobal.org/spec/clr/v2p0/cert/",
69+
"status": "IMS Base Document",
70+
"publisher": "1EdTech"
71+
},
72+
"CASE-10": {
73+
"title": "1EdTech Competencies and Academic Standards Exchange (CASE)",
74+
"href": "https://www.imsglobal.org/spec/case/v1p0/",
75+
"status": "1EdTech Final Release",
76+
"publisher": "1EdTech"
77+
},
78+
"OR-11": {
79+
"title": "1EdTech OneRoster® Specification v1.1",
80+
"href": "https://www.imsglobal.org/oneroster-v11-final-specification",
81+
"status": "1EdTech Final Release",
82+
"publisher": "1EdTech"
83+
},
84+
"EDUAPI-10": {
85+
"title": "Edu-API Specification Specification v1.0",
86+
"href": "https://imsglobal.org/spec/eduapi/v1p0/",
87+
"status": "IMS Candidate Final",
88+
"publisher": "1EdTech"
89+
},
90+
"CEDS": {
91+
"title": "Common Education Data Standards (CEDS) Version 7 Data Model Guide",
92+
"href": "https://ceds.ed.gov/pdf/CEDS-7-0-Data-Model-Guide_for_508.pdf"
93+
},
94+
"RSD": {
95+
"title": "Rich Skill Descriptors",
96+
"href": "https://www.openskillsnetwork.org/rsd"
97+
},
98+
"DATA-INTEGRITY": {
99+
"title": "Data Integrity 1.0",
100+
"href": "https://w3c-ccg.github.io/data-integrity-spec/",
101+
"authors": ["Manu Sporny", "Dave Longley"],
102+
"status": "CG-DRAFT",
103+
"publisher": "Credentials Community Group"
104+
},
105+
"VC-API": {
106+
"title": "Verifiable Credentials HTTP API",
107+
"href": "https://w3c-ccg.github.io/vc-api/",
108+
"status": "W3C Community Group Draft Report",
109+
"publisher": "Credentials Community Group"
110+
},
111+
"PRESENTATION-EXCHANGE-10": {
112+
"title": "Presentation Exchange v1.0.0",
113+
"href": "https://identity.foundation/presentation-exchange/spec/v1.0.0/",
114+
"status": "DIF Ratified Specification",
115+
"publisher": "Distributed Identity Foundation"
116+
},
117+
"OIDC-VCI": {
118+
"title": "OpenID Connect for Verifiable Credential Issuance",
119+
"href": "https://openid.net/specs/openid-connect-4-verifiable-credential-issuance-1_0.html",
120+
"status": "Standards Track",
121+
"publisher": "OpenID Foundation"
122+
},
123+
"OIDC-VP": {
124+
"title": "OpenID Connect for Verifiable Presentations",
125+
"href": "https://openid.net/specs/openid-connect-4-verifiable-presentations-1_0.html",
126+
"status": "Standards Track",
127+
"publisher": "OpenID Foundation"
128+
},
129+
"VC-EXTENSION-REGISTRY": {
130+
"title": "Verifiable Credentials Extension Registry",
131+
"href": "https://w3c-ccg.github.io/vc-extension-registry/",
132+
"status": "CG-DRAFT",
133+
"publisher": "Credentials Community Group"
134+
},
135+
"VC-DID-WEB-METHOD": {
136+
"title": "DID Web Method Specification",
137+
"href": "https://w3c-ccg.github.io/did-method-web/",
138+
"status": "CG-DRAFT",
139+
"publisher": "Credentials Community Group"
140+
},
141+
"JSON-SCHEMA-2019-09": {
142+
"title": "JSON Schema: A Media Type for Describing JSON Documents",
143+
"href": "https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-02",
144+
"status": "Internet-Draft",
145+
"publisher": "Internet Engineering Task Force"
146+
},
147+
"JSON-SCHEMA-VALIDATION-2019-09": {
148+
"title": "JSON Schema Validation: A Vocabulary for Structural Validation of JSON",
149+
"href": "https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-validation-02",
150+
"status": "Internet-Draft",
151+
"publisher": "Internet Engineering Task Force"
152+
},
153+
"DATA-INTEGRITY-SPEC": {
154+
"title": "Data Integrity",
155+
"href": "https://w3c-ccg.github.io/data-integrity-spec/",
156+
"status": "CG-DRAFT",
157+
"publisher": "Credentials Community Group"
158+
},
159+
"VCRL-10": {
160+
"title": "1EdTech Revocation List Status Method",
161+
"href": "https://www.imsglobal.org/spec/vcrl/v1p0/",
162+
"status": "Candidate Final Public",
163+
"publisher": "1EdTech"
164+
},
165+
"VCCR-10": {
166+
"title": "1EdTech Credential Refresh Service",
167+
"href": "https://www.imsglobal.org/spec/vccr/v1p0/",
168+
"status": "Candidate Final Public",
169+
"publisher": "1EdTech"
170+
},
171+
"VCCS-10": {
172+
"title": "1EdTech JSON Schema Validator 2019",
173+
"href": "https://www.imsglobal.org/spec/vccs/v1p0/",
174+
"status": "Candidate Final Public",
175+
"publisher": "1EdTech"
176+
},
177+
"VC-STATUS-2021": {
178+
"title": "Credential Status List 2021",
179+
"href": "https://www.w3.org/TR/vc-bitstring-status-list/",
180+
"status": "W3C Working Draft",
181+
"publisher": "W3C Credentials Community Group"
182+
},
183+
"MULTIBASE": {
184+
"title": "The Multibase Data Format",
185+
"href": "https://datatracker.ietf.org/doc/html/draft-multiformats-multibase-01",
186+
"status": "Internet-Draft",
187+
"publisher": "IETF"
188+
},
189+
"MULTICODEC": {
190+
"title": "MULTICODEC",
191+
"href": "https://github.com/multiformats/multicodec/"
192+
},
193+
"CTDL-TERMS": {
194+
"title": "Credential Transparency Description Language Terms",
195+
"href": "https://credreg.net/ctdl/terms",
196+
"publisher": "Credential Engine"
197+
},
198+
"CTDL-ASN-TERMS": {
199+
"title": "Credential Transparency Description Language ASN Terms",
200+
"href": "https://credreg.net/ctdlasn/terms",
201+
"publisher": "Credential Engine"
202+
}
203+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
## Abstract
2+
3+
Open Badges are visual symbols of accomplishments packed with verifiable metadata according to the Open Badges specification. The Open Badges 3.0 specification [[OB-30]] defines the properties necessary to define an achievement and award it to a recipient, as well as procedures for verifying badge authenticity and “baking” badge information into portable image files. It includes term definitions for representations of data in Open Badges and defines an API for exchanging badge information. These term definitions appear in the current Open Badges JSON-LD Context File.
4+
5+
This version of the specification aligns Open Badges with the conventions of the [[VC-DATA-MODEL-2.0]] for the use cases of [=Defined Achievement Claim=] and a [=Skill Claim=]. The credentials that are produced are easily be bundled into [=Comprehensive Learner Records=] and [=Verifiable Presentations=]. Portability and learner data privacy are improved by expanding the usage of cryptographic proofs/signatures, because this format will be compatible with a growing array of proof schemas that are developed for the Verifiable Credentials Data Model.

0 commit comments

Comments
 (0)