-
Notifications
You must be signed in to change notification settings - Fork 133
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #91 from FBoucher/vnext
This is version 3!
- Loading branch information
Showing
127 changed files
with
3,825 additions
and
2,109 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# Find the Dockerfile at this URL | ||
# https://github.com/Azure/azure-functions-docker/blob/dev/host/4/bullseye/amd64/python/python39/python39-core-tools.Dockerfile | ||
FROM mcr.microsoft.com/azure-functions/python:4-python3.9-core-tools | ||
|
||
# Copy library scripts to execute | ||
COPY library-scripts/*.sh library-scripts/*.env /tmp/library-scripts/ | ||
|
||
# Install Node.js, Azure Static Web Apps CLI and Azure Functions Core Tools | ||
ARG NODE_VERSION="16" | ||
ARG CORE_TOOLS_VERSION="4" | ||
ENV NVM_DIR="/usr/local/share/nvm" \ | ||
NVM_SYMLINK_CURRENT=true \ | ||
PATH="${NVM_DIR}/current/bin:${PATH}" | ||
RUN bash /tmp/library-scripts/node-debian.sh "${NVM_DIR}" "${NODE_VERSION}" "${USERNAME}" \ | ||
&& su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1" \ | ||
&& su vscode -c "umask 0002 && npm install --cache /tmp/empty-cache -g @azure/static-web-apps-cli" \ | ||
&& if [ $CORE_TOOLS_VERSION != "4" ]; then apt-get remove -y azure-functions-core-tools-4 && apt-get update && apt-get install -y "azure-functions-core-tools-${CORE_TOOLS_VERSION}"; fi \ | ||
&& apt-get clean -y && rm -rf /var/lib/apt/lists/* | ||
|
||
# [Optional] Uncomment this section to install additional OS packages. | ||
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ | ||
# && apt-get -y install --no-install-recommends <your-package-list-here> | ||
|
||
# [Optional] Uncomment this line to install global node packages. | ||
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: | ||
// https://github.com/microsoft/vscode-dev-containers/tree/v0.231.6/containers/azure-static-web-apps | ||
{ | ||
"name": "Azure Static Web Apps", | ||
"build": { | ||
"dockerfile": "Dockerfile", | ||
"args": { | ||
// Please look at runtime version support to make sure you're using compatible versions | ||
// https://docs.microsoft.com/en-us/azure/azure-functions/supported-languages#languages-by-runtime-version | ||
"NODE_VERSION": "16", | ||
"CORE_TOOLS_VERSION": "4" | ||
} | ||
}, | ||
"forwardPorts": [ 7071, 4280 ], | ||
|
||
// Set *default* container specific settings.json values on container create. | ||
"settings": {}, | ||
|
||
// Add the IDs of extensions you want installed when the container is created. | ||
"extensions": [ | ||
"ms-azuretools.vscode-azurefunctions", | ||
"ms-azuretools.vscode-azurestaticwebapps", | ||
"ms-dotnettools.csharp", | ||
"ms-python.python", | ||
"dbaeumer.vscode-eslint", | ||
"ms-dotnettools.blazorwasm-companion", | ||
"eamodio.gitlens" | ||
], | ||
|
||
// Use 'postCreateCommand' to run commands after the container is created. | ||
// "postCreateCommand": "node --version", | ||
|
||
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. | ||
"remoteUser": "vscode" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,169 @@ | ||
#!/bin/bash | ||
#------------------------------------------------------------------------------------------------------------- | ||
# Copyright (c) Microsoft Corporation. All rights reserved. | ||
# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information. | ||
#------------------------------------------------------------------------------------------------------------- | ||
# | ||
# Docs: https://github.com/microsoft/vscode-dev-containers/blob/main/script-library/docs/node.md | ||
# Maintainer: The VS Code and Codespaces Teams | ||
# | ||
# Syntax: ./node-debian.sh [directory to install nvm] [node version to install (use "none" to skip)] [non-root user] [Update rc files flag] [install node-gyp deps] | ||
|
||
export NVM_DIR=${1:-"/usr/local/share/nvm"} | ||
export NODE_VERSION=${2:-"lts"} | ||
USERNAME=${3:-"automatic"} | ||
UPDATE_RC=${4:-"true"} | ||
INSTALL_TOOLS_FOR_NODE_GYP="${5:-true}" | ||
export NVM_VERSION="0.38.0" | ||
|
||
set -e | ||
|
||
if [ "$(id -u)" -ne 0 ]; then | ||
echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.' | ||
exit 1 | ||
fi | ||
|
||
# Ensure that login shells get the correct path if the user updated the PATH using ENV. | ||
rm -f /etc/profile.d/00-restore-env.sh | ||
echo "export PATH=${PATH//$(sh -lc 'echo $PATH')/\$PATH}" > /etc/profile.d/00-restore-env.sh | ||
chmod +x /etc/profile.d/00-restore-env.sh | ||
|
||
# Determine the appropriate non-root user | ||
if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then | ||
USERNAME="" | ||
POSSIBLE_USERS=("vscode" "node" "codespace" "$(awk -v val=1000 -F ":" '$3==val{print $1}' /etc/passwd)") | ||
for CURRENT_USER in ${POSSIBLE_USERS[@]}; do | ||
if id -u ${CURRENT_USER} > /dev/null 2>&1; then | ||
USERNAME=${CURRENT_USER} | ||
break | ||
fi | ||
done | ||
if [ "${USERNAME}" = "" ]; then | ||
USERNAME=root | ||
fi | ||
elif [ "${USERNAME}" = "none" ] || ! id -u ${USERNAME} > /dev/null 2>&1; then | ||
USERNAME=root | ||
fi | ||
|
||
updaterc() { | ||
if [ "${UPDATE_RC}" = "true" ]; then | ||
echo "Updating /etc/bash.bashrc and /etc/zsh/zshrc..." | ||
if [[ "$(cat /etc/bash.bashrc)" != *"$1"* ]]; then | ||
echo -e "$1" >> /etc/bash.bashrc | ||
fi | ||
if [ -f "/etc/zsh/zshrc" ] && [[ "$(cat /etc/zsh/zshrc)" != *"$1"* ]]; then | ||
echo -e "$1" >> /etc/zsh/zshrc | ||
fi | ||
fi | ||
} | ||
|
||
# Function to run apt-get if needed | ||
apt_get_update_if_needed() | ||
{ | ||
if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then | ||
echo "Running apt-get update..." | ||
apt-get update | ||
else | ||
echo "Skipping apt-get update." | ||
fi | ||
} | ||
|
||
# Checks if packages are installed and installs them if not | ||
check_packages() { | ||
if ! dpkg -s "$@" > /dev/null 2>&1; then | ||
apt_get_update_if_needed | ||
apt-get -y install --no-install-recommends "$@" | ||
fi | ||
} | ||
|
||
# Ensure apt is in non-interactive to avoid prompts | ||
export DEBIAN_FRONTEND=noninteractive | ||
|
||
# Install dependencies | ||
check_packages apt-transport-https curl ca-certificates tar gnupg2 dirmngr | ||
|
||
# Install yarn | ||
if type yarn > /dev/null 2>&1; then | ||
echo "Yarn already installed." | ||
else | ||
# Import key safely (new method rather than deprecated apt-key approach) and install | ||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor > /usr/share/keyrings/yarn-archive-keyring.gpg | ||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/yarn-archive-keyring.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list | ||
apt-get update | ||
apt-get -y install --no-install-recommends yarn | ||
fi | ||
|
||
# Adjust node version if required | ||
if [ "${NODE_VERSION}" = "none" ]; then | ||
export NODE_VERSION= | ||
elif [ "${NODE_VERSION}" = "lts" ]; then | ||
export NODE_VERSION="lts/*" | ||
fi | ||
|
||
# Create a symlink to the installed version for use in Dockerfile PATH statements | ||
export NVM_SYMLINK_CURRENT=true | ||
|
||
# Install the specified node version if NVM directory already exists, then exit | ||
if [ -d "${NVM_DIR}" ]; then | ||
echo "NVM already installed." | ||
if [ "${NODE_VERSION}" != "" ]; then | ||
su ${USERNAME} -c ". $NVM_DIR/nvm.sh && nvm install ${NODE_VERSION} && nvm clear-cache" | ||
fi | ||
exit 0 | ||
fi | ||
|
||
# Create nvm group, nvm dir, and set sticky bit | ||
if ! cat /etc/group | grep -e "^nvm:" > /dev/null 2>&1; then | ||
groupadd -r nvm | ||
fi | ||
umask 0002 | ||
usermod -a -G nvm ${USERNAME} | ||
mkdir -p ${NVM_DIR} | ||
chown :nvm ${NVM_DIR} | ||
chmod g+s ${NVM_DIR} | ||
su ${USERNAME} -c "$(cat << EOF | ||
set -e | ||
umask 0002 | ||
# Do not update profile - we'll do this manually | ||
export PROFILE=/dev/null | ||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash | ||
source ${NVM_DIR}/nvm.sh | ||
if [ "${NODE_VERSION}" != "" ]; then | ||
nvm alias default ${NODE_VERSION} | ||
fi | ||
nvm clear-cache | ||
EOF | ||
)" 2>&1 | ||
# Update rc files | ||
if [ "${UPDATE_RC}" = "true" ]; then | ||
updaterc "$(cat <<EOF | ||
export NVM_DIR="${NVM_DIR}" | ||
[ -s "\$NVM_DIR/nvm.sh" ] && . "\$NVM_DIR/nvm.sh" | ||
[ -s "\$NVM_DIR/bash_completion" ] && . "\$NVM_DIR/bash_completion" | ||
EOF | ||
)" | ||
fi | ||
|
||
# If enabled, verify "python3", "make", "gcc", "g++" commands are available so node-gyp works - https://github.com/nodejs/node-gyp | ||
if [ "${INSTALL_TOOLS_FOR_NODE_GYP}" = "true" ]; then | ||
echo "Verifying node-gyp OS requirements..." | ||
to_install="" | ||
if ! type make > /dev/null 2>&1; then | ||
to_install="${to_install} make" | ||
fi | ||
if ! type gcc > /dev/null 2>&1; then | ||
to_install="${to_install} gcc" | ||
fi | ||
if ! type g++ > /dev/null 2>&1; then | ||
to_install="${to_install} g++" | ||
fi | ||
if ! type python3 > /dev/null 2>&1; then | ||
to_install="${to_install} python3-minimal" | ||
fi | ||
if [ ! -z "${to_install}" ]; then | ||
apt_get_update_if_needed | ||
apt-get -y install ${to_install} | ||
fi | ||
fi | ||
|
||
echo "Done!" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,12 @@ | ||
# These are supported funding model platforms | ||
|
||
github: [fboucher]# Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] | ||
patreon: # Replace with a single Patreon username | ||
open_collective: # Replace with a single Open Collective username | ||
ko_fi: # Replace with a single Ko-fi username | ||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel | ||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry | ||
liberapay: # Replace with a single Liberapay username | ||
issuehunt: # Replace with a single IssueHunt username | ||
otechie: # Replace with a single Otechie username | ||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] | ||
# These are supported funding model platforms | ||
|
||
github: [fboucher]# Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] | ||
patreon: # Replace with a single Patreon username | ||
open_collective: # Replace with a single Open Collective username | ||
ko_fi: # Replace with a single Ko-fi username | ||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel | ||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry | ||
liberapay: # Replace with a single Liberapay username | ||
issuehunt: # Replace with a single IssueHunt username | ||
otechie: # Replace with a single Otechie username | ||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] |
45 changes: 45 additions & 0 deletions
45
.github/workflows/azure-static-web-apps-icy-coast-0871ee210.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
name: Azure Static Web Apps CI/CD | ||
|
||
on: | ||
push: | ||
branches: | ||
- feature/security | ||
pull_request: | ||
types: [opened, synchronize, reopened, closed] | ||
branches: | ||
- feature/security | ||
|
||
jobs: | ||
build_and_deploy_job: | ||
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') | ||
runs-on: ubuntu-latest | ||
name: Build and Deploy Job | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- name: Build And Deploy | ||
id: builddeploy | ||
uses: Azure/static-web-apps-deploy@v1 | ||
with: | ||
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_ICY_COAST_0871EE210 }} | ||
repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments) | ||
action: "upload" | ||
###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### | ||
# For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig | ||
app_location: "src/client" # App source code path | ||
api_location: "src/api" # Api source code path - optional | ||
output_location: "wwwroot" # Built app content directory - optional | ||
###### End of Repository/Build Configurations ###### | ||
|
||
close_pull_request_job: | ||
if: github.event_name == 'pull_request' && github.event.action == 'closed' | ||
runs-on: ubuntu-latest | ||
name: Close Pull Request Job | ||
steps: | ||
- name: Close Pull Request | ||
id: closepullrequest | ||
uses: Azure/static-web-apps-deploy@v1 | ||
with: | ||
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_ICY_COAST_0871EE210 }} | ||
action: "close" |
45 changes: 45 additions & 0 deletions
45
.github/workflows/azure-static-web-apps-lemon-forest-06c374b0f.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
name: Azure Static Web Apps CI/CD | ||
|
||
on: | ||
push: | ||
branches: | ||
- vnext | ||
pull_request: | ||
types: [opened, synchronize, reopened, closed] | ||
branches: | ||
- vnext | ||
|
||
jobs: | ||
build_and_deploy_job: | ||
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') | ||
runs-on: ubuntu-latest | ||
name: Build and Deploy Job | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- name: Build And Deploy | ||
id: builddeploy | ||
uses: Azure/static-web-apps-deploy@v1 | ||
with: | ||
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_LEMON_FOREST_06C374B0F }} | ||
repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments) | ||
action: "upload" | ||
###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### | ||
# For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig | ||
app_location: "src/TinyBlazorAdmin" # App source code path | ||
api_location: "src/AdminApi" # Api source code path - optional | ||
output_location: "wwwroot" # Built app content directory - optional | ||
###### End of Repository/Build Configurations ###### | ||
|
||
close_pull_request_job: | ||
if: github.event_name == 'pull_request' && github.event.action == 'closed' | ||
runs-on: ubuntu-latest | ||
name: Close Pull Request Job | ||
steps: | ||
- name: Close Pull Request | ||
id: closepullrequest | ||
uses: Azure/static-web-apps-deploy@v1 | ||
with: | ||
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_LEMON_FOREST_06C374B0F }} | ||
action: "close" |
Oops, something went wrong.