====== 7. CI/CD ======
In this chapter you'll learn how to automate the OpenSSL build.
----
===== What is CI/CD? =====
**CI** = Continuous Integration
**CD** = Continuous Delivery/Deployment
Developer → Git Push → Build → Test → Artifact → Deployment
└─────── automatic ──────────────────┘
==== Why Automate? ====
| Manual | Automatic |
|--------|-----------|
| Humans make mistakes | Always same process |
| "Works on my machine" | Reproducible builds |
| Waiting for build person | Immediately available |
| No documentation | Git history as proof |
----
===== Overview =====
| Platform | Description | Page |
|----------|-------------|------|
| GitHub Actions | Free for public repos | [[.:github-actions]] |
| Azure DevOps | Enterprise, self-hosted possible | [[.:azure-devops]] |
| GitLab CI | Self-hosted popular | - |
| Jenkins | Self-hosted, very flexible | - |
----
===== Simple Concept =====
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ TRIGGER │────▶│ BUILD │────▶│ ARTIFACT │
│ │ │ │ │ │
│ - Git Push │ │ - Checkout │ │ - DLLs │
│ - Schedule │ │ - Configure │ │ - NuGet │
│ - Manual │ │ - nmake │ │ - File Share │
└──────────────┘ └──────────────┘ └──────────────┘
----
===== Quick Start: GitHub Actions =====
# .github/workflows/build-openssl.yml
name: Build OpenSSL
on:
push:
branches: [ main ]
workflow_dispatch: # Manual start
jobs:
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Install Perl
run: choco install strawberryperl -y
- name: Install NASM
run: choco install nasm -y
- name: Build OpenSSL
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
cd src
perl Configure VC-WIN64A --prefix=%cd%\..\bin
nmake
nmake install_sw
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: openssl-win-x64
path: bin/
→ [[.:github-actions|Complete Guide]]
----
===== Prerequisites for CI/CD =====
| Requirement | GitHub Actions | Azure DevOps |
|-------------|----------------|--------------|
| Account | GitHub account | Azure account |
| Repository | Yes | Yes |
| Runner | Hosted (free) | Hosted or self-hosted |
| Windows build | ✓ windows-latest | ✓ windows-latest |
| Linux build | ✓ ubuntu-latest | ✓ ubuntu-latest |
----
===== Continue to =====
* [[.:github-actions|GitHub Actions - Step by Step]]
* [[.:azure-devops|Azure DevOps Pipelines]]
* [[.:.:start|Back to Overview]]
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//