forked from Krekep/fp2022
-
Notifications
You must be signed in to change notification settings - Fork 0
142 lines (115 loc) · 4.8 KB
/
PR.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
130
131
132
133
134
135
136
137
138
139
140
141
142
name: Build PR
on:
pull_request:
branches:
- 'master'
env:
OPAMROOT: /home/user/.opam
OPAMYES: true
jobs:
build:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
runs-on: ${{ matrix.os }}
container:
image: kakadu18/ocaml:fp2022
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.1
with:
access_token: ${{ github.token }}
#- run: sudo apt-get update -y
# if: matrix.os != 'macos-latest'
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0 # fix me later
- run: opam pin add https://github.com/Kakadu/mylinter.git --no-action
- name: Installing a linter
run: opam install zanuda --yes
- name: Get branch name
id: branch-name
uses: tj-actions/branch-names@v6
- name: Get Ref brach name
run: |
echo "${{ steps.branch-name.outputs.ref_branch }}"
#- run: git remote -vvv
#- run: git branch -vvv
# Outputs: "main"
############# Detecting and compiling fp2022
# Smart link about setting environment variables
# https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable
- run: |
sh -x ./detect_latest_pr.sh "pull/${{ steps.branch-name.outputs.ref_branch }}" >> $GITHUB_ENV
echo "${{ env.latest }}"
- name: Installing dependencies
run: cd ${{ env.latest }} && opam install . --deps-only --with-test --with-doc
- name: Naive linting
run: |
cd ${{ env.latest }} && python3 ../lint_filesystem.py ${{ env.latest }}
- name: Checking ocamlformat
run: |
cd ${{ env.latest }} && opam exec -- dune build @fmt --profile=release
- name: Compiling ${{ env.latest }}...
run: cd ${{ env.latest }} && opam exec -- dune build --profile=release
- name: Running tests in ${{ env.latest }}...
run: cd ${{ env.latest }} && opam exec -- dune runtest --profile=release
- name: Build API documentation for ${{ env.latest }}...
run: |
opam install odoc --yes
cd ${{ env.latest }} && opam exec -- dune build @doc --profile=release
- name: Setting the environment
env:
LINTS_PATH: _build/default/_found_lints
run: |
echo "RDJSON_DIR_PATH=${{ env.LINTS_PATH }}" >> $GITHUB_ENV
echo "RDJSON_FILE_PATH=${{ env.LINTS_PATH }}/lints.rdjsonl" >> $GITHUB_ENV
cd ${{ env.latest }} && mkdir -p ${{ env.LINTS_PATH }}
echo "ZANUDA_REPORT_FILE_PATH=${{ env.LINTS_PATH }}/lints.txt" >> $GITHUB_ENV
- name: Running linter in ${{ env.latest }}...
run: |
cd ${{ env.latest }} && opam exec -- zanuda -dir . -add-prefix ${{ env.latest }}/ -ordjsonl ${{ env.RDJSON_FILE_PATH }} > ${{ env.ZANUDA_REPORT_FILE_PATH }}
- run: cat ${{ env.latest }}/${{ env.RDJSON_FILE_PATH }}
- name: Preparing lints tarball
run: |
echo ${{ env.latest }} > ${{ env.latest }}/${{ env.RDJSON_DIR_PATH }}/projectname.txt
echo ${{ github.event.pull_request.user.login }} > ${{ env.latest }}/${{ env.RDJSON_DIR_PATH }}/piarast.txt
echo ${{ github.event.number }} > ${{ env.latest }}/${{ env.RDJSON_DIR_PATH }}/PR_number.txt
echo ${{ github.event.pull_request.head.sha }} > ${{ env.latest }}/${{ env.RDJSON_DIR_PATH }}/CI_COMMIT.txt
# we use commit previous from head because HEAD is merge commit by some reason
# TODO: maybe PR_number is not required
- run: echo $(git rev-parse HEAD)
- run: echo $(git rev-parse HEAD~1)
- run: echo ${{ github.event.pull_request.head.sha }}
- run: PAGER= git log
- uses: actions/upload-artifact@v3
with:
name: other_stuff
path: |
${{ env.latest }}/${{ env.RDJSON_DIR_PATH }}
- uses: actions/upload-artifact@v3
with:
name: docs
path: |
${{ env.latest }}/_build/default/_doc/_html
${{ env.latest }}/${{ env.RDJSON_DIR_PATH }}/projectname.txt
${{ env.latest }}/${{ env.RDJSON_DIR_PATH }}/PR_number.txt
#${{ env.latest }}/${{ env.RDJSON_DIR_PATH }}/CI_COMMIT.txt
- name: Installing a clone detector
run: npm install jscpd
- name: Looking for clones
run: |
python3 ./find_clones.py ${{ env.latest }}
#python3 -m trace --trace ./find_clones.py ${{ env.latest }}
- run: echo ${{ github.event.number }} > PR_number.txt
- run: cat jscpd_report.txt
- uses: actions/upload-artifact@v2
with:
name: jscpd_report
path: |
jscpd_report.txt
PR_number.txt
.github/jscpd.template.md