From 675df49320a9c149e755edd0fbfdc2f4989b3ed0 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Sat, 28 Nov 2020 05:32:38 -0500 Subject: [PATCH] split up workflows more evenly --- .github/workflows/docker.yml | 68 ++++++++++++++++++++++++++++ .github/workflows/lint.yml | 31 +++++++++++++ .github/workflows/test.yml | 86 +----------------------------------- 3 files changed, 101 insertions(+), 84 deletions(-) create mode 100644 .github/workflows/lint.yml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index a609e55f..8ae12abf 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -4,7 +4,64 @@ on: workflow_dispatch: push: +env: + DOCKER_IMAGE: archivebox-ci + + jobs: + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + with: + recursive: true + fetch-depth: 1 + + # TODO: as of 2020-11 this helper layer broke, upgrade and re-enable this once it's usable again + # - uses: satackey/action-docker-layer-caching@v0.0.8 + + - name: Build image + run: | + docker build . -t "$DOCKER_IMAGE" + + - name: Init data dir + run: | + mkdir data + docker run -v "$PWD"/data:/data "$DOCKER_IMAGE" init + + - name: Run test server + run: | + sudo bash -c 'echo "127.0.0.1 www.test-nginx-1.local www.test-nginx-2.local" >> /etc/hosts' + docker run --name www-nginx -p 80:80 -d nginx + + - name: Add link + run: | + docker run -v "$PWD"/data:/data --network host "$DOCKER_IMAGE" add http://www.test-nginx-1.local + + - name: Add stdin link + run: | + echo "http://www.test-nginx-2.local" | docker run -i --network host -v "$PWD"/data:/data "$DOCKER_IMAGE" add + + - name: List links + run: | + docker run -v "$PWD"/data:/data "$DOCKER_IMAGE" list | grep -q "www.test-nginx-1.local" || { echo "The site 1 isn't in the list"; exit 1; } + docker run -v "$PWD"/data:/data "$DOCKER_IMAGE" list | grep -q "www.test-nginx-2.local" || { echo "The site 2 isn't in the list"; exit 1; } + + - name: Start docker-compose stack + run: | + docker-compose run archivebox init + docker-compose up -d + sleep 5 + curl --silent --location 'http://127.0.0.1:8000' | grep 'ArchiveBox' + curl --silent --location 'http://127.0.0.1:8000/static/admin/js/jquery.init.js' | grep 'window.django' + + - name: Check added urls show up in index + run: | + docker-compose run archivebox add 'http://example.com/#test_docker' --index-only + curl --silent --location 'http://127.0.0.1:8000' | grep 'http://example.com/#test_docker' + docker-compose down || true + buildx: runs-on: ubuntu-latest steps: @@ -13,20 +70,29 @@ jobs: with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} + - name: Checkout uses: actions/checkout@v2 + with: + recursive: true + fetch-depth: 1 + - name: Set up QEMU uses: docker/setup-qemu-action@v1 + - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v1 with: version: latest install: true + - name: Builder instance name run: echo ${{ steps.buildx.outputs.name }} + - name: Available platforms run: echo ${{ steps.buildx.outputs.platforms }} + - name: Cache Docker layers uses: actions/cache@v2 with: @@ -34,6 +100,7 @@ jobs: key: ${{ runner.os }}-buildx-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx- + - name: Build and push id: docker_build uses: docker/build-push-action@v2 @@ -50,5 +117,6 @@ jobs: cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache platforms: linux/amd64,linux/arm64,linux/arm/v7 + - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000..660b62ec --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,31 @@ +name: 'Lint' +on: [push] + +env: + MAX_LINE_LENGTH: 110 + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + recursive: true + fetch-depth: 1 + + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: 3.8 + architecture: x64 + + - name: Install flake8 + run: | + pip install flake8 + + - name: Lint with flake8 + run: | + # one pass for show-stopper syntax errors or undefined names + flake8 archivebox --count --show-source --statistics + # one pass for small stylistic things + flake8 archivebox --count --max-line-length="$MAX_LINE_LENGTH" --statistics diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 90b07698..5efddd73 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,37 +1,8 @@ -name: 'Lint, Test, and Build' +name: 'Test' on: [push] -env: - MAX_LINE_LENGTH: 110 - DOCKER_IMAGE: archivebox-ci - jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - recursive: true - fetch-depth: 1 - - - name: Set up Python - uses: actions/setup-python@v1 - with: - python-version: 3.8 - architecture: x64 - - - name: Install flake8 - run: | - pip install flake8 - - - name: Lint with flake8 - run: | - # one pass for show-stopper syntax errors or undefined names - flake8 archivebox --count --show-source --statistics - # one pass for small stylistic things - flake8 archivebox --count --max-line-length="$MAX_LINE_LENGTH" --statistics - - test: + pytest: runs-on: ${{ matrix.os }} strategy: @@ -109,56 +80,3 @@ jobs: - name: Test built package with pytest run: | python -m pytest -s - - docker-test: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - with: - recursive: true - fetch-depth: 1 - - # TODO: as of 2020-11 this helper layer broke, upgrade and re-enable this once it's usable again - # - uses: satackey/action-docker-layer-caching@v0.0.8 - - - name: Build image - run: | - docker build . -t "$DOCKER_IMAGE" - - - name: Init data dir - run: | - mkdir data - docker run -v "$PWD"/data:/data "$DOCKER_IMAGE" init - - - name: Run test server - run: | - sudo bash -c 'echo "127.0.0.1 www.test-nginx-1.local www.test-nginx-2.local" >> /etc/hosts' - docker run --name www-nginx -p 80:80 -d nginx - - - name: Add link - run: | - docker run -v "$PWD"/data:/data --network host "$DOCKER_IMAGE" add http://www.test-nginx-1.local - - - name: Add stdin link - run: | - echo "http://www.test-nginx-2.local" | docker run -i --network host -v "$PWD"/data:/data "$DOCKER_IMAGE" add - - - name: List links - run: | - docker run -v "$PWD"/data:/data "$DOCKER_IMAGE" list | grep -q "www.test-nginx-1.local" || { echo "The site 1 isn't in the list"; exit 1; } - docker run -v "$PWD"/data:/data "$DOCKER_IMAGE" list | grep -q "www.test-nginx-2.local" || { echo "The site 2 isn't in the list"; exit 1; } - - - name: Start docker-compose stack - run: | - docker-compose run archivebox init - docker-compose up -d - sleep 5 - curl --silent --location 'http://127.0.0.1:8000' | grep 'ArchiveBox' - curl --silent --location 'http://127.0.0.1:8000/static/admin/js/jquery.init.js' | grep 'window.django' - - - name: Check added urls show up in index - run: | - docker-compose run archivebox add 'http://example.com/#test_docker' --index-only - curl --silent --location 'http://127.0.0.1:8000' | grep 'http://example.com/#test_docker' - docker-compose down || true