Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
jpawlowski committed Jul 25, 2024
0 parents commit 48c5a74
Show file tree
Hide file tree
Showing 36 changed files with 2,476 additions and 0 deletions.
39 changes: 39 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"name": "🚧 devcontainer-features",
"image": "mcr.microsoft.com/devcontainers/base:debian",
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.defaultProfile.linux": "bash",
"json.schemas": [
{
"fileMatch": [
"*/devcontainer-feature.json"
],
"url": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainerFeature.schema.json"
}
]
},
"extensions": [
"lizebang.bash-extension-pack",
"ms-python.python",
"ms-python.vscode-pylance",
"DavidAnson.vscode-markdownlint",
"github.vscode-github-actions"
]
}
},
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
"installZsh": "false",
"configureZshAsDefaultShell": "false",
"installOhMyZsh": "false"
},
"ghcr.io/devcontainers/features/docker-in-docker:2": {},
"ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/devcontainers/features/node:1": {},
"ghcr.io/devcontainers/features/powershell:1": {},
"ghcr.io/devcontainers/features/python:1": {}
},
"postCreateCommand": "npm install -g @devcontainers/cli"
}
64 changes: 64 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf

# PowerShell files
[*.{ps1,psd1,psm1,ps1xml,psc1,clixml}]
end_of_line = lf
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
insert_final_newline = true

# Windows script and batch files
[*.{cmd,bat}]
end_of_line = crlf
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
insert_final_newline = true

# Markdown files
[*.md]
trim_trailing_whitespace = false
insert_final_newline = true

# CSV and Text files
[*.{csv,txt}]
trim_trailing_whitespace = true
insert_final_newline = true

# JSON and YAML files
[*.{json,yml}]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true

# XML files
[*.xml]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true

# VS Code workspace files
[*.code-workspace]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true

# Matches the exact file .editorconfig
[.editorconfig]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true

# Docker
[Dockerfile]
indent_style = space
indent_size = 4
41 changes: 41 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto

# PowerShell files will always have LF line endings on checkout and in the repository.
*.ps1 text eol=lf
*.psd1 text eol=lf
*.psm1 text eol=lf
*.ps1xml text eol=lf
*.psc1 text eol=lf
*.clixml text eol=lf

# Windows script and batch files will always have CRLF line endings on checkout and in the repository.
*.cmd text eol=crlf
*.bat text eol=crlf

# Markdown, CSV, and Text files will always have LF line endings on checkout and in the repository.
*.md text eol=lf
*.csv text eol=lf
*.txt text eol=lf

# JSON and YAML files will always have LF line endings on checkout and in the repository.
*.json text eol=lf
*.yml text eol=lf
*.yaml text eol=lf

# XML files will always have LF line endings on checkout and in the repository.
*.xml text eol=lf

# Set svg to binary type, as SVG is unlikely to be edited by hand. Can be treated as checked in blob
*.svg binary

# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.pdf binary
*.zip binary
*.gz binary
*.tar binary
*.exe binary
47 changes: 47 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: "Release dev container features & Generate Documentation"
on:
workflow_dispatch:

jobs:
deploy:
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
packages: write
steps:
- uses: actions/checkout@v4

- name: "Publish Features"
uses: devcontainers/action@v1
with:
publish-features: "true"
base-path-to-features: "./src"
generate-docs: "true"

env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Create PR for Documentation
id: push_image_info
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -e
echo "Start."
# Configure git and Push updates
git config --global user.email github-actions[bot]@users.noreply.github.com
git config --global user.name github-actions[bot]
git config pull.rebase false
branch=automated-documentation-update-$GITHUB_RUN_ID
git checkout -b $branch
message='Automated documentation update'
# Add / update and commit
git add */**/README.md
git commit -m 'Automated documentation update [skip ci]' || export NO_UPDATES=true
# Push
if [ "$NO_UPDATES" != "true" ] ; then
git push origin "$branch"
gh pr create --title "$message" --body "$message"
fi
60 changes: 60 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: "CI - Test Features"
on:
push:
branches:
- main
pull_request:
workflow_dispatch:

jobs:
test-autogenerated:
runs-on: ubuntu-latest
continue-on-error: true
strategy:
matrix:
features:
- cli-microsoft365
- pnp.powershell
- powershell-extended
baseImage:
- debian:latest
- ubuntu:latest
- mcr.microsoft.com/devcontainers/base:ubuntu
steps:
- uses: actions/checkout@v4

- name: "Install latest devcontainer CLI"
run: npm install -g @devcontainers/cli

- name: "Generating tests for '${{ matrix.features }}' against '${{ matrix.baseImage }}'"
run: devcontainer features test --skip-scenarios -f ${{ matrix.features }} -i ${{ matrix.baseImage }} .

test-scenarios:
runs-on: ubuntu-latest
continue-on-error: true
strategy:
matrix:
features:
- cli-microsoft365
- pnp.powershell
- powershell-extended
steps:
- uses: actions/checkout@v4

- name: "Install latest devcontainer CLI"
run: npm install -g @devcontainers/cli

- name: "Generating tests for '${{ matrix.features }}' scenarios"
run: devcontainer features test -f ${{ matrix.features }} --skip-autogenerated --skip-duplicated .

test-global:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4

- name: "Install latest devcontainer CLI"
run: npm install -g @devcontainers/cli

- name: "Testing global scenarios"
run: devcontainer features test --global-scenarios-only .
16 changes: 16 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: "Validate devcontainer-feature.json files"
on:
workflow_dispatch:
pull_request:

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: "Validate devcontainer-feature.json files"
uses: devcontainers/action@v1
with:
validate-only: "true"
base-path-to-features: "./src"
Loading

0 comments on commit 48c5a74

Please sign in to comment.