|
1 | | -name: Convert Markdown to PDF and Create Release |
| 1 | +name: Build and Release TCASVS |
2 | 2 |
|
3 | 3 | on: |
4 | 4 | push: |
5 | 5 | branches: |
6 | 6 | - main |
| 7 | + paths: |
| 8 | + - '1.0/en/**' |
| 9 | + - '1.0/tools/**' |
| 10 | + - '1.0/Makefile' |
7 | 11 |
|
8 | 12 | jobs: |
9 | 13 | build: |
10 | 14 | runs-on: ubuntu-latest |
11 | 15 |
|
12 | 16 | steps: |
13 | 17 | - name: Checkout repository |
14 | | - uses: actions/checkout@v6 |
| 18 | + uses: actions/checkout@v4 |
15 | 19 |
|
16 | | - - name: Set up Pandoc and jq |
| 20 | + - name: Set up Python |
| 21 | + uses: actions/setup-python@v5 |
| 22 | + with: |
| 23 | + python-version: '3.12' |
| 24 | + |
| 25 | + - name: Install system dependencies |
17 | 26 | run: | |
18 | 27 | sudo apt-get update |
19 | | - sudo apt-get install -y pandoc texlive jq |
| 28 | + sudo apt-get install -y pandoc texlive-xetex texlive-fonts-recommended jq |
| 29 | +
|
| 30 | + - name: Install Python dependencies |
| 31 | + run: pip install dicttoxml2 |
| 32 | + |
| 33 | + - name: Verify requirements parse correctly |
| 34 | + working-directory: 1.0 |
| 35 | + run: | |
| 36 | + python tools/export.py --verify-only --format json --language en |
| 37 | + python tools/export.py --verify-only --format csv --language en |
20 | 38 |
|
21 | | - - name: Fetch the latest release |
| 39 | + - name: Build all exports |
| 40 | + working-directory: 1.0 |
| 41 | + run: make all |
| 42 | + |
| 43 | + - name: Fetch the latest release tag |
22 | 44 | id: fetch_latest_release |
23 | 45 | run: | |
24 | 46 | LATEST_TAG=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r .tag_name) |
25 | 47 | if [ -z "$LATEST_TAG" ] || [ "$LATEST_TAG" == "null" ]; then |
26 | | - LATEST_TAG="v0.4.0" |
27 | | - fi |
28 | | - # using this to fake/bump versions to v1.0 |
29 | | - if [ "$LATEST_TAG" == "v0.4.0" ]; then |
30 | | - LATEST_TAG="v1.0" |
| 48 | + LATEST_TAG="v1.0.0" |
31 | 49 | fi |
32 | 50 | echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV |
33 | 51 |
|
34 | 52 | - name: Increment version |
35 | 53 | id: increment_version |
36 | 54 | run: | |
37 | 55 | LATEST_TAG=${{ env.LATEST_TAG }} |
38 | | - echo "Latest tag: $LATEST_TAG" |
39 | 56 | LATEST_VERSION=${LATEST_TAG#v} |
40 | | - IFS='.' read -r major minor <<< "$LATEST_VERSION" |
41 | | - NEW_VERSION="$major.$((minor + 1))" |
| 57 | + IFS='.' read -r major minor patch <<< "$LATEST_VERSION" |
| 58 | + NEW_VERSION="$major.$minor.$((patch + 1))" |
42 | 59 | NEW_TAG="v$NEW_VERSION" |
43 | | - echo "New version: $NEW_TAG" |
44 | 60 | echo "NEW_TAG=$NEW_TAG" >> $GITHUB_ENV |
45 | 61 |
|
46 | | - - name: Concatenate and Convert Markdown to PDF |
47 | | - run: | |
48 | | - pandoc document/1.0/*.md -o TASVS-${{ env.NEW_TAG }}.pdf -V geometry:margin=2cm |
49 | | -
|
50 | 62 | - name: Create GitHub Release |
51 | 63 | id: create_release |
52 | 64 | uses: actions/create-release@v1 |
53 | 65 | env: |
54 | 66 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
55 | 67 | with: |
56 | 68 | tag_name: ${{ env.NEW_TAG }} |
57 | | - release_name: Release ${{ env.NEW_TAG }} |
| 69 | + release_name: TCASVS ${{ env.NEW_TAG }} |
58 | 70 | draft: false |
59 | 71 | prerelease: false |
60 | 72 |
|
61 | | - - name: Upload PDF to Release |
| 73 | + - name: Upload PDF |
62 | 74 | uses: actions/upload-release-asset@v1 |
63 | 75 | env: |
64 | 76 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
65 | 77 | with: |
66 | 78 | upload_url: ${{ steps.create_release.outputs.upload_url }} |
67 | | - asset_path: ./TASVS-${{ env.NEW_TAG }}.pdf |
68 | | - asset_name: TASVS-${{ env.NEW_TAG }}.pdf |
| 79 | + asset_path: ./1.0/dist/OWASP_Thick_Client_Application_Security_Verification_Standard_1.0.0_en.pdf |
| 80 | + asset_name: TCASVS-${{ env.NEW_TAG }}.pdf |
69 | 81 | asset_content_type: application/pdf |
| 82 | + |
| 83 | + - name: Upload DOCX |
| 84 | + uses: actions/upload-release-asset@v1 |
| 85 | + env: |
| 86 | + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 87 | + with: |
| 88 | + upload_url: ${{ steps.create_release.outputs.upload_url }} |
| 89 | + asset_path: ./1.0/dist/OWASP_Thick_Client_Application_Security_Verification_Standard_1.0.0_en.docx |
| 90 | + asset_name: TCASVS-${{ env.NEW_TAG }}.docx |
| 91 | + asset_content_type: application/vnd.openxmlformats-officedocument.wordprocessingml.document |
| 92 | + |
| 93 | + - name: Upload JSON |
| 94 | + uses: actions/upload-release-asset@v1 |
| 95 | + env: |
| 96 | + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 97 | + with: |
| 98 | + upload_url: ${{ steps.create_release.outputs.upload_url }} |
| 99 | + asset_path: ./1.0/dist/OWASP_Thick_Client_Application_Security_Verification_Standard_1.0.0_en.json |
| 100 | + asset_name: TCASVS-${{ env.NEW_TAG }}.json |
| 101 | + asset_content_type: application/json |
| 102 | + |
| 103 | + - name: Upload CSV |
| 104 | + uses: actions/upload-release-asset@v1 |
| 105 | + env: |
| 106 | + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 107 | + with: |
| 108 | + upload_url: ${{ steps.create_release.outputs.upload_url }} |
| 109 | + asset_path: ./1.0/dist/OWASP_Thick_Client_Application_Security_Verification_Standard_1.0.0_en.csv |
| 110 | + asset_name: TCASVS-${{ env.NEW_TAG }}.csv |
| 111 | + asset_content_type: text/csv |
| 112 | + |
| 113 | + - name: Upload CycloneDX |
| 114 | + uses: actions/upload-release-asset@v1 |
| 115 | + env: |
| 116 | + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 117 | + with: |
| 118 | + upload_url: ${{ steps.create_release.outputs.upload_url }} |
| 119 | + asset_path: ./1.0/dist/OWASP_Thick_Client_Application_Security_Verification_Standard_1.0.0_en.cdx.json |
| 120 | + asset_name: TCASVS-${{ env.NEW_TAG }}.cdx.json |
| 121 | + asset_content_type: application/json |
0 commit comments