Today, we only require that Docker integration tests use a Go version >= 1.20. In practice, it almost always picks the latest version. For consistency, this patch requests it to run the latest Go version.
104 lines
3.4 KiB
YAML
104 lines
3.4 KiB
YAML
name: "docker"
|
|
|
|
on:
|
|
push:
|
|
branches: [ "main", "next" ]
|
|
tags: [ "v*", "test-tag-*" ]
|
|
pull_request:
|
|
# The branches below must be a subset of the branches above
|
|
branches: [ "main", "next" ]
|
|
schedule:
|
|
- cron: '29 21 * * 6'
|
|
|
|
env:
|
|
HAS_DOCKER: ${{ secrets.DOCKER_REGISTRY_USER != '' }}
|
|
HAS_GITLAB: ${{ secrets.GITLAB_REGISTRY_USER != '' }}
|
|
|
|
jobs:
|
|
integration:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 5
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Docker info (for debugging)
|
|
run: docker info
|
|
- name: Build test image
|
|
run: docker build -t chasquid-test -f test/Dockerfile .
|
|
- name: Run tests
|
|
run: docker run --name test1 chasquid-test make test
|
|
|
|
coverage:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 5
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: "1.x"
|
|
check-latest: true
|
|
- name: Install goveralls
|
|
run: go install github.com/mattn/goveralls@latest
|
|
- name: Docker info (for debugging)
|
|
run: docker info
|
|
- name: Build test image
|
|
run: docker build -t chasquid-test -f test/Dockerfile .
|
|
- name: Run coverage tests
|
|
run: docker run --name test1 chasquid-test test/cover.sh
|
|
- name: Extract coverage results
|
|
run: >
|
|
docker cp
|
|
test1:/go/src/blitiri.com.ar/go/chasquid/.coverage/final.out
|
|
.
|
|
- name: Upload coverage results
|
|
run: >
|
|
goveralls
|
|
-coverprofile=final.out
|
|
-repotoken=${{ secrets.COVERALLS_TOKEN }}
|
|
|
|
public-image:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: [integration]
|
|
if: github.event_name == 'push'
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build
|
|
run: docker build -t chasquid -f docker/Dockerfile .
|
|
|
|
# Push it to Dockerhub.
|
|
- name: Dockerhub login
|
|
if: env.HAS_DOCKER
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_REGISTRY_USER }}
|
|
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
|
|
- name: Dockerhub push
|
|
if: env.HAS_DOCKER
|
|
run: |
|
|
docker tag chasquid index.docker.io/${{ secrets.DOCKER_REGISTRY_USER }}/chasquid:$GITHUB_REF_NAME
|
|
docker push index.docker.io/${{ secrets.DOCKER_REGISTRY_USER }}/chasquid:$GITHUB_REF_NAME
|
|
- name: Dockerhub tag latest
|
|
if: env.HAS_DOCKER && github.ref_name == 'main'
|
|
run: |
|
|
docker tag chasquid index.docker.io/${{ secrets.DOCKER_REGISTRY_USER }}/chasquid:latest
|
|
docker push index.docker.io/${{ secrets.DOCKER_REGISTRY_USER }}/chasquid:latest
|
|
|
|
# Push it to Gitlab.
|
|
- name: Gitlab login
|
|
if: env.HAS_GITLAB
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: registry.gitlab.com
|
|
username: ${{ secrets.GITLAB_REGISTRY_USER }}
|
|
password: ${{ secrets.GITLAB_REGISTRY_TOKEN }}
|
|
- name: Gitlab push
|
|
if: env.HAS_GITLAB
|
|
run: |
|
|
docker tag chasquid registry.gitlab.com/albertito/chasquid:$GITHUB_REF_NAME
|
|
docker push registry.gitlab.com/albertito/chasquid:$GITHUB_REF_NAME
|
|
- name: Gitlab tag latest
|
|
if: env.HAS_GITLAB && github.ref_name == 'main'
|
|
run: |
|
|
docker tag chasquid registry.gitlab.com/albertito/chasquid:latest
|
|
docker push registry.gitlab.com/albertito/chasquid:latest
|