File: ci.yml

package info (click to toggle)
aptly 1.5.0%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 48,840 kB
  • sloc: python: 7,966; sh: 798; makefile: 81
file content (147 lines) | stat: -rw-r--r-- 3,923 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
141
142
143
144
145
146
147
# Based on https://github.com/aptly-dev/aptly/blob/master/.travis.yml

name: CI

on:
  pull_request:
  push:
    tags:
      - 'v*'
    branches:
      - 'master'

defaults:
  run:
    # see: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#using-a-specific-shell
    shell: bash --noprofile --norc -eo pipefail -x {0}

env:
  DEBIAN_FRONTEND: noninteractive

jobs:
  build:
    name: test
    runs-on: ubuntu-20.04
    continue-on-error: ${{ matrix.allow_failure }}
    timeout-minutes: 30
    strategy:
      fail-fast: true
      matrix:
        go: [1.16, 1.17, 1.18]
        run_long_tests: [no]
        allow_failure: [false]
        include:
          # Disable this for now as it's not clear how to select the latest master branch
          # version of go using actions/setup-go@v2.
          # - go: master
          #   run_long_tests: no
          #   allow_failure: true
          - go: 1.17
            run_long_tests: yes
            allow_failure: false

    env:
      NO_FTP_ACCESS: yes
      BOTO_CONFIG: /dev/null
      GO111MODULE: "on"
      GOPROXY: "https://proxy.golang.org"

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Setup Go
        uses: actions/setup-go@v2
        with:
          go-version: ${{ matrix.go }}

      - name: golangci-lint
        uses: golangci/golangci-lint-action@v2
        with:
          version: v1.45.0

      - name: Setup Python
        uses: actions/setup-python@v2
        with:
          python-version: 3.9

      - name: Install O/S packages
        run: |
          sudo apt-get update
          sudo apt-get install -y graphviz gnupg1 gnupg2 gpgv1 gpgv2 git gcc make

      - name: Install Python packages
        run: |
          pip install six packaging appdirs virtualenv
          pip install -U pip setuptools
          pip install -r system/requirements.txt

      - name: Install Azurite
        id: azuright
        uses: potatoqualitee/azuright@v1.1
        with:
          directory: ${{ runner.temp }}

      - name: Get aptly version
        run: |
           make version

      - name: Make
        env:
          RUN_LONG_TESTS: ${{ matrix.run_long_tests }}
          AZURE_STORAGE_ENDPOINT: "127.0.0.1:10000"
          AZURE_STORAGE_ACCOUNT: "devstoreaccount1"
          AZURE_STORAGE_ACCESS_KEY: "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=="
        run: |
          make

      - name: Upload code coverage
        if: matrix.run_long_tests
        uses: codecov/codecov-action@v2
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          files: coverage.txt

  release:
    name: release
    needs: build
    runs-on: ubuntu-20.04
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
        with:
          # fetch the whole repot for `git describe` to
          # work and get the nightly verion
          fetch-depth: 0

      - name: Setup Go
        uses: actions/setup-go@v2

      - name: Make Release
        env:
          GOBIN: /usr/local/bin
        run: |
          make release

      - name: Publish nightly release to aptly
        if: github.ref == 'refs/heads/master'
        env:
          APTLY_USER: ${{ secrets.APTLY_USER }}
          APTLY_PASSWORD: ${{ secrets.APTLY_PASSWORD }}
        run: |
          ./upload-artifacts.sh nightly

      - name: Publish release to aptly
        if: startsWith(github.event.ref, 'refs/tags')
        env:
          APTLY_USER: ${{ secrets.APTLY_USER }}
          APTLY_PASSWORD: ${{ secrets.APTLY_PASSWORD }}
        run: |
          ./upload-artifacts.sh release

      - name: Upload artifacts to GitHub Release
        if: startsWith(github.event.ref, 'refs/tags')
        uses: softprops/action-gh-release@v1
        with:
          body: Release ${{ github.ref }} generated by the CI.
          files: build/*