Skip to content

kstr0k build AppImage #47

kstr0k build AppImage

kstr0k build AppImage #47

Workflow file for this run

name: kstr0k build AppImage
on:
# schedule:
# - cron: '0 0 * * *'
workflow_dispatch:
inputs:
vim_tag:
description: 'Vim tag to build (empty=latest)'
default: ''
env:
MYOWNER: ${{ github.repository_owner }}
MYREPO: ${{ github.event.repository.name }}
jobs:
get-tags-job:
runs-on: ubuntu-latest
outputs:
updated: ${{ steps.output-tags.outputs.updated }}
prev_vim_tag: ${{ steps.output-tags.outputs.prev_vim_tag }}
vim_tag: ${{ steps.output-tags.outputs.vim_tag }}
release_tag: ${{ steps.output-tags.outputs.release_tag }}
steps:
- name: Get latest tags
id: query-tags
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GQL_Q1: |
query($myowner: String!, $myrepo: String!) {
appimage: repository(owner: $myowner, name: $myrepo) {
releases(first: 1, orderBy: { field: CREATED_AT, direction: DESC }) {
nodes { name }
}
}
vim: repository(owner: "vim", name: "vim") {
refs(refPrefix: "refs/tags/", last: 1) {
edges { node { name } }
}
}
}
jq_extract: >-
"vim_tag=" + .data.vim.refs.edges[0].node.name,
"prev_release_name<<_EOVAL_\n" + .data.appimage.releases.nodes[0].name + "\n_EOVAL_"
run: |
gh api graphql -F myowner="$MYOWNER" -F myrepo="$MYREPO" \
-f query="$GQL_Q1" --jq "$jq_extract" | tee -a "$GITHUB_ENV"
- name: Output tags
id: output-tags
run: |
vim_forced_tag=${{ github.event.inputs.vim_tag }}
if [ -n "${vim_forced_tag}" ]; then
vim_tag=$vim_forced_tag
fi
prev_vim_tag=$(printf '%s' "$prev_release_name" | sed -ne 's@.* \(v[1-9][0-9.]\+\).*@\1@p;q')
tee -a "$GITHUB_OUTPUT" <<EOGHO
prev_vim_tag=${prev_vim_tag}
vim_tag=${vim_tag}
release_tag=${vim_tag}-kstr0k-appimage
updated=$([ "${prev_vim_tag}" != "${vim_tag}" ] && echo true)
EOGHO
create-appimage-job:
runs-on: ubuntu-22.04
needs: get-tags-job
if: needs.get-tags-job.outputs.updated == 'true'
env:
CC: gcc
vim_tag: '${{ needs.get-tags-job.outputs.vim_tag }}'
prev_vim_tag: '${{ needs.get-tags-job.outputs.prev_vim_tag }}'
release_tag: '${{ needs.get-tags-job.outputs.release_tag }}'
steps:
- uses: actions/checkout@v4
- name: Check release tag available
run: |
! git rev-parse "${release_tag}^{tag}"
- name: Install packages
run: |
sudo scripts/install-distro-build-deps.sh
- name: Update Vim
run: |
scripts/update-submodules.sh
git -C vim log --pretty=oneline --abbrev-commit "${prev_vim_tag}^..@"
- name: Set up system
run: |
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
sudo bash vim/ci/setup-xvfb.sh
- name: Download tools
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mkdir -p tools; cd tools
scripts/download-tools.sh
- name: Build Vim
run: |
scripts/build_vim.sh
- name: Vim Version
run: |
vim/src/vim/vim --version
vim/src/gvim/vim --version
- name: Test Vim
env:
TERM: xterm
DISPLAY: ':99'
timeout-minutes: 20
run: |
make -C vim/src/gvim test
- name: Dump failed screen tests
run: |
scripts/dump_failed_screentests.sh
- name: Create GVim and Vim AppImage
run: |
scripts/appimage.sh GVim Vim
- name: Commit and push
id: commit
run: |
vim_summary=$(git submodule summary vim)
workflow_url=${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}
git config --local user.name 'github-actions[bot]'
git config --local user.email 'github-actions[bot]@users.noreply.github.com'
git remote set-url origin "https://github-actions:${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}"
git commit -m "Vim: ${vim_tag}" -m "${vim_summary}" -m "${workflow_url}" vim
git tag -f "${release_tag}" # release tag
git push --atomic -u origin "${GITHUB_REF_NAME}" "${release_tag}"
- name: Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
release_tag: ${{ needs.get-tags-job.outputs.release_tag }}
run: |
gh release create "$release_tag" \
*-appimage/*.AppImage *-appimage/*.zsync \
-F release.body -t "vim-appimage: $release_tag"
#printf '%s' 'Latest release: '
#gh api 'repos/{owner}/{repo}/releases/latest' --jq '.html_url' || :