Skip to content

kstr0k build AppImage #2

kstr0k build AppImage

kstr0k build AppImage #2

Workflow file for this run

name: kstr0k-jammy AppImage
on:
# schedule:
# - cron: '0 0 * * *'
workflow_dispatch:
jobs:
check-updates-job:
runs-on: ubuntu-latest
outputs:
updated: ${{ steps.check-updates.outputs.updated }}
prev_vim_tag: ${{ steps.check-updates.outputs.prev_vim_tag }}
vim_tag: ${{ steps.check-updates.outputs.vim_tag }}
kstr0k_tag: ${{ steps.check-updates.outputs.kstr0k_tag }}
steps:
- name: Set up param
id: param
run: awk -F/ '{print"owner="$1"\nrepo="$2}' <<< "${{ github.repository }}" >> "$GITHUB_OUTPUT"
- name: Get latest tags
id: latest-tags
uses: octokit/graphql-action@v2.x
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
query: |
query($owner:String!,$repo:String!) {
appimage: repository(owner:$owner, name:$repo) {
refs(refPrefix:"refs/tags/", last:2) {
edges {
node {
name
}
}
}
}
vim: repository(owner:"vim", name:"vim") {
refs(refPrefix:"refs/tags/", last:1) {
edges {
node {
name
}
}
}
}
}
owner: ${{ steps.param.outputs.owner }}
repo: ${{ steps.param.outputs.repo }}
- name: Check updates
id: check-updates
run: |
set -ue
tag0=${{ fromJSON(steps.latest-tags.outputs.data).appimage.refs.edges[0].node.name }}
tag1=${{ fromJSON(steps.latest-tags.outputs.data).appimage.refs.edges[1].node.name }}
prev_vim_tag=$(printf '%s\n' "$tag0" "$tag1" | sort -r | grep -m1 '^v')
vim_tag=${{ fromJSON(steps.latest-tags.outputs.data).vim.refs.edges[0].node.name }}
echo 'tags:' "our ${prev_vim_tag}" "vim ${vim_tag}"
kstr0k_tag=kstr0k-jammy-${vim_tag}
echo "prev_vim_tag=${prev_vim_tag}" >> "$GITHUB_OUTPUT"
echo "vim_tag=${vim_tag}" >> "$GITHUB_OUTPUT"
echo "kstr0k_tag=${kstr0k_tag}" >> "$GITHUB_OUTPUT"
echo "updated=$([[ ${prev_vim_tag} != ${vim_tag} ]] && echo true)" >> "$GITHUB_OUTPUT"
create-appimage-job:
runs-on: ubuntu-22.04
needs: check-updates-job
if: needs.check-updates-job.outputs.updated == 'true'
env:
CC: gcc
TERM: xterm
DISPLAY: ':99'
DEBIAN_FRONTEND: noninteractive
VIM_REF: ${{ needs.check-updates-job.outputs.prev_vim_tag }}
vim_tag: ${{ needs.check-updates-job.outputs.vim_tag }}
kstr0k_tag: ${{ needs.check-updates-job.outputs.kstr0k_tag }}
steps:
- uses: actions/checkout@v4
- name: Install packages
run: |
sudo apt update && sudo apt install -y \
libfuse2 \
autoconf \
lcov \
gettext \
libcanberra-dev \
libperl-dev \
python2 \
python2-dev \
python3-dev \
python3.10-dev \
liblua5.4-dev \
lua5.4 \
ruby-dev \
tcl-dev \
cscope \
libgtk-3-dev \
desktop-file-utils \
libtool-bin \
at-spi2-core \
libsodium-dev
- name: Update Vim
run: |
git submodule update --init
git submodule update --remote
- name: Set up system
run: |
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
sudo bash vim/ci/setup-xvfb.sh
- name: Build Vim
run: bash scripts/build_vim.sh
- name: Vim Version
run: |
vim/src/vim/vim --version
vim/src/gvim/vim --version
- name: Test Vim
timeout-minutes: 20
run: |
(
cd vim/src/gvim
make test
)
# dump failed screen tests
bash scripts/dump_failed_screentests.sh
- name: Create GVim AppImage
run: bash -e scripts/appimage.sh GVim
- name: Create Vim AppImage
run: bash -e scripts/appimage.sh Vim
- name: Commit and push
id: commit
run: |
set -ue
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}"
if git commit -m "Vim: ${vim_tag}" -m "${vim_summary}" -m "${workflow_url}" vim; then
git tag -f "${vim_tag}" -m "Vim: ${vim_tag}"
fi
git tag -f "${kstr0k_tag}" -m "custom vim-appimage: ${kstr0k_tag}"
git push --follow-tags -u origin "${GITHUB_REF_NAME}"
- name: Release
uses: softprops/action-gh-release@v2
with:
body_path: release.body
name: 'custom vim-appimage: ${{ needs.check-updates-job.outputs.kstr0k_tag }}'
tag_name: ${{ needs.check-updates-job.outputs.kstr0k_tag }}
files: |
*.AppImage
*.zsync