feat: migrate off vuepress to vitepress (#4515)

Signed-off-by: Rui Chen <rui@chenrui.dev>
Co-authored-by: PePe Amengual <jose.amengual@gmail.com>
This commit is contained in:
Rui Chen
2024-05-14 14:22:13 -04:00
committed by GitHub
parent a630646b8f
commit 50cd3d3ac6
56 changed files with 1316 additions and 4974 deletions

2
.github/labeler.yml vendored
View File

@@ -40,6 +40,6 @@ provider/gitlab:
website:
- changed-files:
- any-glob-to-any-file: 'runatlantis.io/.vuepress/**/*'
- any-glob-to-any-file: 'runatlantis.io/.vitepress/**/*'
- any-glob-to-any-file: 'package.json'
- any-glob-to-any-file: 'pnpm-lock.yaml'

View File

@@ -65,7 +65,7 @@ jobs:
pnpm website:build
# start http-server for integration testing
npx http-server runatlantis.io/.vuepress/dist &
npx http-server runatlantis.io/.vitepress/dist &
- name: Run Playwright E2E tests
run: |

12
.gitignore vendored
View File

@@ -30,8 +30,10 @@ tmp-CHANGELOG.md
# draw.io backup files
*.bkp
# vuepress
**/.vuepress/*
!runatlantis.io/.vuepress/config.*
!runatlantis.io/.vuepress/navbar.*
!runatlantis.io/.vuepress/sidebar.*
# VitePress build output & cache directory
**/.vitepress/cache
**/.vitepress/dist
**/.vitepress/config.ts.timestamp-*
# playwright
test-results/

View File

@@ -1 +1 @@
pnpm 8.15.8
pnpm 9.1.0

View File

@@ -1,7 +1,7 @@
# Atlantis <!-- omit in toc -->
[![Latest Release](https://img.shields.io/github/release/runatlantis/atlantis.svg)](https://github.com/runatlantis/atlantis/releases/latest)
[![SuperDopeBadge](./runatlantis.io/.vuepress/public/hightower-super-dope.svg)](https://twitter.com/kelseyhightower/status/893260922222813184)
[![SuperDopeBadge](./runatlantis.io/.vitepress/public/hightower-super-dope.svg)](https://twitter.com/kelseyhightower/status/893260922222813184)
[![Go Report Card](https://goreportcard.com/badge/github.com/runatlantis/atlantis)](https://goreportcard.com/report/github.com/runatlantis/atlantis)
[![Go Reference](https://pkg.go.dev/badge/github.com/runatlantis/atlantis.svg)](https://pkg.go.dev/github.com/runatlantis/atlantis)
[![codecov](https://codecov.io/gh/runatlantis/atlantis/branch/main/graph/badge.svg)](https://codecov.io/gh/runatlantis/atlantis)
@@ -9,7 +9,7 @@
[![Slack](https://img.shields.io/badge/Join-Atlantis%20Community%20Slack-red)](https://join.slack.com/t/atlantis-community/shared_invite/zt-9xlxtxtc-CUSKB1ATt_sQy6um~LDPNw)
<p align="center">
<img src="./runatlantis.io/.vuepress/public/hero.png" alt="Atlantis Logo"/><br><br>
<img src="./runatlantis.io/.vitepress/public/hero.png" alt="Atlantis Logo"/><br><br>
<b>Terraform Pull Request Automation</b>
</p>

View File

@@ -1,7 +1,7 @@
# Netlify Config, https://www.netlify.com/docs/netlify-toml-reference/
[build]
base = "/"
publish = "runatlantis.io/.vuepress/dist/"
publish = "runatlantis.io/.vitepress/dist/"
command = "pnpm website:build"
[[redirects]]

View File

@@ -1,20 +1,15 @@
{
"license": "Apache-2.0",
"type": "module",
"devDependencies": {
"@playwright/test": "^1.44.0",
"@vuepress/bundler-webpack": "2.0.0-rc.9",
"@vuepress/plugin-docsearch": "2.0.0-rc.21",
"@vuepress/plugin-google-analytics": "2.0.0-rc.21",
"@vuepress/plugin-sitemap": "2.0.0-rc.21",
"@vuepress/theme-default": "2.0.0-rc.21",
"@vuepress/utils": "2.0.0-rc.9",
"sass-loader": "14.2.1",
"vue": "3.4.27",
"vuepress": "2.0.0-rc.9"
"@types/node": "^20.12.10",
"sass": "^1.77.0",
"vitepress": "^1.1.4"
},
"scripts": {
"website:dev": "vuepress dev --host localhost runatlantis.io",
"website:build": "NODE_OPTIONS=--openssl-legacy-provider vuepress build runatlantis.io",
"website:dev": "vitepress dev --host localhost --port 8080 runatlantis.io",
"website:build": "vitepress build runatlantis.io",
"e2e": "playwright test"
}
}

5343
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,97 @@
import { defineConfig } from 'vitepress';
import * as navbars from "./navbars";
import * as sidebars from "./sidebars";
// https://vitepress.dev/reference/site-config
export default defineConfig({
title: 'Atlantis',
description: 'Atlantis: Terraform Pull Request Automation',
lang: 'en-US',
lastUpdated: true,
locales: {
root: {
label: 'English',
lang: 'en-US',
themeConfig: {
nav: navbars.en,
sidebar: sidebars.en,
},
},
},
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
search: {
provider: 'algolia',
options: {
// We internally discussed how this API key is exposed in the code and decided
// that it is a non-issue because this API key can easily be extracted by
// looking at the browser dev tools since the key is used in the API requests.
apiKey: '3b733dff1539ca3a210775860301fa86',
indexName: 'runatlantis',
appId: 'BH4D9OD16A',
locales: {
'/': {
placeholder: 'Search Documentation',
translations: {
button: {
buttonText: 'Search Documentation',
},
},
},
},
}
},
socialLinks: [
{ icon: "slack", link: "https://join.slack.com/t/atlantis-community/shared_invite/zt-9xlxtxtc-CUSKB1ATt_sQy6um~LDPNw" },
{ icon: "twitter", link: "https://twitter.com/runatlantis" },
{ icon: "github", link: "https://github.com/runatlantis/atlantis" },
],
},
head: [
['link', { rel: 'icon', type: 'image/png', href: '/favicon-196x196.png', sizes: '196x196' }],
['link', { rel: 'icon', type: 'image/png', href: '/favicon-96x96.png', sizes: '96x96' }],
['link', { rel: 'icon', type: 'image/png', href: '/favicon-32x32.png', sizes: '32x32' }],
['link', { rel: 'icon', type: 'image/png', href: '/favicon-16x16.png', sizes: '16x16' }],
['link', { rel: 'icon', type: 'image/png', href: '/favicon-128.png', sizes: '128x128' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '57x57', href: '/apple-touch-icon-57x57.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '114x114', href: '/apple-touch-icon-114x114.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '72x72', href: '/apple-touch-icon-72x72.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '144x144', href: '/apple-touch-icon-144x144.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '60x60', href: '/apple-touch-icon-60x60.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '120x120', href: '/apple-touch-icon-120x120.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '76x76', href: '/apple-touch-icon-76x76.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '152x152', href: '/apple-touch-icon-152x152.png' }],
['meta', { name: 'msapplication-TileColor', content: '#FFFFFF' }],
['meta', { name: 'msapplication-TileImage', content: '/mstile-144x144.png' }],
['meta', { name: 'msapplication-square70x70logo', content: '/mstile-70x70.png' }],
['meta', { name: 'msapplication-square150x150logo', content: '/mstile-150x150.png' }],
['meta', { name: 'msapplication-wide310x150logo', content: '/mstile-310x150.png' }],
['meta', { name: 'msapplication-square310x310logo', content: '/mstile-310x310.png' }],
['link', { rel: 'stylesheet', sizes: '152x152', href: 'https://fonts.googleapis.com/css?family=Lato:400,900' }],
['meta', { name: 'google-site-verification', content: 'kTnsDBpHqtTNY8oscYxrQeeiNml2d2z-03Ct9wqeCeE' }],
// google analytics
[
'script',
{ async: '', src: 'https://www.googletagmanager.com/gtag/js?id=UA-6850151-3' }
],
[
'script',
{},
`window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-6850151-3');`
]
],
sitemap: {
hostname: 'https://runatlantis.io'
},
vite: {
server: {
fs: {
cachedChecks: false,
},
}
}
})

View File

@@ -0,0 +1,9 @@
const en = [
{ text: "Home", link: "/"},
{ text: "Guide", link: "/guide" },
{ text: "Docs", link: "/docs" },
{ text: "Contributing", link: "/contributing" },
{ text: "Blog", link: "https://medium.com/runatlantis" },
];
export { en };

View File

@@ -0,0 +1,107 @@
const en = [
{
text: "Guide",
link: "/guide",
collapsed: false,
items: [
{ text: "Test Drive", link: "/guide/test-drive" },
{ text: "Testing locally", link: "/guide/testing-locally" },
],
},
{
text: "Docs",
link: "/docs",
collapsed: true,
items: [
{
text: "Installing Atlantis",
collapsed: true,
items: [
{ text: "Installing Guide", link: "/docs/installation-guide" },
{ text: "Requirements", link: "/docs/requirements" },
{ text: "Git Host Access Credentials", link: "/docs/access-credentials" },
{ text: "Webhook Secrets", link: "/docs/webhook-secrets" },
{ text: "Deployment", link: "/docs/deployment" },
{ text: "Configuring Webhooks", link: "/docs/configuring-webhooks" },
{ text: "Provider Credentials", link: "/docs/provider-credentials" },
]
},
{
text: "Configuring Atlantis",
collapsed: true,
items: [
{ text: "Overview", link: "/docs/configuring-atlantis" },
"/docs/configuring-atlantis",
"/docs/server-configuration",
"/docs/server-side-repo-config",
"/docs/pre-workflow-hooks",
"/docs/post-workflow-hooks",
"/docs/policy-checking",
"/docs/custom-workflows",
"/docs/repo-level-atlantis-yaml",
"/docs/upgrading-atlantis-yaml",
"/docs/command-requirements",
"/docs/checkout-strategy",
"/docs/terraform-versions",
"/docs/terraform-cloud",
"/docs/using-slack-hooks",
"/docs/stats",
"/docs/faq",
]
},
{
text: "Using Atlantis",
collapsed: true,
items: [
{ text: "Overview", link: "/docs/using-atlantis" },
"/docs/api-endpoints",
]
},
{
text: 'How Atlantis Works',
collapsed: true,
items: [
{
text: 'Overview',
link: '/docs/how-atlantis-works',
},
'/docs/locking',
'/docs/autoplanning',
'/docs/automerging',
'/docs/security',
]
},
{
text: 'Real-time Terraform Logs',
collapsed: true,
items: [
'/docs/streaming-logs',
]
},
{
text: 'Troubleshooting',
collapsed: true,
items: [
'/docs/troubleshooting',
]
},
],
},
{
text: "Contributing",
link: "/contributing",
collapsed: false,
items: [
{
text: 'Implementation Details',
items: [
{text: "Events Controller", link: "/contributing/events-controller"},
]
},
{text: "Glossry", link: "/contributing/glossary"},
]
}
];
export { en };

View File

@@ -1,4 +1,4 @@
// https://v2.vuepress.vuejs.org/reference/default-theme/styles.html#style-file
// https://vitepress.dev/guide/using-vue#using-css-pre-processors
// colors
$textColor: var(--c-text);

View File

@@ -0,0 +1,5 @@
import DefaultTheme from "vitepress/theme";
import "./index.scss";
import "./palette.scss";
export default DefaultTheme;

View File

@@ -1,109 +0,0 @@
import { googleAnalyticsPlugin } from '@vuepress/plugin-google-analytics';
import { docsearchPlugin } from '@vuepress/plugin-docsearch';
import { getDirname, path } from '@vuepress/utils';
import { defaultTheme } from '@vuepress/theme-default';
import { defineUserConfig } from 'vuepress';
import { sitemapPlugin } from '@vuepress/plugin-sitemap';
import { webpackBundler } from '@vuepress/bundler-webpack';
import navbar from "./navbar";
import sidebar from "./sidebar";
const __dirname = getDirname(import.meta.url)
export default defineUserConfig({
alias: {
'@theme/Home.vue': path.resolve(__dirname, './theme/components/Home.vue'),
},
bundler: webpackBundler(),
locales: {
'/': {
lang: 'en-US',
title: 'Atlantis',
description: 'Atlantis: Terraform Pull Request Automation',
},
/*
'/es/': {
lang: 'es-ES',
title: 'Atlantis',
description: 'Atlantis: Automatización de Pull Requests para Terraform',
},
*/
},
plugins: [
googleAnalyticsPlugin({
id: 'UA-6850151-3',
}),
sitemapPlugin({
hostname: 'https://runatlantis.io',
}),
docsearchPlugin({
// We internally discussed how this API key is exposed in the code and decided
// that it is a non-issue because this API key can easily be extracted by
// looking at the browser dev tools since the key is used in the API requests.
apiKey: '3b733dff1539ca3a210775860301fa86',
indexName: 'runatlantis',
appId: 'BH4D9OD16A',
locales: {
'/': {
placeholder: 'Search Documentation',
translations: {
button: {
buttonText: 'Search Documentation',
},
},
},
},
}),
],
head: [
['link', { rel: 'icon', type: 'image/png', href: '/favicon-196x196.png', sizes: '196x196' }],
['link', { rel: 'icon', type: 'image/png', href: '/favicon-96x96.png', sizes: '96x96' }],
['link', { rel: 'icon', type: 'image/png', href: '/favicon-32x32.png', sizes: '32x32' }],
['link', { rel: 'icon', type: 'image/png', href: '/favicon-16x16.png', sizes: '16x16' }],
['link', { rel: 'icon', type: 'image/png', href: '/favicon-128.png', sizes: '128x128' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '57x57', href: '/apple-touch-icon-57x57.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '114x114', href: '/apple-touch-icon-114x114.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '72x72', href: '/apple-touch-icon-72x72.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '144x144', href: '/apple-touch-icon-144x144.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '60x60', href: '/apple-touch-icon-60x60.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '120x120', href: '/apple-touch-icon-120x120.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '76x76', href: '/apple-touch-icon-76x76.png' }],
['link', { rel: 'apple-touch-icon-precomposed', sizes: '152x152', href: '/apple-touch-icon-152x152.png' }],
['meta', { name: 'msapplication-TileColor', content: '#FFFFFF' }],
['meta', { name: 'msapplication-TileImage', content: '/mstile-144x144.png' }],
['meta', { name: 'msapplication-square70x70logo', content: '/mstile-70x70.png' }],
['meta', { name: 'msapplication-square150x150logo', content: '/mstile-150x150.png' }],
['meta', { name: 'msapplication-wide310x150logo', content: '/mstile-310x150.png' }],
['meta', { name: 'msapplication-square310x310logo', content: '/mstile-310x310.png' }],
['link', { rel: 'stylesheet', sizes: '152x152', href: 'https://fonts.googleapis.com/css?family=Lato:400,900' }],
['meta', { name: 'google-site-verification', content: 'kTnsDBpHqtTNY8oscYxrQeeiNml2d2z-03Ct9wqeCeE' }],
],
themePlugins: {
activeHeaderLinks: false,
},
theme: defaultTheme({
docsBranch: "main",
logo: '/hero.png',
locales: {
'/': {
selectLanguageName: 'English',
navbar: navbar.en,
},
/*
'/es/': {
selectLanguageName: 'Spanish',
navbar: [
{ text: 'Home', link: '/es/' },
{ text: 'Guide', link: '/es/guide/' },
{ text: 'Docs', link: '/es/docs/' },
{ text: 'Blog', link: 'https://medium.com/runatlantis' },
],
},
*/
},
sidebar: sidebar.en,
repo: 'runatlantis/atlantis',
docsDir: 'runatlantis.io',
editLink: true,
})
})

View File

@@ -1,9 +0,0 @@
const en = [
{ text: 'Home', link: '/' },
{ text: 'Guide', link: '/guide/' },
{ text: 'Docs', link: '/docs/' },
{ text: "Contributing", link: "/contributing/" },
{ text: 'Blog', link: 'https://medium.com/runatlantis' },
];
export default { en };

View File

@@ -1,59 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
<g>
<g>
<g>
<path fill="#3BCC9C" d="M32,0c17.7,0,32,14.3,32,32S49.7,64,32,64S0,49.7,0,32S14.3,0,32,0z"/>
</g>
</g>
<g>
<g>
<path fill="#FFFFFF" d="M13.3,44c-0.7,0-1.3-0.6-1.3-1.2V17.2c0-0.7,0.6-1.2,1.3-1.2h37.4c0.7,0,1.3,0.6,1.3,1.2v25.5
c0,0.7-0.6,1.2-1.3,1.2H13.3z"/>
</g>
</g>
<g>
<g>
<path fill="#D3D5DD" d="M45,20c0.5,0,1,0.5,1,1s-0.5,1-1,1H18c-0.5,0-1-0.5-1-1s0.5-1,1-1H45z"/>
</g>
</g>
<g>
<g>
<path fill="#D3D5DD" d="M45,25c0.5,0,1,0.5,1,1s-0.5,1-1,1H18c-0.5,0-1-0.5-1-1s0.5-1,1-1H45z"/>
</g>
</g>
<g>
<g>
<polygon fill="#E84B4B" points="44,43 44,44 44,53 40.1,50.8 36,53 36,44 36,43 "/>
</g>
</g>
<g>
<g>
<path fill="#316CFF" d="M26,35c0.5,0,1,0.4,1,1c0,0.5-0.5,1-1,1h-8c-0.5,0-1-0.5-1-1c0-0.6,0.5-1,1-1H26z"/>
</g>
</g>
<g>
<g>
<path fill="#FFC533" d="M44,43.2c-0.1,0.1-0.1,0.1-0.2,0.2l-0.5,0.8c-0.4,0.6-1.2,0.9-1.9,0.6l-0.8-0.3c-0.4-0.1-0.8-0.1-1.1,0
l-0.8,0.3c-0.7,0.3-1.5,0-1.9-0.6l-0.5-0.8c0-0.1-0.1-0.1-0.2-0.2c-0.2-0.2-0.4-0.4-0.7-0.4l-0.9-0.3c-0.7-0.2-1.2-0.9-1.1-1.6
l0-1.1c0-0.4-0.1-0.7-0.3-1L32.3,38c-0.4-0.6-0.4-1.3,0-1.9l0.6-0.9c0.2-0.3,0.3-0.6,0.3-1l0-1.1c0-0.7,0.4-1.4,1.1-1.6l0.9-0.3
c0.4-0.1,0.7-0.3,0.9-0.7l0.5-0.8c0.4-0.6,1.2-0.9,1.9-0.6l0.8,0.3c0.4,0.1,0.8,0.1,1.1,0l0.8-0.3c0.7-0.3,1.5,0,1.9,0.6l0.5,0.8
c0.2,0.3,0.5,0.5,0.9,0.7l0.9,0.3c0.7,0.2,1.2,0.9,1.1,1.6l0,1.1c0,0.4,0.1,0.7,0.3,1l0.6,0.9c0.4,0.6,0.4,1.3,0,1.9L47,38.8
c-0.2,0.3-0.3,0.6-0.3,1l0,1.1c0,0.7-0.4,1.4-1.1,1.6l-0.9,0.3C44.4,42.9,44.2,43,44,43.2z"/>
</g>
</g>
<g>
<g>
<path fill="#F2AC0F" d="M40,32c2.8,0,5,2.2,5,5s-2.2,5-5,5s-5-2.2-5-5S37.2,32,40,32z"/>
</g>
</g>
<g>
<g>
<path fill="#FCEA81" d="M40,34c1.7,0,3,1.3,3,3s-1.3,3-3,3s-3-1.3-3-3S38.3,34,40,34z"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Build-Stage-Passed" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 15 15" style="enable-background:new 0 0 15 15;" xml:space="preserve">
<style type="text/css">
.st0{fill:none;stroke:#39AA56;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="stage-passed-icon">
<circle class="st0" cx="7.5" cy="7.5" r="7"/>
<polyline class="st0" points="10.63,4.711 7.064,10.213 4.294,8.012 "/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 645 B

View File

@@ -1,42 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<circle style="fill:#F33052;" cx="256" cy="256" r="256"/>
<g>
<path style="fill:#FFFFFF;" d="M213.12,319.776L99.872,270.544V243.28l113.248-49.008v32.112l-79.008,30.208l79.008,31.328V319.776
z"/>
<path style="fill:#FFFFFF;" d="M223.6,341.408l40.912-170.832h23.776l-41.36,170.832H223.6z"/>
<path style="fill:#FFFFFF;" d="M298.768,319.904V288l79.104-31.104l-79.104-30.752V194.48l113.36,49.008v27.04L298.768,319.904z"/>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 964 B

View File

@@ -1,49 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
<polygon style="fill:#EDEADA;" points="51.5,14 37.5,0 6.5,0 6.5,58 51.5,58 "/>
<polygon style="fill:#CEC9AE;" points="37.5,0 37.5,14 51.5,14 "/>
<path style="fill:#CEC9AE;" d="M41.5,22h-16c-0.552,0-1-0.447-1-1s0.448-1,1-1h16c0.552,0,1,0.447,1,1S42.052,22,41.5,22z"/>
<path style="fill:#14A085;" d="M17.5,23c-0.257,0-0.514-0.099-0.708-0.293l-2-2c-0.391-0.391-0.391-1.023,0-1.414
s1.023-0.391,1.414,0l1.367,1.367l4.301-3.441c0.43-0.345,1.061-0.275,1.405,0.156c0.345,0.432,0.275,1.061-0.156,1.406l-5,4
C17.941,22.928,17.72,23,17.5,23z"/>
<path style="fill:#CEC9AE;" d="M41.5,33h-16c-0.552,0-1-0.447-1-1s0.448-1,1-1h16c0.552,0,1,0.447,1,1S42.052,33,41.5,33z"/>
<path style="fill:#14A085;" d="M17.5,34c-0.257,0-0.514-0.099-0.708-0.293l-2-2c-0.391-0.391-0.391-1.023,0-1.414
s1.023-0.391,1.414,0l1.367,1.367l4.301-3.441c0.43-0.345,1.061-0.275,1.405,0.156c0.345,0.432,0.275,1.061-0.156,1.406l-5,4
C17.941,33.928,17.72,34,17.5,34z"/>
<path style="fill:#CEC9AE;" d="M41.5,44h-16c-0.552,0-1-0.447-1-1s0.448-1,1-1h16c0.552,0,1,0.447,1,1S42.052,44,41.5,44z"/>
<path style="fill:#14A085;" d="M17.5,45c-0.257,0-0.514-0.099-0.708-0.293l-2-2c-0.391-0.391-0.391-1.023,0-1.414
s1.023-0.391,1.414,0l1.367,1.367l4.301-3.441c0.43-0.345,1.061-0.275,1.405,0.156c0.345,0.432,0.275,1.061-0.156,1.406l-5,4
C17.941,44.928,17.72,45,17.5,45z"/>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 KiB

View File

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
<g>
<g>
<g>
<path fill="#5E5C89" d="M32,0c17.7,0,32,14.3,32,32S49.7,64,32,64S0,49.7,0,32S14.3,0,32,0z"/>
</g>
</g>
<g>
<g>
<polygon fill="#FFD833" points="44,27 37,27 41,15 27,15 25,32 29.6,32 24,49 "/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

View File

@@ -1,97 +0,0 @@
const en = {
'/guide/': [
'/guide/',
'/guide/test-drive',
'/guide/testing-locally',
],
'/docs/': [
{
text: 'Installing Atlantis',
collapsible: true,
children: [
'/docs/installation-guide',
'/docs/requirements',
'/docs/access-credentials',
'/docs/webhook-secrets',
'/docs/deployment',
'/docs/configuring-webhooks',
'/docs/provider-credentials',
]
},
{
text: 'Configuring Atlantis',
collapsible: true,
children: [
{
text: 'Overview',
link: '/docs/configuring-atlantis',
},
'/docs/server-configuration',
'/docs/server-side-repo-config',
'/docs/pre-workflow-hooks',
'/docs/post-workflow-hooks',
'/docs/policy-checking',
'/docs/custom-workflows',
'/docs/repo-level-atlantis-yaml',
'/docs/upgrading-atlantis-yaml',
'/docs/command-requirements',
'/docs/checkout-strategy',
'/docs/terraform-versions',
'/docs/terraform-cloud',
'/docs/using-slack-hooks',
'/docs/stats',
'/docs/faq',
]
},
{
text: 'Using Atlantis',
collapsible: true,
children: [
{
text: 'Overview',
link: '/docs/using-atlantis',
},
'/docs/api-endpoints',
]
},
{
text: 'How Atlantis Works',
collapsible: true,
children: [
{
text: 'Overview',
link: '/docs/how-atlantis-works',
},
'/docs/locking',
'/docs/autoplanning',
'/docs/automerging',
'/docs/security',
]
},
{
text: 'Real-time Terraform Logs',
collapsible: true,
children: [
'/docs/streaming-logs',
]
},
{
text: 'Troubleshooting',
collapsible: true,
children: [
'/docs/troubleshooting-https',
]
}
],
'/contributing/': [
{
text: 'Implementation Details',
children: [
'/contributing/events-controller',
]
},
'/contributing/glossary',
],
};
export default { en };

View File

@@ -1,175 +0,0 @@
<template>
<div class="container">
<div class="home">
<div class="hero">
<img v-if="data.heroImage" :src="$withBase(data.heroImage)" alt="hero">
<h1>{{ data.heroText || $title || 'Hello' }}</h1>
<p class="description">
Terraform Pull Request Automation
</p>
<p class="action" v-if="data.actionText && data.actionLink">
<a href="/guide/" class="nav-link action-button">Get Started </a>
</p>
</div>
</div>
<div class="workflow-container">
<div class="workflow">
<h1>The Atlantis Workflow</h1>
<img src="/mobile-workflow-min.png" class="mobile" alt="Atlantis Workflow">
<img src="/workflow-min.png" class="desktop" alt="Atlantis Workflow">
</div>
</div>
<div class="benefits-container">
<div class="benefit-container -dark">
<div class="title">
<h1>Benefits</h1>
</div>
<div class="benefit">
<div class="item">
<div class="description">
<h2>Fewer Mistakes</h2>
<p>Bring the benefits of <strong>code review</strong> to your operations
workflow.</p>
<ul>
<li><img class="checkmark" src="/checkmark.svg">Catch errors in
the Terraform plan output before it's applied.
</li>
<li><img class="checkmark" src="/checkmark.svg">Ensure that you
apply changes before merging to main.
</li>
</ul>
</div>
</div>
<div class="item image">
<div class="image">
<img src="/list.svg">
</div>
</div>
</div>
</div>
<div class="benefit-container">
<div class="benefit">
<div class="item image">
<div class="image">
<img src="/coding.svg">
</div>
</div>
<div class="item">
<div class="description">
<h2>Put the <span style="text-decoration: underline">Dev</span> back into DevOps</h2>
<p>Empower your developers to write Terraform. <strong>Safely.</strong></p>
<ul>
<li><img class="checkmark" src="/checkmark.svg">Developers can
submit Terraform pull requests without needing credentials.
</li>
<li><img class="checkmark" src="/checkmark.svg">Operators can
require approvals prior to allowing an apply.
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="benefit-container -dark">
<div class="benefit">
<div class="item">
<div class="description">
<h2>Instant Audit Logs And Compliance</h2>
<p>Pass audits without compromising your workflow.</p>
<ul>
<li><img class="checkmark" src="/checkmark.svg">Each pull request now holds a detailed log of what infrastructure changes were made and when; along with who made the change and who approved it.
</li>
<li><img class="checkmark" src="/checkmark.svg">Atlantis can be configured to require approvals on every production change.
</li>
</ul>
</div>
</div>
<div class="item image">
<div class="image">
<img src="/certificate.svg">
</div>
</div>
</div>
</div>
</div>
<div class="benefits-container">
<div class="benefit-container">
<h1 class="title">Proven at Scale</h1>
<div class="benefit">
<div class="item image">
<div class="image">
<img src="/powerful.svg">
</div>
</div>
<div class="item">
<div class="description">
<ul>
<li><img class="checkmark" src="/checkmark.svg">Used by one of the world's top companies to manage over 600 Terraform repos with 300 developers.
</li>
<li><img class="checkmark" src="/checkmark.svg">In production use since 2017.
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="benefits-container">
<div class="benefit-container">
<h1 class="title">How It Works</h1>
<div class="benefit">
<div class="item">
<div class="description">
<ul>
<li><img class="checkmark" src="/checkmark.svg">Atlantis is
self-hosted. Your credentials don't leave your infrastructure.
</li>
<li><img class="checkmark" src="/checkmark.svg">Runs as a Golang
binary or Docker image and can be deployed on VMs, Kubernetes,
Fargate, etc.
</li>
<li><img class="checkmark" src="/checkmark.svg">Listens for
webhooks from GitHub/GitLab/Bitbucket/Azure DevOps.
</li>
<li><img class="checkmark" src="/checkmark.svg">Runs terraform
commands remotely and comments back with their output.
</li>
</ul>
</div>
</div>
<div class="item image">
<div class="image">
<img src="/hero.png">
</div>
</div>
</div>
</div>
</div>
<div class="home getting-started-footer">
<div class="hero">
<p class="action" v-if="data.actionText && data.actionLink">
<a href="/guide/" class="nav-link action-button">Get Started </a>
</p>
</div>
</div>
<div class="footer" v-if="data.footer">
{{ data.footer }}
</div>
</div>
</template>
<script>
export default {
computed: {
data() {
return this.$page.frontmatter
},
actionLink() {
return {
link: this.data.actionLink,
text: this.data.actionText
}
}
}
}
</script>

View File

@@ -1,9 +0,0 @@
---
home: true
pageClass: home-custom
heroImage: /hero.png
heroText: Atlantis
actionText: Get Started →
actionLink: /guide/
title: Terraform Pull Request Automation
---

View File

@@ -5,10 +5,10 @@ can vary from writing documentation, helping the community on Slack, discussing
issues, or writing code.
:::tip Looking to get started or use Atlantis?
If you're new, check out the [Guide](../guide/README.md) or the
[Documentation](./../docs/README.md).
If you're new, check out the [Guide](./guide.md) or the
[Documentation](./docs.md).
:::
### Next Steps
- [Events Controller](events-controller.md)&nbsp;&nbsp;&nbsp;&nbsp;How do the events work?
- [Events Controller](./contributing/events-controller.md)&nbsp;&nbsp;&nbsp;&nbsp;How do the events work?

14
runatlantis.io/docs.md Normal file
View File

@@ -0,0 +1,14 @@
# Atlantis Documentation
These docs are for users that are ready to get Atlantis installed and start using it.
:::tip Looking to get started?
If you're new here, check out the [Guide](./guide.md)
where you can try our [Test Drive](./guide/test-drive.md) or [Run Atlantis Locally](./guide/testing-locally.md).
:::
### Next Steps
* [Installing Atlantis](./docs/installation-guide.md)&nbsp;&nbsp;&nbsp;&nbsp;Get Atlantis up and running
* [Configuring Atlantis](./docs/configuring-atlantis.md)&nbsp;&nbsp;&nbsp;&nbsp;Configure how Atlantis works for your specific use-cases
* [Using Atlantis](./docs/using-atlantis.md)&nbsp;&nbsp;&nbsp;&nbsp;How do you use Atlantis?
* [How Atlantis Works](./docs/how-atlantis-works.md)&nbsp;&nbsp;&nbsp;&nbsp;Internals of what Atlantis is doing

View File

@@ -1,14 +0,0 @@
# Atlantis Documentation
These docs are for users that are ready to get Atlantis installed and start using it.
:::tip Looking to get started?
If you're new here, check out the [Guide](../guide/README.md)
where you can try our [Test Drive](../guide/test-drive.md) or [Run Atlantis Locally](../guide/testing-locally.md).
:::
### Next Steps
* [Installing Atlantis](installation-guide.md)&nbsp;&nbsp;&nbsp;&nbsp;Get Atlantis up and running
* [Configuring Atlantis](configuring-atlantis.md)&nbsp;&nbsp;&nbsp;&nbsp;Configure how Atlantis works for your specific use-cases
* [Using Atlantis](using-atlantis.md)&nbsp;&nbsp;&nbsp;&nbsp;How do you use Atlantis?
* [How Atlantis Works](how-atlantis-works.md)&nbsp;&nbsp;&nbsp;&nbsp;Internals of what Atlantis is doing

View File

@@ -1,4 +1,4 @@
const { test } = require('@playwright/test');
import { test } from '@playwright/test';
test('page should load without errors', async ({ page }) => {
// Listen for any errors that occur within the page

View File

@@ -1,12 +1,12 @@
# Introduction
## Getting Started
* If you'd like to just test out running Atlantis on an **example repo** check out the [Test Drive](test-drive.md).
* If you'd like to test out running Atlantis on **your repos** then read [Testing Locally](testing-locally.md).
* If you're ready to properly install Atlantis on real infrastructure then head over to the [Installation Guide](../docs/installation-guide.md).
* If you'd like to just test out running Atlantis on an **example repo** check out the [Test Drive](./guide/test-drive.md).
* If you'd like to test out running Atlantis on **your repos** then read [Testing Locally](./guide/testing-locally.md).
* If you're ready to properly install Atlantis on real infrastructure then head over to the [Installation Guide](./docs/installation-guide.md).
::: tip Looking for the full docs?
Go here: [www.runatlantis.io/docs](../docs/README.md)
Go here: [www.runatlantis.io/docs](./docs.md)
:::
## Overview What Is Atlantis?
@@ -23,7 +23,7 @@ will run `terraform apply` and comment back with the output.
## Watch
Check out the video below to see it in action:
[![Atlantis Walkthrough](./images/atlantis-walkthrough-icon.png)](https://www.youtube.com/watch?v=TmIPWda0IKg)
[![Atlantis Walkthrough](./guide/images/atlantis-walkthrough-icon.png)](https://www.youtube.com/watch?v=TmIPWda0IKg)
## Why would you run Atlantis?
### Increased visibility
@@ -55,6 +55,6 @@ The exact commands that Atlantis runs are configurable. You can run custom scrip
to construct your ideal workflow.
## Next Steps
* If you'd like to just test out running Atlantis on an **example repo** check out the [Test Drive](test-drive.md).
* If you'd like to test out running Atlantis on **your repos** then read [Testing Locally](testing-locally.md).
* If you're ready to properly install Atlantis on real infrastructure then head over to the [Installation Guide](../docs/installation-guide.md).
* If you'd like to just test out running Atlantis on an **example repo** check out the [Test Drive](./guide/test-drive.md).
* If you'd like to test out running Atlantis on **your repos** then read [Testing Locally](./guide/testing-locally.md).
* If you're ready to properly install Atlantis on real infrastructure then head over to the [Installation Guide](./docs/installation-guide.md).

View File

@@ -148,13 +148,13 @@ Take the URL that ngrok output and create a webhook in your GitHub, GitLab or Bi
<li>Click <strong>Add webhook &gt; Gitea</strong> (Gitea webhooks are service specific, but this works)</li>
<li>set <strong>Target URL</strong> to <code>http://$URL/events</code> (or <code>https://$URL/events</code> if you're using SSL) where <code>$URL</code> is where Atlantis is hosted. <strong>Be sure to add <code>/events</code></strong></li>
<li>double-check you added <code>/events</code> to the end of your URL.</li>
<li>set <strong>Secret</strong> to the Webhook Secret you generated previously
<li>set <strong>Secret</strong> to the Webhook Secret you generated previously
<ul>
<li><strong>NOTE</strong> If you're adding a webhook to multiple repositories, each repository will need to use the <strong>same</strong> secret.</li>
</ul>
</li>
<li>Select <strong>Custom Events...</strong></li>
<li>Check the boxes
<li>Check the boxes
<ul>
<li><strong>Repository events &gt; Push</strong></li>
<li><strong>Issue events &gt; Issue Comment</strong></li>
@@ -207,7 +207,7 @@ TOKEN="{YOUR_TOKEN}"
- Click **Create token**
- Name the token **atlantis**
- Give the token **Read** Project permissions and **Write** Pull request permissions
- Choose an Expiry option **Do not expire** or **Expire automatically**
- Choose an Expiry option **Do not expire** or **Expire automatically**
- Click **Create** and set the token as an environment variable
```
TOKEN="{YOUR_TOKEN}"
@@ -315,7 +315,7 @@ atlantis server \
--ssl-key-file=file.key
```
### Gitea
### Gitea
```bash
atlantis server \
@@ -372,4 +372,4 @@ links to the log-streaming UI. This is a terminal UI where you can view your com
* Hopefully Atlantis is working with your repo and you're ready to move on to a [production-ready deployment](../docs/deployment.md).
* If it's not working as expected, you may need to customize how Atlantis runs with an `atlantis.yaml` file.
See [atlantis.yaml use cases](../docs/repo-level-atlantis-yaml.md#use-cases).
* Check out our [full documentation](../docs/README.md) for more details.
* Check out our [full documentation](../docs.md) for more details.

43
runatlantis.io/index.md Normal file
View File

@@ -0,0 +1,43 @@
---
# https://vitepress.dev/reference/default-theme-home-page
layout: home
pageClass: home-custom
hero:
name: Atlantis
text: Terraform Pull Request Automation
tagline: Running Terraform Workflows with Ease
image: /hero.png
actions:
- theme: brand
text: Get Started
link: /guide
- theme: alt
text: What is Atlantis?
link: https://medium.com/runatlantis/introducing-atlantis-6570d6de7281
- theme: alt
text: Join us on Slack
link: https://join.slack.com/t/atlantis-community/shared_invite/zt-9xlxtxtc-CUSKB1ATt_sQy6um~LDPNw
features:
- title: Fewer Mistakes
details: "Catch errors in Terraform plan output before applying changes. Ensure changes are applied before merging."
icon: ✅
- title: Empower Developers
details: "Developers can safely submit Terraform pull requests without credentials. Require approvals for applies."
icon: 💻
- title: Instant Audit Logs
details: "Detailed logs for infrastructure changes, approvals, and user actions. Configure approvals for production changes."
icon: 📋
- title: Proven at Scale
details: "Used by top companies to manage over 600 repos with 300 developers. In production since 2017."
icon: 🌍
- title: Self-Hosted
details: "Your credentials remain secure. Deployable on VMs, Kubernetes, Fargate, etc. Supports GitHub, GitLab, Bitbucket, Azure DevOps."
icon: ⚙️
- title: Open Source
details: "Atlantis is an open source project with strong community support, powered by volunteer contributions."
icon: 🌐
---

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

Before

Width:  |  Height:  |  Size: 629 B

After

Width:  |  Height:  |  Size: 629 B

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 972 B

After

Width:  |  Height:  |  Size: 972 B

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 110 KiB

View File

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 223 KiB

View File

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@@ -316,7 +316,7 @@ func (g *AzureDevopsClient) MergePull(logger logging.SimpleLogging, pull models.
return fmt.Errorf("the user %s is not found in the organization %s", g.UserName, owner)
}
imageURL := "https://github.com/runatlantis/atlantis/raw/main/runatlantis.io/.vuepress/public/hero.png"
imageURL := "https://github.com/runatlantis/atlantis/raw/main/runatlantis.io/.vitepress/public/hero.png"
id := azuredevops.IdentityRef{
Descriptor: &descriptor,
ID: userID,