Merge remote-tracking branch 'upstream/partner_templates' into partner_templates
This commit is contained in:
+3
-3
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
@@ -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 }}
|
||||
@@ -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"
|
||||
@@ -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'
|
||||
@@ -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
@@ -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"]
|
||||
}
|
||||
@@ -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
@@ -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 |
Reference in New Issue
Block a user