Merge remote-tracking branch 'upstream/partner_templates' into partner_templates

This commit is contained in:
Jason Freeberg
2021-11-24 12:13:19 -08:00
30 changed files with 392 additions and 406 deletions
+3 -3
View File
@@ -15,10 +15,10 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Set up Elixir
uses: erlef/setup-elixir@885971a72ed1f9240973bd92ab57af8c1aa68f24
uses: erlef/setup-beam@988e02bfe678367a02564f65ca2e37726dc0268f
with:
elixir-version: '1.10.3' # Define the elixir version [required]
otp-version: '22.3' # Define the OTP version [required]
elixir-version: '1.12.3' # Define the elixir version [required]
otp-version: '24.1' # Define the OTP version [required]
- name: Restore dependencies cache
uses: actions/cache@v2
with:
+5 -4
View File
@@ -4,15 +4,16 @@ on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10"]
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.9
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: 3.9
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
+2 -2
View File
@@ -16,10 +16,10 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.9
- name: Set up Python 3.10
uses: actions/setup-python@v2
with:
python-version: 3.9
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
+2 -2
View File
@@ -10,10 +10,10 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
- name: Set up Python 3.10
uses: actions/setup-python@v2
with:
python-version: 3.8
python-version: 3.10
- name: Add conda to system path
run: |
# $CONDA is an environment variable pointing to the root of the miniconda directory
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [3.7, 3.8, 3.9]
python-version: ["3.8", "3.9", "3.10"]
steps:
- uses: actions/checkout@v2
+2 -2
View File
@@ -19,12 +19,12 @@ jobs:
runs-on: macos-latest
strategy:
matrix:
r-version: [3.5, 3.6]
r-version: ['3.6.3', '4.1.1']
steps:
- uses: actions/checkout@v2
- name: Set up R ${{ matrix.r-version }}
uses: r-lib/actions/setup-r@ffe45a39586f073cc2e9af79c4ba563b657dc6e3
uses: r-lib/actions/setup-r@f57f1301a053485946083d7a45022b278929a78a
with:
r-version: ${{ matrix.r-version }}
- name: Install dependencies
+1 -2
View File
@@ -34,8 +34,7 @@ jobs:
matrix:
language: [ $detected-codeql-languages ]
# CodeQL supports [ $supported-codeql-languages ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
# Learn more about CodeQL language support at https://git.io/codeql-language-support
steps:
- name: Checkout repository
+36
View File
@@ -0,0 +1,36 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: MobSF
on:
push:
branches: [ $default-branch, $protected-branches ]
pull_request:
branches: [ $default-branch ]
schedule:
- cron: $cron-weekly
jobs:
mobile-security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Run mobsfscan
uses: MobSF/mobsfscan@a60d10a83af68e23e0b30611c6515da604f06f65
with:
args: . --sarif --output results.sarif || true
- name: Upload mobsfscan report
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: results.sarif
+3 -3
View File
@@ -37,13 +37,13 @@ jobs:
# run: cmake --build ${{ env.build }}
- name: Initialize MSVC Code Analysis
uses: microsoft/msvc-code-analysis-action@502db28262ba134c9a621d5a509b9f7e696c99b6
uses: microsoft/msvc-code-analysis-action@04825f6d9e00f87422d6bf04e1a38b1f3ed60d99
# Provide a unique ID to access the sarif output path
id: run-analysis
with:
cmakeBuildDirectory: ${{ env.build }}
# Ruleset file that will determine what checks will be run
ruleset: NativeRecommendRules.ruleset
ruleset: NativeRecommendedRules.ruleset
# Upload SARIF file to GitHub Code Scanning Alerts
- name: Upload SARIF to GitHub
@@ -56,4 +56,4 @@ jobs:
# uses: actions/upload-artifact@v2
# with:
# name: sarif-file
# path: ${{ steps.run-analysis.outputs.sarif }}
# path: ${{ steps.run-analysis.outputs.sarif }}
@@ -1,7 +1,7 @@
{
"name": "CodeQL Analysis",
"creator": "GitHub",
"description": "Security analysis from GitHub for C, C++, C#, Java, JavaScript, TypeScript, Python, and Go developers.",
"description": "Security analysis from GitHub for C, C++, C#, Go, Java, JavaScript, TypeScript, Python, and Ruby developers.",
"iconName": "octicon mark-github",
"categories": ["Code Scanning", "C", "C#", "C++", "Go", "Java", "JavaScript", "TypeScript", "Python"]
"categories": ["Code Scanning", "C", "C++", "C#", "Go", "Java", "JavaScript", "TypeScript", "Python", "Ruby"]
}
@@ -0,0 +1,13 @@
{
"name": "mobsf",
"creator": "mobsf",
"description": "Mobile Security Framework (MobSF) is an automated, all-in-one mobile application (Android/iOS/Windows) pen-testing, malware analysis and security assessment framework capable of performing static and dynamic analysis.",
"iconName": "mobsf",
"categories": [
"Code Scanning",
"Java",
"Swift",
"Objective-C",
"Kotlin"
]
}
+80
View File
@@ -0,0 +1,80 @@
# This workflow will build and push an application to a Azure Kubernetes Service (AKS) cluster when you push your code
#
# This workflow assumes you have already created the target AKS cluster and have created an Azure Container Registry (ACR)
# For instructions see https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough-portal
# https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-portal
# https://github.com/Azure/aks-create-action
#
# To configure this workflow:
#
# 1. Set the following secrets in your repository:
# - AZURE_CREDENTIALS (instructions for getting this https://github.com/Azure/login#configure-a-service-principal-with-a-secret)
#
# 2. Set the following environment variables (or replace the values below):
# - AZURE_CONTAINER_REGISTRY (name of your container registry)
# - PROJECT_NAME
# - RESOURCE_GROUP (where your cluster is deployed)
# - CLUSTER_NAME (name of your AKS cluster)
#
# 3. Choose the approrpiate render engine for the bake step https://github.com/Azure/k8s-bake. The config below assumes helm, then set
# any needed environment variables such as:
# - CHART_PATH
# - CHART_OVERRIDE_PATH
#
# For more information on GitHub Actions for Azure, refer to https://github.com/Azure/Actions
# For more samples to get started with GitHub Action workflows to deploy to Azure, refer to https://github.com/Azure/actions-workflow-samples
# For more options with the actions used below please see the folllowing
# https://github.com/Azure/login
# https://github.com/Azure/aks-set-context
# https://github.com/marketplace/actions/azure-cli-action
# https://github.com/Azure/k8s-bake
# https://github.com/Azure/k8s-deploy
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Build image on ACR
uses: azure/CLI@v1
with:
azcliversion: 2.29.1
inlineScript: |
az configure --defaults acr=${{ env.AZURE_CONTAINER_REGISTRY }}
az acr build -t -t ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.PROJECT_NAME }}:${{ github.sha }}
- name: Gets K8s context
uses: azure/aks-set-context@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
resource-group: ${{ env.RESOURCE_GROUP }}
cluster-name: ${{ env.CLUSTER_NAME }}
id: login
- name: Configure deployment
uses: azure/k8s-bake@v1
with:
renderEngine: 'helm'
helmChart: ${{ env.CHART_PATH }}
overrideFiles: ${{ env.CHART_OVERRIDE_PATH }}
overrides: |
replicas:2
helm-version: 'latest'
id: bake
- name: Deploys application
- uses: Azure/k8s-deploy@v1
with:
manifests: ${{ steps.bake.outputs.manifestsBundle }}
images: |
${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.PROJECT_NAME }}:${{ github.sha }}
imagepullsecrets: |
${{ env.PROJECT_NAME }}
+64
View File
@@ -0,0 +1,64 @@
# This workflow will build and push a web application to an Azure Static Web App when you change your code.
#
# This workflow assumes you have already created the target Azure Static Web App.
# For instructions see https://docs.microsoft.com/azure/static-web-apps/get-started-portal?tabs=vanilla-javascript
#
# To configure this workflow:
#
# 1. Set up a secret in your repository named AZURE_STATIC_WEB_APPS_API_TOKEN with the value of your Static Web Apps deployment token.
# For instructions on obtaining the deployment token see: https://docs.microsoft.com/azure/static-web-apps/deployment-token-management
#
# 3. Change the values for the APP_LOCATION, API_LOCATION and APP_ARTIFACT_LOCATION, AZURE_STATIC_WEB_APPS_API_TOKEN environment variables (below).
# For instructions on setting up the appropriate configuration values go to https://docs.microsoft.com/azure/static-web-apps/front-end-frameworks
name: Deploy web app to Azure Static Web Apps
on:
push:
branches:
- $default-branch
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- $default-branch
# Environment variables available to all jobs and steps in this workflow
env:
APP_LOCATION: "/" # location of your client code
API_LOCATION: "api" # location of your api source code - optional
APP_ARTIFACT_LOCATION: "build" # location of client code build output
AZURE_STATIC_WEB_APPS_API_TOKEN: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} # secret containing deployment token for your static web app
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: ${{ env.AZURE_STATIC_WEB_APPS_API_TOKEN }} # secret containing api token for app
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 you app requirements. ######
# For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
app_location: ${{ env.APP_LOCATION }}
api_location: ${{ env.API_LOCATION }}
app_artifact_location: ${{ env.APP_ARTIFACT_LOCATION }}
###### 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: ${{ env.AZURE_STATIC_WEB_APPS_API_TOKEN }} # secret containing api token for app
action: "close"
+6 -24
View File
@@ -29,41 +29,23 @@ env:
NODE_VERSION: '10.x' # set this to the node version to use
jobs:
build:
build-and-deploy:
name: Build and Deploy
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v2
- name: Set up Node.js
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}
- name: npm install, build, and test
run: |
# Build and test the project, then
# deploy to Azure Web App.
npm install
npm run build --if-present
npm run test --if-present
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v2
with:
name: node-app
path: .
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Development'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v2
with:
name: node-app
- name: 'Deploy to Azure WebApp'
id: deploy-to-webapp
uses: azure/webapps-deploy@v2
@@ -1,59 +0,0 @@
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions
name: Build and deploy a container to an Azure Web App
env:
AZURE_WEBAPP_NAME: '' # set this to the name of your Azure Web App
on:
push:
branches:
- $default-branch
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Log in to GitHub container registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Lowercase the repo name
run: echo "REPO=${GITHUB_REPOSITORY,,}" >>${GITHUB_ENV}
- name: Build and push container image to registry
uses: docker/build-push-action@v2
with:
push: true
tags: ghcr.io/${{ env.REPO }}:${{ github.sha }}
file: ./Dockerfile
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Development'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Lowercase the repo name
run: echo "REPO=${GITHUB_REPOSITORY,,}" >>${GITHUB_ENV}
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v2
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
images: 'ghcr.io/${{ env.REPO }}:${{ github.sha }}'
@@ -1,59 +0,0 @@
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions
name: Build and deploy ASP.Net Core app to an Azure Web App
env:
AZURE_WEBAPP_NAME: your-app-name # set this to the name of your Azure Web App
DOTNET_VERSION: '5' # set this to the .NET Core version to use
on:
push:
branches:
- $default-branch
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Build with dotnet
run: dotnet build --configuration Release
- name: dotnet publish
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v2
with:
name: .net-app
path: ${{env.DOTNET_ROOT}}/myapp
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Development'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v2
with:
name: .net-app
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v2
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: .
@@ -1,56 +0,0 @@
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions
name: Build and deploy JAR app to Azure Web App
env:
AZURE_WEBAPP_NAME: your-app-name # set this to the name of your Azure Web App
JAVA_VERSION: '11' # set this to the Java version to use
on:
push:
branches:
- $default-branch
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Java version
uses: actions/setup-java@v2.3.1
with:
java-version: ${{ env.JAVA_VERSION }}
- name: Build with Maven
run: mvn clean install
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v2
with:
name: java-app
path: '${{ github.workspace }}/target/*.jar'
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Development'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v2
with:
name: java-app
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v2
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: '*.jar'
-64
View File
@@ -1,64 +0,0 @@
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions
name: Build and deploy PHP app to Azure Web App
on:
push:
branches:
- $default-branch
workflow_dispatch:
env:
AZURE_WEBAPP_NAME: your-app-name # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
PHP_VERSION: '10.x' # set this to the PHP version to use
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ env.PHP_VERSION }}
- name: Check if composer.json exists
id: check_files
uses: andstor/file-existence-action@v1
with:
files: 'composer.json'
- name: Run composer install if composer.json exists
if: steps.check_files.outputs.files_exists == 'true'
run: composer validate --no-check-publish && composer install --prefer-dist --no-progress
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v2
with:
name: php-app
path: .
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Development'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v2
with:
name: php-app
- name: 'Deploy to Azure Web App'
uses: azure/webapps-deploy@v2
id: deploy-to-webapp
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: .
@@ -1,66 +0,0 @@
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions
# More info on Python, GitHub Actions, and Azure App Service: https://aka.ms/python-webapps-actions
name: Build and deploy Python app to Azure Web App
env:
AZURE_WEBAPP_NAME: your-app-name # set this to the name of your Azure Web App
PYTHON_VERSION: '3.8' # set this to the Python version to use
on:
push:
branches:
- $default-branch
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python version
uses: actions/setup-python@v2.2.2
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Create and start virtual environment
run: |
python -m venv venv
source venv/bin/activate
- name: Install dependencies
run: pip install -r requirements.txt
# Optional: Add step to run tests here (PyTest, Django test suites, etc.)
- name: Upload artifact for deployment jobs
uses: actions/upload-artifact@v2
with:
name: python-app
path: |
.
!venv/
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Development'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v2
with:
name: python-app
path: .
- name: 'Deploy to Azure Web App'
uses: azure/webapps-deploy@v2
id: deploy-to-webapp
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
+26 -21
View File
@@ -4,11 +4,11 @@
#
# 1. Ensure that your repository contains the necessary configuration for your Google Kubernetes Engine cluster, including deployment.yml, kustomization.yml, service.yml, etc.
#
# 2. Set up secrets in your workspace: GKE_PROJECT with the name of the project and GKE_SA_KEY with the Base64 encoded JSON service account key (https://github.com/GoogleCloudPlatform/github-actions/tree/docs/service-account-key/setup-gcloud#inputs).
# 2. Create and configure a Workload Identity Provider for GitHub (https://github.com/google-github-actions/auth#setting-up-workload-identity-federation)
#
# 3. Change the values for the GKE_ZONE, GKE_CLUSTER, IMAGE, and DEPLOYMENT_NAME environment variables (below).
# 3. Change the values for the GAR_LOCATION, GKE_ZONE, GKE_CLUSTER, IMAGE, REPOSITORY and DEPLOYMENT_NAME environment variables (below).
#
# For more support on how to run the workflow, please visit https://github.com/google-github-actions/setup-gcloud/tree/master/example-workflows/gke
# For more support on how to run the workflow, please visit https://github.com/google-github-actions/setup-gcloud/tree/master/example-workflows/gke-kustomize
name: Build and Deploy to GKE
@@ -19,11 +19,17 @@ on:
env:
PROJECT_ID: ${{ secrets.GKE_PROJECT }}
GAR_LOCATION: us-central1 # TODO: update region of the Artifact Registry
GKE_CLUSTER: cluster-1 # TODO: update to cluster name
GKE_ZONE: us-central1-c # TODO: update to cluster zone
DEPLOYMENT_NAME: gke-test # TODO: update to deployment name
REPOSITORY: samples # TODO: update to Artifact Registry docker repository
IMAGE: static-site
permissions:
contents: 'read'
id-token: 'write'
jobs:
setup-build-publish-deploy:
name: Setup, Build, Publish, and Deploy
@@ -34,48 +40,47 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
# Setup gcloud CLI
- uses: google-github-actions/setup-gcloud@v0.2.0
# Configure Workload Identity Federation and generate an access token.
- id: 'auth'
name: 'Authenticate to Google Cloud'
uses: 'google-github-actions/auth@v0.4.0'
with:
service_account_key: ${{ secrets.GKE_SA_KEY }}
project_id: ${{ secrets.GKE_PROJECT }}
# Configure Docker to use the gcloud command-line tool as a credential
# helper for authentication
- run: |-
gcloud --quiet auth configure-docker
token_format: 'access_token'
workload_identity_provider: 'projects/123456789/locations/global/workloadIdentityPools/my-pool/providers/my-provider'
service_account: 'my-service-account@my-project.iam.gserviceaccount.com'
- name: Docker configuration
run: |-
echo ${{steps.auth.outputs.access_token}} | docker login -u oauth2accesstoken --password-stdin https://$GAR_LOCATION-docker.pkg.dev
# Get the GKE credentials so we can deploy to the cluster
- uses: google-github-actions/get-gke-credentials@v0.2.1
- name: Set up GKE credentials
uses: google-github-actions/get-gke-credentials@v0.4.0
with:
cluster_name: ${{ env.GKE_CLUSTER }}
location: ${{ env.GKE_ZONE }}
credentials: ${{ secrets.GKE_SA_KEY }}
# Build the Docker image
- name: Build
run: |-
docker build \
--tag "gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA" \
--tag "$GAR_LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/$IMAGE:$GITHUB_SHA" \
--build-arg GITHUB_SHA="$GITHUB_SHA" \
--build-arg GITHUB_REF="$GITHUB_REF" \
.
# Push the Docker image to Google Container Registry
# Push the Docker image to Google Artifact Registry
- name: Publish
run: |-
docker push "gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA"
docker push "$GAR_LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/$IMAGE:$GITHUB_SHA"
# Set up kustomize
- name: Set up Kustomize
run: |-
curl -sfLo kustomize https://github.com/kubernetes-sigs/kustomize/releases/download/v3.1.0/kustomize_3.1.0_linux_amd64
chmod u+x ./kustomize
# Deploy the Docker image to the GKE cluster
- name: Deploy
run: |-
./kustomize edit set image gcr.io/PROJECT_ID/IMAGE:TAG=gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA
# replacing the image name in the k8s template
./kustomize edit set image LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG=$GAR_LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/$IMAGE:$GITHUB_SHA
./kustomize build . | kubectl apply -f -
kubectl rollout status deployment/$DEPLOYMENT_NAME
kubectl get services -o wide
@@ -0,0 +1,7 @@
{
"name": "Deploy to a AKS Cluster",
"description": "Deploy an application to a Azure Kubernetes Service Cluster using Azure Credentials",
"creator": "Microsoft Azure",
"iconName": "azure",
"categories": ["Deployment", "Kompose", "Helm", "Kustomize", "Kubernetes", "Dockerfile"]
}
@@ -0,0 +1,7 @@
{
"name": "Deploy web app to Azure Static Web Apps",
"description": "Build and deploy web application to an Azure Static Web App.",
"creator": "Microsoft Azure",
"iconName": "azure-staticwebapp",
"categories": ["Deployment", "React", "Angular", "Vue", "Svelte", "Gatsby", "Next", "Nuxt", "Jekyll", "Blazor"]
}
@@ -1,7 +0,0 @@
{
"name": "Deploy a container to an Azure Web App",
"description": "Build a container and deploy it to an Azure Web App.",
"creator": "Microsoft Azure",
"iconName": "azure",
"categories": ["Deployment", "Dockerfile"]
}
@@ -1,7 +0,0 @@
{
"name": "Deploy a .NET Core app to an Azure Web App",
"description": "Build a .NET Core project and deploy it to an Azure Web App.",
"creator": "Microsoft Azure",
"iconName": "azure",
"categories": ["Deployment", "C#", "dotNetCore"]
}
@@ -1,7 +0,0 @@
{
"name": "Deploy a Java .jar app to an Azure Web App",
"description": "Build a Java project and deploy it to an Azure Web App.",
"creator": "Microsoft Azure",
"iconName": "azure",
"categories": ["Deployment", "Java"]
}
@@ -1,7 +0,0 @@
{
"name": "Deploy a PHP app to an Azure Web App",
"description": "Build a PHP app and deploy it to an Azure Web App.",
"creator": "Microsoft Azure",
"iconName": "azure",
"categories": ["Deployment", "PHP"]
}
@@ -1,7 +0,0 @@
{
"name": "Deploy a Python app to an Azure Web App",
"description": "Build a Python app and deploy it to an Azure Web App.",
"creator": "Microsoft Azure",
"iconName": "azure",
"categories": ["Deployment", "Python"]
}
@@ -3,5 +3,5 @@
"description": "Build a docker container, publish it to Google Container Registry, and deploy to GKE.",
"creator": "Google Cloud",
"iconName": "googlegke",
"categories": ["Deployment", "Dockerfile"]
"categories": ["Deployment", "Dockerfile", "Kubernetes", "Kustomize"]
}
+17
View File
@@ -0,0 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18">
<defs>
<linearGradient id="e6ad4df9-0ab7-4b49-9706-620b42380f0b" x1="9" y1="16.236" x2="9" y2="5.599" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#005ba1" />
<stop offset="0.775" stop-color="#0078d4" />
</linearGradient>
</defs>
<g id="e7885b9c-9714-4276-bd41-591cb7e086a5">
<path d="M0,5.6H18a0,0,0,0,1,0,0V15.635a.6.6,0,0,1-.6.6H.6a.6.6,0,0,1-.6-.6V5.6A0,0,0,0,1,0,5.6Z" fill="url(#e6ad4df9-0ab7-4b49-9706-620b42380f0b)" />
<rect x="1.309" y="6.657" width="15.527" height="8.514" rx="0.6" fill="#5ea0ef" opacity="0.6" />
<path d="M.6,1.764H17.4a.6.6,0,0,1,.6.6V5.6a0,0,0,0,1,0,0H0a0,0,0,0,1,0,0V2.365A.6.6,0,0,1,.6,1.764Z" fill="#005ba1" />
<path d="M7.109,13.217l-.321.32a.144.144,0,0,1-.205,0L4.258,11.205a.29.29,0,0,1,0-.41l.321-.32L7.11,13.012A.145.145,0,0,1,7.109,13.217Zm3.653,0,.321.32a.144.144,0,0,0,.205,0l2.325-2.332a.29.29,0,0,0,0-.41l-.322-.32-2.53,2.537A.145.145,0,0,0,10.762,13.217Z" fill="#fff" opacity="0.8" />
<path d="M6.831,8.433l.32.321a.144.144,0,0,1,0,.205L4.576,11.527l-.32-.322a.289.289,0,0,1,0-.41l2.37-2.363A.145.145,0,0,1,6.831,8.433Zm4.207,0-.32.321a.144.144,0,0,0,0,.205l2.575,2.568.32-.321a.292.292,0,0,0,0-.411l-2.37-2.362A.144.144,0,0,0,11.038,8.434Z" fill="#fff" />
<path d="M8.159,14.363,7.646,14.2a.105.105,0,0,1-.067-.131L9.669,7.54a.1.1,0,0,1,.13-.067l.513.164a.1.1,0,0,1,.067.13L8.289,14.3A.1.1,0,0,1,8.159,14.363Z" fill="#fff" />
<path d="M3.166,3.847a.76.76,0,1,1-.76-.76A.76.76,0,0,1,3.166,3.847ZM4.8,3.087a.76.76,0,1,0,.76.76A.76.76,0,0,0,4.8,3.087Zm2.393,0a.76.76,0,1,0,.76.76A.76.76,0,0,0,7.191,3.087Z" fill="#fff" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

+114
View File
@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!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" width="128px" height="128px" viewBox="0 0 128 128" enable-background="new 0 0 128 128" xml:space="preserve"> <image id="image0" width="128" height="128" x="0" y="0"
href="data:image/png;base64,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
YWR5ccllPAAAAABJRU5ErkJggg==" />
</svg>

After

Width:  |  Height:  |  Size: 8.7 KiB