switch from Travis to GitHub actions for continuous integration (CI) (#4428)
This commit is contained in:
parent
e44aa7a9a9
commit
c94f41b2da
88
.github/workflows/main.yml
vendored
Normal file
88
.github/workflows/main.yml
vendored
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
name: GitHub Actions
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ next, master, actions ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ next ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: build and test
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
compiler: [gcc, clang]
|
||||||
|
env:
|
||||||
|
CC: ${{ matrix.compiler }}
|
||||||
|
DOCKER_PASS: ${{ secrets.DOCKER_PASS }}
|
||||||
|
DOCKER_EMAIL: ${{ secrets.DOCKER_EMAIL }}
|
||||||
|
DOCKER_USER: ${{ secrets.DOCKER_USER }}
|
||||||
|
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||||
|
BALTO_TOKEN: ${{ secrets.BALTO_TOKEN }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- run: git fetch --prune --unshallow
|
||||||
|
- name: construct container name
|
||||||
|
run: |
|
||||||
|
echo "BASENAME=i3wm/travis-base:$(date +'%Y-%m')-$(./travis/ha.sh travis/travis-base.Dockerfile)" >> $GITHUB_ENV
|
||||||
|
echo "BASENAME_386=i3wm/travis-base-386:$(date +'%Y-%m')-$(./travis/ha.sh travis/travis-base-386.Dockerfile)" >> $GITHUB_ENV
|
||||||
|
echo "BASENAME_UBUNTU=i3wm/travis-base-ubuntu:$(date +'%Y-%m')-$(./travis/ha.sh travis/travis-base-ubuntu.Dockerfile)" >> $GITHUB_ENV
|
||||||
|
echo "BASENAME_UBUNTU_386=i3wm/travis-base-ubuntu-386:$(date +'%Y-%m')-$(./travis/ha.sh travis/travis-base-ubuntu-386.Dockerfile)" >> $GITHUB_ENV
|
||||||
|
- name: fetch or build Docker container
|
||||||
|
run: |
|
||||||
|
docker pull ${{ env.BASENAME }} || ./travis/docker-build-and-push.sh ${{ env.BASENAME }} travis/travis-base.Dockerfile
|
||||||
|
- name: fetch or build extra Docker containers
|
||||||
|
run: |
|
||||||
|
echo "::group::Ubuntu amd64"
|
||||||
|
./travis/skip-pkg.sh || docker pull ${{ env.BASENAME_UBUNTU }} || ./travis/docker-build-and-push.sh ${{ env.BASENAME_UBUNTU }} travis/travis-base-ubuntu.Dockerfile
|
||||||
|
echo "::endgroup::"
|
||||||
|
echo "::group::Debian i386"
|
||||||
|
./travis/skip-pkg.sh || docker pull ${{ env.BASENAME_386 }} || ./travis/docker-build-and-push.sh ${{ env.BASENAME_386 }} travis/travis-base-386.Dockerfile
|
||||||
|
echo "::endgroup::"
|
||||||
|
echo "::group::Ubuntu i386"
|
||||||
|
./travis/skip-pkg.sh || docker pull ${{ env.BASENAME_UBUNTU_386 }} || ./travis/docker-build-and-push.sh ${{ env.BASENAME_UBUNTU_386 }} travis/travis-base-ubuntu-386.Dockerfile
|
||||||
|
echo "::endgroup::"
|
||||||
|
- name: verify safe wrapper functions are used
|
||||||
|
run: |
|
||||||
|
docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${{ env.BASENAME }} ./travis/check-safe-wrappers.sh
|
||||||
|
- name: verify code formatting
|
||||||
|
run: |
|
||||||
|
docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${{ env.BASENAME }} ./travis/check-formatting.sh
|
||||||
|
- name: build i3
|
||||||
|
run: |
|
||||||
|
docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 -e CC ${{ env.BASENAME }} /bin/sh -c 'rm -rf build; mkdir -p build && cd build && CFLAGS="-Wformat -Wformat-security -Wextra -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Werror -fno-common" meson .. -Ddocs=true -Dmans=true -Db_sanitize=address && ninja -v'
|
||||||
|
- name: check spelling
|
||||||
|
run: |
|
||||||
|
docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${{ env.BASENAME }} ./travis/check-spelling.pl
|
||||||
|
- name: run i3 tests
|
||||||
|
run: |
|
||||||
|
docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 -e CC ${{ env.BASENAME }} ./travis/run-tests.sh
|
||||||
|
- name: build dist tarball
|
||||||
|
run: |
|
||||||
|
docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 -e CC ${{ env.BASENAME }} /bin/sh -c 'rm -rf distbuild; mkdir distbuild && cd distbuild && meson .. -Ddocs=true -Dmans=true && ninja -v dist'
|
||||||
|
- name: build Debian packages
|
||||||
|
run: |
|
||||||
|
echo "::group::Debian amd64"
|
||||||
|
./travis/skip-pkg.sh || docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${{ env.BASENAME }} ./travis/debian-build.sh deb/debian-amd64/DIST
|
||||||
|
echo "::endgroup::"
|
||||||
|
echo "::group::Ubuntu amd64"
|
||||||
|
./travis/skip-pkg.sh || docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${{ env.BASENAME_UBUNTU }} ./travis/debian-build.sh deb/ubuntu-amd64/DIST
|
||||||
|
echo "::endgroup::"
|
||||||
|
echo "::group::Debian i386"
|
||||||
|
./travis/skip-pkg.sh || docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${{ env.BASENAME_386 }} linux32 ./travis/debian-build.sh deb/debian-i386/DIST
|
||||||
|
echo "::endgroup::"
|
||||||
|
echo "::group::Ubuntu i386"
|
||||||
|
./travis/skip-pkg.sh || docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${{ env.BASENAME_UBUNTU_386 }} linux32 ./travis/debian-build.sh deb/ubuntu-i386/DIST
|
||||||
|
echo "::endgroup::"
|
||||||
|
- name: push Debian packages to balto
|
||||||
|
run: |
|
||||||
|
./travis/skip-pkg.sh || travis/push-balto.sh
|
||||||
|
- name: build docs
|
||||||
|
run: |
|
||||||
|
./travis/skip-pkg.sh || docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${{ env.BASENAME }} ./travis/docs.sh
|
||||||
|
- name: push docs to GitHub pages
|
||||||
|
run: |
|
||||||
|
./travis/skip-pkg.sh || travis/deploy-github-pages.sh
|
57
.travis.yml
57
.travis.yml
@ -1,57 +0,0 @@
|
|||||||
dist: trusty
|
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
language: c
|
|
||||||
compiler:
|
|
||||||
- gcc
|
|
||||||
- clang
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
# For https support in HTTP::Tiny.
|
|
||||||
- libio-socket-ssl-perl
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- BASENAME="i3wm/travis-base:$(date +'%Y-%m')-$(./travis/ha.sh travis/travis-base.Dockerfile)"
|
|
||||||
- BASENAME_386="i3wm/travis-base-386:$(date +'%Y-%m')-$(./travis/ha.sh travis/travis-base-386.Dockerfile)"
|
|
||||||
- BASENAME_UBUNTU="i3wm/travis-base-ubuntu:$(date +'%Y-%m')-$(./travis/ha.sh travis/travis-base-ubuntu.Dockerfile)"
|
|
||||||
- BASENAME_UBUNTU_386="i3wm/travis-base-ubuntu-386:$(date +'%Y-%m')-$(./travis/ha.sh travis/travis-base-ubuntu-386.Dockerfile)"
|
|
||||||
- secure: "B5IICA8MPx/FKaB50rTPqL8P1NU+Q0yuWl+lElL4+a9xSyLikfm3NzUPHoVwx8lNw2AVK6br7p0OmF7vMFjqAgrgc1cajTtEae5uFRKNUrWLpXM046YgNEYLLIHsQOjInxE+S4O6EFVzsUqsu8aeo2Xhq4sm4iUocG7e5isYgYo=" # DOCKER_PASS
|
|
||||||
- secure: "EIvrq8PG7lRjidppG0RCv4F0X4GP3DT9F5+ixVuGPfhK/hZT3jYC2AVY9G+NnUcXVwQEpW92rlqpftQ/qZ13FoyWokC8ZyoyD06fr5FPCfoFF3OczZwAJzZYkObI/hE9+/hXcylx/Os6N4INd2My1ntGk3JPsWL9riopod5EjSg=" # DOCKER_EMAIL
|
|
||||||
- secure: "hvhBunS4xXTgnIOsk/BPT7I7FrJhvVwCSt5PfxxvMqNaztOJI9BuK7ZrZ5Cy38KyHwlh3VHAH5AaCygJcPauoSQCV3bpnlbaWn3ruq2F0Q697Q5uNf73liXzyUqb9/Zvfvge4y4WWOhP5tVz1C6ZBe/NfhU7pqKLMA+6ads+99c=" # DOCKER_USER
|
|
||||||
- secure: "uJuuefmnJUuEH15ZD8xQilibx7EeBvMHBLoIZ8bgGHeleEImBD0XbD1ypvhYJKpviOmw5BkZmc9bVO8DGDEHYbSlIa2xDlF6vGrwgCEaxcMIhOAhv+dW9C/maJVieLOEPM01/fK2qdKESZaLvlopkWmxZwDyMObI9L7AMW9zQD8=" # BINTRAY_USER
|
|
||||||
- secure: "L3aPSNLySPXtWCW+xf8h/AAdquwNgxyTQpYOwexJmTPav82Qx8uQlp1yJkUmt+a+FLZDFfQeMivaHq0311RvuQVmkAJx49DjaddrwqOJut2UPsoVDn1WeuAcSHIXOq/0H+zgFMr/PGY0HXIsw1mTMhgheGJNqg09BvYWROCEAcA=" # BINTRAY_KEY
|
|
||||||
- secure: "sBMVn4C/WRWgoAytEFGx4CC5O55Q63h02AcuBnb1jXcBm0RenoBpzUPtxSseJwDPUA1o/UkuEDDjm3PosT5NF+dvED01VDFMsPVE11K0u6+avYy3jYXqyUEDW3G2o6Wo/2aqNjmd++8jskBdS9+Cx9gaFbgxfzSp0Yfu3oJm/4c=" # GH_TOKEN
|
|
||||||
- secure: "HPMBtknjHM9CjaEoTVLiNtjg7JxmEZ+6AzqjT1LsA0e52dIlWzcRLVLL4uAR8SqMfR1iSj4lW74DzFXEnJCKa+04hiTp9Z/6zw/tX/mFOkkpz8H2gVttXh68NRHLJSJrRX/5fGCcl7AHypADBaoybjEmwjFxYRZ1Nwf81SwQVik=" # BALTO_TOKEN
|
|
||||||
install:
|
|
||||||
- if [ -a .git/shallow ]; then git fetch --unshallow; fi
|
|
||||||
- docker pull ${BASENAME} || ./travis/docker-build-and-push.sh ${BASENAME} travis/travis-base.Dockerfile
|
|
||||||
- ./travis/skip-pkg.sh || docker pull ${BASENAME_UBUNTU} || ./travis/docker-build-and-push.sh ${BASENAME_UBUNTU} travis/travis-base-ubuntu.Dockerfile
|
|
||||||
- ./travis/skip-pkg.sh || docker pull ${BASENAME_386} || ./travis/docker-build-and-push.sh ${BASENAME_386} travis/travis-base-386.Dockerfile
|
|
||||||
- ./travis/skip-pkg.sh || docker pull ${BASENAME_UBUNTU_386} || ./travis/docker-build-and-push.sh ${BASENAME_UBUNTU_386} travis/travis-base-ubuntu-386.Dockerfile
|
|
||||||
script:
|
|
||||||
- docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${BASENAME} ./travis/check-safe-wrappers.sh
|
|
||||||
- docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${BASENAME} ./travis/check-formatting.sh
|
|
||||||
- docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 -e CC ${BASENAME} /bin/sh -c 'rm -rf build; mkdir -p build && cd build && CFLAGS="-Wformat -Wformat-security -Wextra -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Werror -fno-common" meson .. -Ddocs=true -Dmans=true -Db_sanitize=address && ninja -v'
|
|
||||||
- docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${BASENAME} ./travis/check-spelling.pl
|
|
||||||
- docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 -e CC ${BASENAME} ./travis/run-tests.sh
|
|
||||||
- docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 -e CC ${BASENAME} /bin/sh -c 'rm -rf distbuild; mkdir distbuild && cd distbuild && meson .. -Ddocs=true -Dmans=true && ninja -v dist'
|
|
||||||
- ./travis/skip-pkg.sh || docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${BASENAME} ./travis/debian-build.sh deb/debian-amd64/DIST
|
|
||||||
- ./travis/skip-pkg.sh || docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${BASENAME_UBUNTU} ./travis/debian-build.sh deb/ubuntu-amd64/DIST
|
|
||||||
- ./travis/skip-pkg.sh || docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${BASENAME_386} linux32 ./travis/debian-build.sh deb/debian-i386/DIST
|
|
||||||
- ./travis/skip-pkg.sh || docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${BASENAME_UBUNTU_386} linux32 ./travis/debian-build.sh deb/ubuntu-i386/DIST
|
|
||||||
- ./travis/skip-pkg.sh || docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${BASENAME} ./travis/docs.sh
|
|
||||||
- ./travis/skip-pkg.sh || travis/push-balto.sh
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
- provider: script
|
|
||||||
script: travis/deploy-github-pages.sh
|
|
||||||
skip_cleanup: true
|
|
||||||
on:
|
|
||||||
branch: next
|
|
||||||
condition: $CC = gcc
|
|
||||||
|
|
||||||
# TODO: implement cleanup if we stick with balto
|
|
||||||
#after_deploy:
|
|
||||||
# - travis/cleanup-bintray.pl i3-autobuild
|
|
||||||
# - travis/cleanup-bintray.pl i3-autobuild-ubuntu
|
|
@ -2,11 +2,11 @@
|
|||||||
# Returns true if Debian/Ubuntu packages should be skipped because this CI run
|
# Returns true if Debian/Ubuntu packages should be skipped because this CI run
|
||||||
# was triggered by a pull request.
|
# was triggered by a pull request.
|
||||||
|
|
||||||
# Verify BINTRAY_USER is present (only set on github.com/i3/i3),
|
# Verify BALTO_TOKEN is present (only set on github.com/i3/i3),
|
||||||
# otherwise the CI run was triggered by a pull request.
|
# otherwise the CI run was triggered by a pull request.
|
||||||
# Verify CC=gcc so that we only build packages once for each commit,
|
# Verify CC=gcc so that we only build packages once for each commit,
|
||||||
# not twice (with gcc and clang).
|
# not twice (with gcc and clang).
|
||||||
if [ ! -z "$BINTRAY_USER" ] && [ "$CC" = "gcc" ]
|
if [ ! -z "$BALTO_TOKEN" ] && [ "$CC" = "gcc" ]
|
||||||
then
|
then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
Loading…
x
Reference in New Issue
Block a user