The attribute plugin is not available, 2fa disabled
Inhaltsverzeichnis
7.1 GitHub Actions
Diese Seite zeigt, wie Sie OpenSSL mit GitHub Actions automatisch bauen.
Was ist GitHub Actions?
GitHub Actions ist die CI/CD-Plattform von GitHub:
- Direkt in GitHub integriert
- Kostenlos für öffentliche Repositories
- YAML-basierte Konfiguration
Grundkonzepte
| Begriff | Bedeutung |
| ——— | ———– |
| Workflow | Die gesamte Automatisierung (.yml Datei) |
| Job | Eine Gruppe von Schritten (z.B. „build-windows“) |
| Step | Ein einzelner Befehl oder Action |
| Runner | Der Server, der den Job ausführt |
| Artifact | Das Ergebnis (z.B. die DLLs) |
Workflow-Datei erstellen
Erstellen Sie die Datei .github/workflows/build-openssl.yml:
# OpenSSL Build Workflow name: Build OpenSSL 3.6 # Wann wird gebaut? on: push: branches: [ main ] # Bei Push auf main pull_request: branches: [ main ] # Bei Pull Requests workflow_dispatch: # Manuell starten schedule: - cron: '0 2 * * 0' # Jeden Sonntag 2:00 Uhr jobs: # ============================================ # Windows x64 Build # ============================================ build-windows: runs-on: windows-latest steps: # 1. Repository auschecken - name: Checkout uses: actions/checkout@v4 with: submodules: true # 2. Perl installieren - name: Install Strawberry Perl run: choco install strawberryperl -y # 3. NASM installieren - name: Install NASM run: choco install nasm -y # 4. Build - name: Build OpenSSL shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" set PATH=C:\Strawberry\perl\bin;C:\Program Files\NASM;%PATH% cd src perl Configure VC-WIN64A --prefix=%GITHUB_WORKSPACE%\bin nmake nmake install_sw # 5. Version prüfen - name: Verify Build run: | bin\bin\openssl.exe version -a bin\bin\openssl.exe list -signature-algorithms | findstr mldsa # 6. Artefakt hochladen - name: Upload Artifact uses: actions/upload-artifact@v4 with: name: openssl-3.6.0-win-x64 path: bin/ retention-days: 30 # ============================================ # Linux x64 Build # ============================================ build-linux: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install Dependencies run: | sudo apt-get update sudo apt-get install -y build-essential perl nasm - name: Build OpenSSL run: | cd src ./Configure linux-x86_64 --prefix=$GITHUB_WORKSPACE/linux-build make -j$(nproc) make install - name: Verify Build run: | linux-build/bin/openssl version -a - name: Upload Artifact uses: actions/upload-artifact@v4 with: name: openssl-3.6.0-linux-x64 path: linux-build/ retention-days: 30
Workflow-Struktur erklärt
Trigger (on:)
on: push: branches: [ main ] # Nur main-Branch paths: - 'src/**' # Nur wenn src/ geändert workflow_dispatch: # Manuell im GitHub UI
Jobs
jobs: job-name: runs-on: windows-latest # oder ubuntu-latest needs: [andere-jobs] # Abhängigkeiten if: github.event_name == 'push' # Bedingung
Schritte
steps: - name: Beschreibender Name uses: action/name@v4 # Vorgefertigte Action with: parameter: wert - name: Shell-Befehl run: echo "Hello" shell: bash # oder cmd, pwsh
Secrets für private Builds
Falls Sie private Builds veröffentlichen:
1. Secret in GitHub erstellen
Repository → Settings → Secrets → New secret
NUGET_API_KEY- Ihr NuGet-SchlüsselAZURE_STORAGE_KEY- Für Blob-Upload
2. In Workflow verwenden
- name: Publish NuGet run: dotnet nuget push *.nupkg --api-key ${{ secrets.NUGET_API_KEY }} env: NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
Release erstellen
Automatisch Release bei Tag:
on: push: tags: - 'v*' # z.B. v3.6.0 jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # ... Build-Schritte ... - name: Create Release uses: softprops/action-gh-release@v1 with: files: | openssl-3.6.0-win-x64.zip openssl-3.6.0-linux-x64.tar.gz env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Matrix-Builds
Mehrere Konfigurationen gleichzeitig:
jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [windows-latest, ubuntu-latest] include: - os: windows-latest target: VC-WIN64A - os: ubuntu-latest target: linux-x86_64 steps: - name: Configure run: perl Configure ${{ matrix.target }}
Workflow manuell starten
- Gehen Sie zu „Actions“ Tab in GitHub
- Wählen Sie den Workflow
- Klicken Sie „Run workflow“
- Wählen Sie Branch
- Klicken Sie „Run workflow“
Häufige Probleme
"nmake: command not found"
Visual Studio Umgebung nicht geladen:
- name: Build shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" nmake
Build dauert zu lange
Cache verwenden:
- name: Cache OpenSSL Build uses: actions/cache@v4 with: path: src/ key: openssl-${{ hashFiles('src/VERSION') }}
Weiter zu
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: den 29.01.2026 um 15:14