Master GitHub Actions with hands-on labs and exercises. Learn how to automate workflows, run tests, deploy applications, and more using GitHub's powerful automation platform. This repository has everything you need to get started with continuous integration and continuous deployment.
name: ASP.NET Web App - Upload - Download Artifact Multiple OS
on:
push:
paths:
- '.github/workflows/aspnet-webapp-upload-download-artifact-multiple-os.yml'
- 'src/dotnet/WebApp/**'
workflow_dispatch:
jobs:
build-and-upload:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: $
defaults:
run:
working-directory: ./src/dotnet/WebApp
shell: bash # Use Bash shell for all steps
steps:
- name: Checkout Code
uses: actions/checkout@v4.1.7
- name: Set up .NET Core
uses: actions/setup-dotnet@v4.0.1
with:
dotnet-version: '8.x'
- name: Build Code
run: dotnet build --configuration Release
- name: Publish Code
run: |
# Set the publish directory based on OS
if [[ "$RUNNER_OS" == "Windows" ]]; then
PUBLISH_DIR="$\\webapp"
else
PUBLISH_DIR="$/webapp"
fi
# Publish the application
echo "Publishing to $PUBLISH_DIR"
mkdir -p "$PUBLISH_DIR"
dotnet publish -c Release --output "$PUBLISH_DIR"
# Verify contents
echo "Contents of $PUBLISH_DIR:"
ls "$PUBLISH_DIR"
- name: Upload Artifact
uses: actions/upload-artifact@v4.3.6
with:
name: 'aspnet-web-app-$'
path: $/webapp # Temporary directory used for publishing.
download:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: $
needs: build-and-upload
defaults:
run:
shell: bash # Consistent shell for all OSes
steps:
- name: Download Artifact
uses: actions/download-artifact@v4.1.8
with:
name: 'aspnet-web-app-$'
- name: List Files in Artifact
run: |
echo "Listing files in the downloaded directory:"
ls -R $GITHUB_WORKSPACE