name: Build and push container image run-name: ${{ gitea.actor }} is building and pushing container image on: [push] env: REGISTRY_DOMAIN: harbor.lan REGISTRY_USER: act_runner REGISTRY_PASSWORD: "LibgegWaltAtcogwecGaj@Knyajes4" RESULT_IMAGE_NAME: tools/rsyncd jobs: build-and-push-image: runs-on: docker steps: - name: Checkout uses: actions/checkout@v5 - name: Log in to registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY_DOMAIN }} username: act_runner #password: ${{ env.REGISTRY_PASSWORD }} password: LibgegWaltAtcogwecGaj@Knyajes4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Prepare BuildKit config with custom CA # Definiere den Hostnamen (ggf. mit Port) env: REGISTRY_HOST: "harbor.lan" REGISTRY_CA_CERT: ${{ secrets.REGISTRY_CA_CERT }} run: | # 1. Erstelle ein temporäres Verzeichnis für unsere Dateien CONFIG_DIR_PATH="${{ runner.temp }}/buildx-config" mkdir -p "${CONFIG_DIR_PATH}" # 2. Definiere die Pfade für die beiden Dateien CERT_FILE_PATH="${CONFIG_DIR_PATH}/ca.crt" CONFIG_FILE_PATH="${CONFIG_DIR_PATH}/buildkitd.toml" # 3. Schreibe das Zertifikat in die Zertifikatsdatei echo "${REGISTRY_CA_CERT}" > "${CERT_FILE_PATH}" echo "Zertifikat geschrieben nach ${CERT_FILE_PATH}" # 4. Erstelle die TOML-Konfigurationsdatei # Diese muss den *absoluten Pfad* zur Zertifikatsdatei enthalten. cat << EOF > "${CONFIG_FILE_PATH}" [registry."${REGISTRY_HOST}"] ca = ["${CERT_FILE_PATH}"] EOF echo "BuildKit-Konfiguration geschrieben nach ${CONFIG_FILE_PATH}" # 5. Mache den Pfad zur TOML-Datei für den nächsten Schritt verfügbar echo "BUILDKIT_CONFIG=${CONFIG_FILE_PATH}" >> $GITEA_ENV # Für Gitea # Für GitHub Actions wäre es: # echo "BUILDKIT_CONFIG=${CONFIG_FILE_PATH}" >> $GITHUB_ENV - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: config: ${{ env.BUILDKIT_CONFIG }} - name: Build and push image uses: docker/build-push-action@v6 with: platforms: linux/amd64,linux/arm64 push: true tags: ${{ env.REGISTRY_DOMAIN }}/${{ env.RESULT_IMAGE_NAME }}:latest