-
Notifications
You must be signed in to change notification settings - Fork 2
129 lines (106 loc) · 3.56 KB
/
ci.yml
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
name: CI/CD
on:
push:
branches: [ '*' ]
pull_request:
branches: [ '*' ]
env:
# Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
# github.repository as <account>/<repo>
#IMAGE_NAME: ${{ github.repository }}
IMAGE_NAME: theshellland/automonisaur
PKG: automon
PYPI: automonisaur
TWINE_REPOSITORY: https://upload.pypi.org/legacy/
TWINE_REPOSITORY_URL: https://upload.pypi.org/legacy/
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
jobs:
unittest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install python packages
run: pip3 install -r requirements.txt
- name: install chrome and chromedriver
run: /bin/bash docker/install.sh
- name: Run tests
run: /bin/bash test.sh
env:
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
SELENIUM_CHROMEDRIVER_PATH: /usr/bin/chromedriver
docker-build:
needs: unittest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build docker
run: docker build . --tag ${{ env.IMAGE_NAME }}
docker-test:
needs: docker-build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build docker
run: docker build . --tag ${{ env.IMAGE_NAME }}
- name: Run tests in docker
run: docker run ${{ env.IMAGE_NAME }} test
# run: >
# docker run
# -e PKG=${{ secrets.PKG }}
# -e PYPI=${{ secrets.PYPI }}
# -e TWINE_REPOSITORY=${{ secrets.TWINE_REPOSITORY }}
# -e TWINE_REPOSITORY_URL=${{ secrets.TWINE_REPOSITORY_URL }}
# -e TWINE_USERNAME=${{ secrets.TWINE_USERNAME }}
# -e TWINE_PASSWORD=${{ secrets.TWINE_PASSWORD }}
# ${{ env.IMAGE_NAME }} test
publish-pypi:
needs: unittest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Upload to pypi
run: /bin/bash upload.sh --github
publish-docker:
needs: docker-test
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v3
# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# Extract metadata (tags, labels) for Docker
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}