name: "docker" on: push: branches: [ "master", "next" ] tags: [ "v*", "test-tag-*" ] pull_request: # The branches below must be a subset of the branches above branches: [ "master", "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.20" - 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, coverage] 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 && env.GITHUB_REF_NAME == 'master' 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 && env.GITHUB_REF_NAME == 'master' run: | docker tag chasquid registry.gitlab.com/albertito/chasquid:latest docker push registry.gitlab.com/albertito/chasquid:latest