wangzhibo
4 天以前 ae6f40460dcd56af6c5f60ba52c883854c3bac55
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
clone:
   git:
     image: woodpeckerci/plugin-git
     settings:
       partial: false
 
steps:
  check-if-released:
    image: codeberg.org/freeyourgadget/android-fdroid-tools:33.0.0
    secrets: 
      - hc_url_nightly_deploy
    commands: |
      curl -fsS -m 10 --retry 5 "$${HC_URL_NIGHTLY_DEPLOY}/start"
 
      RELEASED_VERSION_CODE=$(curl https://freeyourgadget.codeberg.page/fdroid/repo/index-v1.json | jq '.packages."nodomain.freeyourgadget.gadgetbridge.nightly"[0].versionCode')
      CURRENT_VERSION_CODE=$(git rev-list HEAD --count)
 
      echo $CURRENT_VERSION_CODE
      echo $RELEASED_VERSION_CODE
      if [ "$RELEASED_VERSION_CODE" = "$CURRENT_VERSION_CODE" ]
      then
        echo "This version is already released, we quit!"
        touch .do_not_build
        curl -fsS -m 10 --retry 5 "$${HC_URL_NIGHTLY_DEPLOY}"
      fi
 
 
  build-apks:
    image: codeberg.org/freeyourgadget/android-fdroid-tools:33.0.0
    commands:
      - if [ -f .do_not_build ]; then return 0; fi
      # build the apks
      - echo "$${SIGNING_KEY}" | base64 -d > app/keystore.p12
      - ./gradlew assembleMainlineNightly -Dnightly_store_file="keystore.p12" -Dnightly_store_password="$${KEYSTOREPASS}" -Dnightly_key_alias="gadgetbridge" -Dnightly_key_password="$${KEYPASS}"
      - ./gradlew assembleMainlineNopebble -Dnightly_store_file="keystore.p12" -Dnightly_store_password="$${KEYSTOREPASS}" -Dnightly_key_alias="gadgetbridge" -Dnightly_key_password="$${KEYPASS}"
      - ./gradlew assembleBanglejsNightly -Dnightly_store_file="keystore.p12" -Dnightly_store_password="$${KEYSTOREPASS}" -Dnightly_key_alias="gadgetbridge" -Dnightly_key_password="$${KEYPASS}"
    secrets: [ signing_key, keystorepass, keypass ]
 
  pull-repo-config:
    image: codeberg.org/freeyourgadget/android-fdroid-tools:33.0.0
    commands:
      - if [ -f .do_not_build ]; then return 0; fi
      - cd ..
      - pwd
      - mkdir repoconfig
      - cd repoconfig
      - pwd
      - git clone --depth 1 https://codeberg.org/Freeyourgadget/fdroid-repo-config.git
      - ./fdroid-repo-config/repoconfig/copy_files_to_repo_config.sh
    secrets: [ commit_token ]
 
  pull-pages:
    image: codeberg.org/freeyourgadget/android-fdroid-tools:33.0.0
    commands:
      - if [ -f .do_not_build ]; then return 0; fi
      # prepare the pages repo, so fdroidclient can push files into it later
      - cd ..
      - pwd
      - mkdir pages
      - cd pages
      - pwd
      - git clone --depth 2 https://codeberg.org/Freeyourgadget/pages.git
      - cd pages
      - git config user.name "CODEBERG CI"
      - git config user.email "noreply@nodomain.nodomain"
        # reset and remove, later force push, to keep repo size small
      - git reset --soft HEAD~1
      - git status
        #- rm -f fdroid/repo/*apk
 
  update-fdroid-data:
    image: codeberg.org/freeyourgadget/android-fdroid-tools:33.0.0
    commands:
      - if [ -f .do_not_build ]; then return 0; fi
      - pwd
      - ../repoconfig/fdroid-repo-config/repoconfig/prepare_changelog.sh
      - cd ../repoconfig/fdroid-repo-config/repoconfig
      # get secrets from storage  
      - echo "$${SIGNING_KEY}" | base64 -d > keystore.p12
      - sed -i "s#KEYSTOREPASS_PLACEHOLDER#$${KEYSTOREPASS}#g" config.yml
      - sed -i "s#KEYPASS_PLACEHOLDER#$${KEYPASS}#g" config.yml
      - fdroid update
      - cp ./repo/nodomain.freeyourgadget.gadgetbridge.nightly/en-US/icon.png ./repo/icons/icon.png
      - python3 repo_listing.py > listing.html
      - sed -i "s#</body>#LISTING\n</body>#" ./repo/index.html
      - sed -i -e "/LISTING/r listing.html" -e '//d' ./repo/index.html
      - fdroid deploy
      - ls -laR repo
    secrets: [ signing_key, keystorepass, keypass ]
 
  push-pages-update-repo:
    image: codeberg.org/freeyourgadget/android-fdroid-tools:33.0.0
    commands:
      - if [ -f .do_not_build ]; then return 0; fi
      - cd ../pages/pages/
      - git add -A
      - git status
      - git diff
      - ls -lsR fdroid/repo
      - git commit -m "autodeploy, $${DRONE_COMMIT_MESSAGE}"
      - git remote remove origin
      - git remote add origin https://"$${COMMIT_TOKEN}"@codeberg.org/Freeyourgadget/pages.git
        # force push as we removed all data
      - git push -f origin master
      - cd ../../
      - pwd
      - ls -la
      - ./repoconfig/fdroid-repo-config/repoconfig/hyperlink.sh https://freeyourgadget.codeberg.page/fdroid/repo/
        # bump
    secrets: [ commit_token ]
 
  on-success:
    image: codeberg.org/freeyourgadget/android-fdroid-tools:33.0.0
    commands:
      - curl -fsS -m 10 --retry 5 "$${HC_URL_NIGHTLY_DEPLOY}"
    when:
      status: success
    secrets: 
      - hc_url_nightly_deploy
 
  on-error:
    image: codeberg.org/freeyourgadget/android-fdroid-tools:33.0.0
    commands:
      - curl -fsS -m 10 --retry 5 "$${HC_URL_NIGHTLY_DEPLOY}/fail"
      - cd ..
      - mkdir -p repoconfig
      - cd repoconfig
      - git clone --depth 1 https://codeberg.org/Freeyourgadget/fdroid-repo-config.git || true
      - ./fdroid-repo-config/repoconfig/create_issue_comment.sh "CI failed"
    when:
      status: failure
    secrets: 
      - hc_url_nightly_deploy
      - commit_token
 
when:
  - event: cron
  - event: deployment
    branch: master
    evaluate: 'CI_PIPELINE_DEPLOY_TARGET == "nightly"'