name: Build and Release Lindbergh on: push: branches: - master pull_request: branches: - master permissions: contents: write jobs: build-and-release: runs-on: ubuntu-latest steps: # Checkout the repository - name: Checkout repository uses: actions/checkout@v3 # Set up Docker Buildx - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 # Build the Docker image - name: Build Docker image run: | docker build --target lindbergh-build -t lindbergh-loader . # Extract build artifacts - name: Extract build artifacts run: | docker create --name lindbergh-builder lindbergh-loader docker cp lindbergh-builder:/output ./build docker rm lindbergh-builder # Compress the build directory - name: Compress build directory run: tar -czvf build.tar.gz -C ./build . # Archive the build directory as an artifact for debugging - name: Archive build directory uses: actions/upload-artifact@v3 with: name: build-output path: ./build # Create a GitHub release and capture the upload URL - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{ github.run_number }} release_name: "Build v${{ github.run_number }}" draft: false prerelease: false # Upload the compressed build artifact to the release - name: Upload Release Asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./build.tar.gz asset_name: build.tar.gz asset_content_type: application/gzip