File: docker.yml

package info (click to toggle)
i2pd 2.58.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,612 kB
  • sloc: cpp: 59,663; makefile: 224; sh: 138
file content (140 lines) | stat: -rw-r--r-- 4,341 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
name: Build containers

on:
  push:
    branches:
    - openssl
    - docker
    paths:
    - .github/workflows/docker.yml
    - contrib/docker/**
    - contrib/certificates/**
    - daemon/**
    - i18n/**
    - libi2pd/**
    - libi2pd_client/**
    - Makefile
    - Makefile.linux
    tags:
    - '*'

jobs:
  build:
    name: Building container for ${{ matrix.platform }}
    runs-on: ubuntu-latest
    permissions:
      packages: write
      contents: read

    strategy:
      matrix:
        include: [
          { platform: 'linux/amd64', archname: 'amd64' },
          { platform: 'linux/386', archname: 'i386' },
          { platform: 'linux/arm64', archname: 'arm64' },
          { platform: 'linux/arm/v7', archname: 'armv7' },
        ]

    steps:
    - name: Checkout
      uses: actions/checkout@v4

    - name: Set up QEMU
      uses: docker/setup-qemu-action@v3

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v3

    - name: Login to DockerHub
      uses: docker/login-action@v3
      with:
        username: ${{ secrets.DOCKERHUB_USERNAME }}
        password: ${{ secrets.DOCKERHUB_TOKEN }}

    - name: Login to GitHub Container registry
      uses: docker/login-action@v3
      with:
        registry: ghcr.io
        username: ${{ github.actor }}
        password: ${{ secrets.GITHUB_TOKEN }}

    - name: Build container for ${{ matrix.archname }}
      uses: docker/build-push-action@v5
      with:
        context: ./contrib/docker
        file: ./contrib/docker/Dockerfile
        platforms: ${{ matrix.platform }}
        push: true
        tags: |
          purplei2p/i2pd:latest-${{ matrix.archname }}
          ghcr.io/purplei2p/i2pd:latest-${{ matrix.archname }}
        provenance: false

  push:
    name: Pushing merged manifest
    runs-on: ubuntu-latest

    permissions:
      packages: write
      contents: read

    needs: build

    steps:
    - name: Checkout
      uses: actions/checkout@v4

    - name: Set up QEMU
      uses: docker/setup-qemu-action@v3

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v3

    - name: Login to DockerHub
      uses: docker/login-action@v3
      with:
        username: ${{ secrets.DOCKERHUB_USERNAME }}
        password: ${{ secrets.DOCKERHUB_TOKEN }}

    - name: Login to GitHub Container registry
      uses: docker/login-action@v3
      with:
        registry: ghcr.io
        username: ${{ github.actor }}
        password: ${{ secrets.GITHUB_TOKEN }}

    - name: Create and push latest manifest image to Docker Hub
      if: ${{ !startsWith(github.ref, 'refs/tags/') }}
      uses: Noelware/docker-manifest-action@master
      with:
        inputs: purplei2p/i2pd:latest
        tags: purplei2p/i2pd:latest-amd64,purplei2p/i2pd:latest-i386,purplei2p/i2pd:latest-arm64,purplei2p/i2pd:latest-armv7
        push: true

    - name: Create and push latest manifest image to GHCR
      if: ${{ !startsWith(github.ref, 'refs/tags/') }}
      uses: Noelware/docker-manifest-action@master
      with:
        inputs: ghcr.io/purplei2p/i2pd:latest
        tags: ghcr.io/purplei2p/i2pd:latest-amd64,ghcr.io/purplei2p/i2pd:latest-i386,ghcr.io/purplei2p/i2pd:latest-arm64,ghcr.io/purplei2p/i2pd:latest-armv7
        push: true

    - name: Store release version to env
      if: ${{ startsWith(github.ref, 'refs/tags/') }}
      run: echo "RELEASE_VERSION=${GITHUB_REF:10}" >> $GITHUB_ENV

    - name: Create and push release manifest to Docker Hub
      if: ${{ startsWith(github.ref, 'refs/tags/') }}
      uses: Noelware/docker-manifest-action@master
      with:
        inputs: purplei2p/i2pd:latest,purplei2p/i2pd:latest-release,purplei2p/i2pd:release-${{ env.RELEASE_VERSION }}
        tags: purplei2p/i2pd:latest-amd64,purplei2p/i2pd:latest-i386,purplei2p/i2pd:latest-arm64,purplei2p/i2pd:latest-armv7
        push: true

    - name: Create and push release manifest to GHCR
      if: ${{ startsWith(github.ref, 'refs/tags/') }}
      uses: Noelware/docker-manifest-action@master
      with:
        inputs: ghcr.io/purplei2p/i2pd:latest,ghcr.io/purplei2p/i2pd:latest-release,ghcr.io/purplei2p/i2pd:release-${{ env.RELEASE_VERSION }}
        tags: ghcr.io/purplei2p/i2pd:latest-amd64,ghcr.io/purplei2p/i2pd:latest-i386,ghcr.io/purplei2p/i2pd:latest-arm64,ghcr.io/purplei2p/i2pd:latest-armv7
        push: true