name: Release on: push: tags: - 'v*' jobs: build: name: Build and upload artifacts runs-on: ubuntu-latest container: archlinux:latest steps: - name: Install dependencies run: pacman --noconfirm -Syu && pacman --needed --noconfirm -S base-devel git autoconf automake nasm curl mtools llvm clang lld mingw-w64-gcc openssh - name: Checkout code uses: actions/checkout@v3 with: fetch-depth: '0' - name: Git config run: git config --global --add safe.directory "$GITHUB_WORKSPACE" - name: Get tag name run: echo "TAG_NAME=$(git describe --exact-match --tags $(git log -n1 --pretty='%h'))" >> $GITHUB_ENV - name: Get branch name run: echo "BRANCH_NAME=$(echo "$TAG_NAME" | grep -o 'v[0-9]\+\.')0-branch" >> $GITHUB_ENV - name: Regenerate run: ./bootstrap - name: Create build dir run: mkdir -p build - name: Configure run: cd build && ../configure --enable-all TOOLCHAIN=llvm - name: Build the bootloader run: make -C build - name: Clean limine-deploy run: rm build/bin/limine-deploy - name: Build limine-deploy-win32 run: make -C build CC="i686-w64-mingw32-gcc" CFLAGS="-O2 -pipe" limine-deploy - name: Strip limine-deploy-win32 run: i686-w64-mingw32-strip build/bin/limine-deploy.exe - name: Copy LICENSE to bin run: cp LICENSE.md build/bin/ - name: Copy install-sh to bin run: cp build-aux/install-sh build/bin/ - name: Copy limine.h to bin run: cp limine.h build/bin/ - name: Remove limine-hdd.bin run: rm build/bin/limine-hdd.bin - name: Push binaries to binary branch run: | git config user.name 'mintsuki' git config user.email 'mintsuki@users.noreply.github.com' git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/limine-bootloader/limine.git git fetch --all git checkout $BRANCH_NAME-binary || git checkout --orphan $BRANCH_NAME-binary rm -rf $(ls -a | grep -v '^\.git$' | grep -v '^\.\.$' | grep -v '^\.$' | grep -v '^build$') cp -r build/bin/. ./ rm -rf build git add -f . git commit -m "Binary release $TAG_NAME" git push origin $BRANCH_NAME-binary git tag $TAG_NAME-binary git push origin $BRANCH_NAME-binary --tags - name: Cleanup source tree run: git checkout $TAG_NAME && rm -rf * && git checkout . - name: Package release tarball run: ./bootstrap && ./configure --enable-all && make dist - name: Create release notes run: echo "Binary release can be found at https://github.com/limine-bootloader/limine/tree/$TAG_NAME-binary" > rel_notes.txt - name: Release uses: softprops/action-gh-release@v1 with: body_path: rel_notes.txt files: | limine-*.tar.* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Retrieve SSH key run: 'echo "$ssh_key" > ssh_key && chmod 600 ssh_key' env: ssh_key: ${{ secrets.SSH_KEY }} - name: Upload tarballs to website run: 'scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ssh_key limine-*.tar.* mint@limine-bootloader.org:/var/www/limine/html/files/limine/'