-
Notifications
You must be signed in to change notification settings - Fork 0
111 lines (96 loc) · 3.14 KB
/
build.yaml
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
name: Build & Push
permissions: write-all
on:
push:
branches:
- main
- feat/*
- feature/*
- fix/*
- bugfix/*
pull_request:
branches:
- main
workflow_dispatch:
env:
IMAGE_NAME: 'pygitver'
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
jobs:
unittests:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Dockerfile lint
id: validate-dockerfile
shell: bash
run: |
docker run --rm -e HADOLINT_IGNORE=DL3018,DL3013 -i hadolint/hadolint < Dockerfile
- name: Unit Tests
shell: bash
run: |
set -x
pip install -U tox
pip install tox
tox
build:
runs-on: ubuntu-latest
needs: unittests
#if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Docker Build
shell: bash
run: |
set -x
docker build -t "${{ env.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}" .
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Detect package version
shell: bash
run: |
set -x
PACKAGE_VERSION="$(git tag --contains)"
if [[ "${PACKAGE_VERSION}" == "" ]]; then
PACKAGE_VERSION="$(docker run --rm -v $(pwd):/app -w /app --user "$(id -u):$(id -g)" panpuchkov/pygitver --next-ver)-dev"
PACKAGE_VERSION=$(echo "${PACKAGE_VERSION}" | sed 's/^v*//' )
DOCKER_TAG_LATEST="${PACKAGE_VERSION}"
else
DOCKER_TAG_LATEST="latest"
fi
echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_ENV
echo "DOCKER_TAG_LATEST=$DOCKER_TAG_LATEST" >> $GITHUB_ENV
- name: Docker Push
shell: bash
run: |
set -x
# Generate docker tags
IMAGE_NAME_WITH_TAG_VERSION="${{ env.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:${PACKAGE_VERSION}"
IMAGE_NAME_WITH_TAG_LATEST="${{ env.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:${DOCKER_TAG_LATEST}"
# Set docker tag
docker tag "${{ env.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:latest" "${{ env.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:${PACKAGE_VERSION}"
docker push "${IMAGE_NAME_WITH_TAG_VERSION}"
# Push latest if required
if [[ "${IMAGE_NAME_WITH_TAG_LATEST}" != "${IMAGE_NAME_WITH_TAG_LATEST}" ]]; then
docker push "${IMAGE_NAME_WITH_TAG_LATEST}"
fi
- name: Pip Build & Push
shell: bash
run: |
set -x
pip install -r requirements-build.txt
python -m build
sudo apt-get -y install twine
twine check dist/*
#twine upload --skip-existing -u ${{ secrets.PYPI_USERNAME }} -p ${{ secrets.PYPI_PASSWORD }} dist/* --verbose
pushd dist
tar -xf tar -xf $(ls pygitver-*.gz)
tree
popd