Repozytorium dokumentacji do projektu vscode-docs.
Repo korzysta z GitHub Actions do automatycznego budowania, skanowania i wdrażania obrazów Dockera oraz generowania changeloga i powiadamiania na Telegramie.
# .github/workflows/ci-cd.yml
name: CI/CD - Build, Scan, Tag, Notify
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
security-events: write
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
# ... (reszta kroków z workflow)
ARG VARIANT="16"
FROM mcr.microsoft.com/devcontainers/javascript-node:1-${VARIANT}
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends bundler
COPY ./script-in-your-repo.sh /tmp/scripts/script-in-codespace.sh
RUN apt-get update && bash /tmp/scripts/script-in-codespace.sh
// fetch-commit.js
import fetch from 'node-fetch';
import fs from 'fs';
const OWNER = 'Thenomad123';
const REPO = 'vscode-docs';
const SHA = 'efba259b9f3300b14b196c38efde6559c7521068';
const TOKEN = process.env.GH_TOKEN;
async function getCommit() {
const url = `https://api.github.com/repos/${OWNER}/${REPO}/commits/${SHA}`;
const resp = await fetch(url, {
headers: { 'Authorization': `token ${TOKEN}` }
});
if (!resp.ok) throw new Error(`GitHub API error: ${resp.status}`);
const data = await resp.json();
fs.writeFileSync(`commit-${SHA}.json`, JSON.stringify(data, null, 2));
console.log(`Saved commit-${SHA}.json`);
}
getCommit().catch(err => console.error(err));
// plugins/docusaurus-plugin-live-diff/index.js
module.exports = function liveDiffPlugin(context, options) {
return {
name: 'live-diff-plugin',
async contentLoaded({ content, actions }) {
const { setGlobalData } = actions;
// Fetch diff JSON generated by CI
const diff = await fetch('/diff/latest.json').then(r => r.json());
setGlobalData({ diff });
},
injectHtmlTags() {
return {
headTags: [
{ tagName: 'script', innerHTML: `window.LIVE_DIFF = ${JSON.stringify(this.globalData.diff)}` }
],
};
}
};
};
<script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"></script>
<model-viewer src="/models/extension-arch.glb"
alt="3D model of extension architecture"
auto-rotate camera-controls
ar
ar-modes="webxr scene-viewer quick-look">
</model-viewer>