Loading .github/workflows/shippable_builds.yml +159 −25 Original line number Diff line number Diff line Loading @@ -22,6 +22,12 @@ on: draftGooglePlay: type: boolean description: Leave Play Store version in draft state skipFtp: type: boolean description: Skip FTP upload uploadFtpStage: type: boolean description: Upload to FTP stage instead of prod jobs: get_environment: Loading Loading @@ -70,6 +76,8 @@ jobs: skipBetaBump: ${{ inputs.skipBetaBump }} skipGooglePlay: ${{ inputs.skipGooglePlay }} draftGooglePlay: ${{ inputs.draftGooglePlay }} skipFtp: ${{ inputs.skipFtp }} uploadFtpStage: ${{ inputs.uploadFtpStage }} with: script: | const NOW = new Date(); Loading Loading @@ -132,6 +140,14 @@ jobs: if (process.env.skipGooglePlay != "true" && process.env.draftGooglePlay == "true") { await core.summary.addList(["Play Store upload is being kept in the draft state"]).write(); } if (process.env.skipFtp == "true") { await core.summary.addList(["FTP upload is being skipped"]).write(); } else if (process.env.uploadFtpStage == "true") { await core.summary.addList(["FTP upload destination is stage (ftp.stage.mozaws.net)"]).write(); } else if (process.env.uploadFtpStage == "false") { await core.summary.addList(["FTP upload destination is prod (ftp.mozilla.org)"]).write(); } notify_build_start: name: Notify Build Start Loading Loading @@ -633,12 +649,45 @@ jobs: thunderbird_full_version_name: ${{ steps.summary.outputs.thunderbird_full_version_name }} k9mail_full_version_name: ${{ steps.summary.outputs.k9mail_full_version_name }} env: RELEASE_DATE: ${{ needs.dump_config.outputs.releaseDate }} RELEASE_TYPE: ${{ needs.dump_config.outputs.releaseType }} APP_NAME: ${{ matrix.appName }} PACKAGE_FLAVOR: ${{ matrix.packageFlavor}} PACKAGE_FORMAT: ${{ matrix.packageFormat }} permissions: id-token: 'write' # For GCS publishing (ftp.mo) steps: - uses: actions/download-artifact@v4 - name: Get release sha and notes id: shanotes shell: bash env: THUNDERBIRD_GITHUB_NOTES: ${{ needs.release_commit.outputs.thunderbird_github_notes }} K9MAIL_GITHUB_NOTES: ${{ needs.release_commit.outputs.k9mail_github_notes }} THUNDERBIRD_SHA: ${{ needs.release_commit.outputs.thunderbird_sha }} K9MAIL_SHA: ${{ needs.release_commit.outputs.k9mail_sha }} APP_NAME: ${{ matrix.appName }} RELEASE_TYPE: ${{ env.RELEASE_TYPE }} run: | app_sha_name=${APP_NAME^^}_SHA app_sha="${!app_sha_name:-$GITHUB_SHA}" echo "app_sha=${app_sha}" >> $GITHUB_OUTPUT if [[ "$RELEASE_TYPE" = "beta" || "$RELEASE_TYPE" = "release" ]]; then app_relnotes_name=${APP_NAME^^}_GITHUB_NOTES echo "app_github_notes<<EOF" >> $GITHUB_OUTPUT echo "${!app_relnotes_name}" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT fi cat $GITHUB_OUTPUT - name: Checkout repository uses: actions/checkout@v4 with: ref: ${{ steps.shanotes.outputs.app_sha }} - name: Download Artifacts uses: actions/download-artifact@v4 with: name: signed-${{ matrix.appName }}-${{ matrix.packageFormat }}-${{ matrix.packageFlavor }} path: "uploads/" Loading Loading @@ -706,30 +755,6 @@ jobs: app-id: ${{ vars.RELEASER_APP_CLIENT_ID }} private-key: ${{ secrets.RELEASER_APP_PRIVATE_KEY }} - name: Get release sha and notes id: shanotes shell: bash env: THUNDERBIRD_GITHUB_NOTES: ${{ needs.release_commit.outputs.thunderbird_github_notes }} K9MAIL_GITHUB_NOTES: ${{ needs.release_commit.outputs.k9mail_github_notes }} THUNDERBIRD_SHA: ${{ needs.release_commit.outputs.thunderbird_sha }} K9MAIL_SHA: ${{ needs.release_commit.outputs.k9mail_sha }} APP_NAME: ${{ matrix.appName }} RELEASE_TYPE: ${{ env.RELEASE_TYPE }} run: | app_sha_name=${APP_NAME^^}_SHA app_sha="${!app_sha_name:-$GITHUB_SHA}" echo "app_sha=${app_sha}" >> $GITHUB_OUTPUT if [[ "$RELEASE_TYPE" = "beta" || "$RELEASE_TYPE" = "release" ]]; then app_relnotes_name=${APP_NAME^^}_GITHUB_NOTES echo "app_github_notes<<EOF" >> $GITHUB_OUTPUT echo "${!app_relnotes_name}" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT fi cat $GITHUB_OUTPUT - name: Publish to GitHub Releases id: publish_gh if: ${{ contains(matrix.releaseTarget, 'github') }} Loading Loading @@ -792,6 +817,99 @@ jobs: releaseFiles: | uploads/${{ steps.rename.outputs.PKG_FILE }} - name: Determine FTP Destination id: ftp_destination if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' }} shell: bash env: RELEASE_TYPE: ${{ env.RELEASE_TYPE }} TAG_NAME: ${{ steps.pkginfo.outputs.TAG_NAME }} VERSION_NAME: ${{ steps.pkginfo.outputs.VERSION_NAME }} UPLOAD_FTP_STAGE: ${{ inputs.uploadFtpStage }} run: | GCP_ENV=prod GCP_PROJECT=moz-fx-productdelivery-pr-38b5 FTP_URL_PREFIX="https://ftp.mozilla.org/pub/thunderbird-mobile/android" if [[ "$UPLOAD_FTP_STAGE" = "true" ]]; then GCP_ENV=stage GCP_PROJECT=moz-fx-productdelivery-no-7d6a FTP_URL_PREFIX="https://ftp.stage.mozaws.net/pub/thunderbird-mobile/android" fi SERVICE_ACCOUNT="thunderbird-team-${GCP_ENV}@${GCP_PROJECT}.iam.gserviceaccount.com" WORKLOAD_IDENTITY_PROVIDER="projects/324168772199/locations/global/workloadIdentityPools/github-actions/providers/github-actions" FTP_SUBDIR="releases" FTP_DESTINATION="${GCP_PROJECT}-productdelivery/pub/thunderbird-mobile/android/${FTP_SUBDIR}/${VERSION_NAME}/" FTP_URL_PATH="${FTP_URL_PREFIX}/${FTP_SUBDIR}/${VERSION_NAME}/" FTP_TAR_FILENAME=$(echo "${TAG_NAME,,}.tar.gz" | sed 's/_/-/g') if [[ "${RELEASE_TYPE}" = "daily" ]]; then YEAR=$(date -d "${RELEASE_DATE}" +"%Y") MONTH=$(date -d "${RELEASE_DATE}" +%m) DAY=$(date -d "${RELEASE_DATE}" +"%d") HOUR=$(date -d "${RELEASE_DATE}" +"%H") MIN=$(date -d "${RELEASE_DATE}" +"%M") SEC=$(date -d "${RELEASE_DATE}" +"%S") DATETIME_SUBDIR="${YEAR}/${MONTH}/${YEAR}-${MONTH}-${DAY}-${HOUR}-${MIN}-${SEC}-main" FTP_SUBDIR="nightly" FTP_DESTINATION="${GCP_PROJECT}-productdelivery/pub/thunderbird-mobile/android/${FTP_SUBDIR}/${DATETIME_SUBDIR}/" FTP_URL_PATH="${FTP_URL_PREFIX}/${FTP_SUBDIR}/${DATETIME_SUBDIR}/" FTP_DESTINATION_NIGHTLY_LATEST="${GCP_PROJECT}-productdelivery/pub/thunderbird-mobile/android/${FTP_SUBDIR}/latest-main/" FTP_URL_PATH_NIGHTLY_LATEST="${FTP_URL_PREFIX}/${FTP_SUBDIR}/latest-main/" fi echo "SERVICE_ACCOUNT=${SERVICE_ACCOUNT}" | tee -a $GITHUB_OUTPUT echo "WORKLOAD_IDENTITY_PROVIDER=${WORKLOAD_IDENTITY_PROVIDER}" | tee -a $GITHUB_OUTPUT echo "FTP_DESTINATION=${FTP_DESTINATION}" | tee -a $GITHUB_OUTPUT echo "FTP_DESTINATION_NIGHTLY_LATEST=${FTP_DESTINATION_NIGHTLY_LATEST}" | tee -a $GITHUB_OUTPUT echo "FTP_URL_PATH=${FTP_URL_PATH}" | tee -a $GITHUB_OUTPUT echo "FTP_URL_PATH_NIGHTLY_LATEST=${FTP_URL_PATH_NIGHTLY_LATEST}" | tee -a $GITHUB_OUTPUT echo "FTP_TAR_FILENAME=${FTP_TAR_FILENAME}" | tee -a $GITHUB_OUTPUT - name: Generate source tar if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' }} shell: bash env: APP_SHA: ${{ steps.shanotes.outputs.app_sha }} FTP_TAR_FILENAME: ${{ steps.ftp_destination.outputs.FTP_TAR_FILENAME }} run: | git archive --format=tar.gz --output=uploads/${FTP_TAR_FILENAME} ${APP_SHA} ls -l uploads - name: Auth to GCS for FTP if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' }} uses: google-github-actions/auth@v2 with: token_format: 'access_token' service_account: ${{ steps.ftp_destination.outputs.SERVICE_ACCOUNT }} workload_identity_provider: ${{ steps.ftp_destination.outputs.WORKLOAD_IDENTITY_PROVIDER }} - name: GCS Upload of APK Package to FTP if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' }} uses: google-github-actions/upload-cloud-storage@v2 with: path: uploads/${{ steps.rename.outputs.PKG_FILE }} destination: ${{ steps.ftp_destination.outputs.FTP_DESTINATION }} - name: GCS Upload of APK Package to FTP Nightly Latest if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' && needs.dump_config.outputs.releaseType == 'daily'}} uses: google-github-actions/upload-cloud-storage@v2 with: path: uploads/${{ steps.rename.outputs.PKG_FILE }} destination: ${{ steps.ftp_destination.outputs.FTP_DESTINATION_NIGHTLY_LATEST }} - name: GCS Upload of Source Tar to FTP if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' }} uses: google-github-actions/upload-cloud-storage@v2 with: path: uploads/${{ steps.ftp_destination.outputs.FTP_TAR_FILENAME }} destination: ${{ steps.ftp_destination.outputs.FTP_DESTINATION }} - name: GCS Upload of Source Tar to FTP Nightly Latest if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' && needs.dump_config.outputs.releaseType == 'daily'}} uses: google-github-actions/upload-cloud-storage@v2 with: path: uploads/${{ steps.ftp_destination.outputs.FTP_TAR_FILENAME }} destination: ${{ steps.ftp_destination.outputs.FTP_DESTINATION_NIGHTLY_LATEST }} - name: Summary uses: actions/github-script@v7 id: summary Loading @@ -805,6 +923,8 @@ jobs: appSha: ${{ steps.shanotes.outputs.app_sha }} appName: ${{ matrix.appName }} skipGooglePlay: ${{ inputs.skipGooglePlay }} ftpUrlPath: ${{ steps.ftp_destination.outputs.FTP_URL_PATH }} ftpUrlPathNightlyLatest: ${{ steps.ftp_destination.outputs.FTP_URL_PATH_NIGHTLY_LATEST }} with: script: | await core.summary Loading Loading @@ -835,6 +955,20 @@ jobs: await core.summary.addRaw(`Released to the <b>${process.env.playTargetTrack}</b> track on Google Play`, true).write(); } if (process.env.skipFtp != "true" && process.env.releaseTarget.includes("ftp") && matrix.packageFormat == 'apk') { await core.summary .addRaw(`Published to FTP at`) .addLink(process.env.ftpUrlPath, process.env.ftpUrlPath) .addEOL(); if (needs.dump_config.outputs.releaseType === 'daily') { await core.summary .addLink(process.env.ftpUrlPathNightlyLatest, process.env.ftpUrlPathNightlyLatest) .addEOL(); } await core.summary.write(); } notify_build_result: name: Notify Build Result if: ${{ always() }} Loading scripts/setup_release_automation +5 −4 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ CHANNEL_ENVIRONMENTS = { "MATRIX_INCLUDE": [ { "appName": "thunderbird", "releaseTarget": "github", "releaseTarget": "ftp|github", "packageFormat": "apk", "packageFlavor": "foss", }, Loading @@ -37,7 +37,7 @@ CHANNEL_ENVIRONMENTS = { }, { "appName": "k9mail", "releaseTarget": "github", "releaseTarget": "ftp|github", "packageFormat": "apk", "packageFlavor": "foss", }, Loading @@ -58,7 +58,7 @@ CHANNEL_ENVIRONMENTS = { "MATRIX_INCLUDE": [ { "appName": "thunderbird", "releaseTarget": "github", "releaseTarget": "ftp|github", "packageFormat": "apk", "packageFlavor": "foss", }, Loading @@ -71,7 +71,7 @@ CHANNEL_ENVIRONMENTS = { }, { "appName": "k9mail", "releaseTarget": "github", "releaseTarget": "ftp|github", "packageFormat": "apk", "packageFlavor": "foss", }, Loading @@ -92,6 +92,7 @@ CHANNEL_ENVIRONMENTS = { "MATRIX_INCLUDE": [ { "appName": "thunderbird", "releaseTarget": "ftp", "packageFormat": "apk", "packageFlavor": "foss", }, Loading Loading
.github/workflows/shippable_builds.yml +159 −25 Original line number Diff line number Diff line Loading @@ -22,6 +22,12 @@ on: draftGooglePlay: type: boolean description: Leave Play Store version in draft state skipFtp: type: boolean description: Skip FTP upload uploadFtpStage: type: boolean description: Upload to FTP stage instead of prod jobs: get_environment: Loading Loading @@ -70,6 +76,8 @@ jobs: skipBetaBump: ${{ inputs.skipBetaBump }} skipGooglePlay: ${{ inputs.skipGooglePlay }} draftGooglePlay: ${{ inputs.draftGooglePlay }} skipFtp: ${{ inputs.skipFtp }} uploadFtpStage: ${{ inputs.uploadFtpStage }} with: script: | const NOW = new Date(); Loading Loading @@ -132,6 +140,14 @@ jobs: if (process.env.skipGooglePlay != "true" && process.env.draftGooglePlay == "true") { await core.summary.addList(["Play Store upload is being kept in the draft state"]).write(); } if (process.env.skipFtp == "true") { await core.summary.addList(["FTP upload is being skipped"]).write(); } else if (process.env.uploadFtpStage == "true") { await core.summary.addList(["FTP upload destination is stage (ftp.stage.mozaws.net)"]).write(); } else if (process.env.uploadFtpStage == "false") { await core.summary.addList(["FTP upload destination is prod (ftp.mozilla.org)"]).write(); } notify_build_start: name: Notify Build Start Loading Loading @@ -633,12 +649,45 @@ jobs: thunderbird_full_version_name: ${{ steps.summary.outputs.thunderbird_full_version_name }} k9mail_full_version_name: ${{ steps.summary.outputs.k9mail_full_version_name }} env: RELEASE_DATE: ${{ needs.dump_config.outputs.releaseDate }} RELEASE_TYPE: ${{ needs.dump_config.outputs.releaseType }} APP_NAME: ${{ matrix.appName }} PACKAGE_FLAVOR: ${{ matrix.packageFlavor}} PACKAGE_FORMAT: ${{ matrix.packageFormat }} permissions: id-token: 'write' # For GCS publishing (ftp.mo) steps: - uses: actions/download-artifact@v4 - name: Get release sha and notes id: shanotes shell: bash env: THUNDERBIRD_GITHUB_NOTES: ${{ needs.release_commit.outputs.thunderbird_github_notes }} K9MAIL_GITHUB_NOTES: ${{ needs.release_commit.outputs.k9mail_github_notes }} THUNDERBIRD_SHA: ${{ needs.release_commit.outputs.thunderbird_sha }} K9MAIL_SHA: ${{ needs.release_commit.outputs.k9mail_sha }} APP_NAME: ${{ matrix.appName }} RELEASE_TYPE: ${{ env.RELEASE_TYPE }} run: | app_sha_name=${APP_NAME^^}_SHA app_sha="${!app_sha_name:-$GITHUB_SHA}" echo "app_sha=${app_sha}" >> $GITHUB_OUTPUT if [[ "$RELEASE_TYPE" = "beta" || "$RELEASE_TYPE" = "release" ]]; then app_relnotes_name=${APP_NAME^^}_GITHUB_NOTES echo "app_github_notes<<EOF" >> $GITHUB_OUTPUT echo "${!app_relnotes_name}" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT fi cat $GITHUB_OUTPUT - name: Checkout repository uses: actions/checkout@v4 with: ref: ${{ steps.shanotes.outputs.app_sha }} - name: Download Artifacts uses: actions/download-artifact@v4 with: name: signed-${{ matrix.appName }}-${{ matrix.packageFormat }}-${{ matrix.packageFlavor }} path: "uploads/" Loading Loading @@ -706,30 +755,6 @@ jobs: app-id: ${{ vars.RELEASER_APP_CLIENT_ID }} private-key: ${{ secrets.RELEASER_APP_PRIVATE_KEY }} - name: Get release sha and notes id: shanotes shell: bash env: THUNDERBIRD_GITHUB_NOTES: ${{ needs.release_commit.outputs.thunderbird_github_notes }} K9MAIL_GITHUB_NOTES: ${{ needs.release_commit.outputs.k9mail_github_notes }} THUNDERBIRD_SHA: ${{ needs.release_commit.outputs.thunderbird_sha }} K9MAIL_SHA: ${{ needs.release_commit.outputs.k9mail_sha }} APP_NAME: ${{ matrix.appName }} RELEASE_TYPE: ${{ env.RELEASE_TYPE }} run: | app_sha_name=${APP_NAME^^}_SHA app_sha="${!app_sha_name:-$GITHUB_SHA}" echo "app_sha=${app_sha}" >> $GITHUB_OUTPUT if [[ "$RELEASE_TYPE" = "beta" || "$RELEASE_TYPE" = "release" ]]; then app_relnotes_name=${APP_NAME^^}_GITHUB_NOTES echo "app_github_notes<<EOF" >> $GITHUB_OUTPUT echo "${!app_relnotes_name}" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT fi cat $GITHUB_OUTPUT - name: Publish to GitHub Releases id: publish_gh if: ${{ contains(matrix.releaseTarget, 'github') }} Loading Loading @@ -792,6 +817,99 @@ jobs: releaseFiles: | uploads/${{ steps.rename.outputs.PKG_FILE }} - name: Determine FTP Destination id: ftp_destination if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' }} shell: bash env: RELEASE_TYPE: ${{ env.RELEASE_TYPE }} TAG_NAME: ${{ steps.pkginfo.outputs.TAG_NAME }} VERSION_NAME: ${{ steps.pkginfo.outputs.VERSION_NAME }} UPLOAD_FTP_STAGE: ${{ inputs.uploadFtpStage }} run: | GCP_ENV=prod GCP_PROJECT=moz-fx-productdelivery-pr-38b5 FTP_URL_PREFIX="https://ftp.mozilla.org/pub/thunderbird-mobile/android" if [[ "$UPLOAD_FTP_STAGE" = "true" ]]; then GCP_ENV=stage GCP_PROJECT=moz-fx-productdelivery-no-7d6a FTP_URL_PREFIX="https://ftp.stage.mozaws.net/pub/thunderbird-mobile/android" fi SERVICE_ACCOUNT="thunderbird-team-${GCP_ENV}@${GCP_PROJECT}.iam.gserviceaccount.com" WORKLOAD_IDENTITY_PROVIDER="projects/324168772199/locations/global/workloadIdentityPools/github-actions/providers/github-actions" FTP_SUBDIR="releases" FTP_DESTINATION="${GCP_PROJECT}-productdelivery/pub/thunderbird-mobile/android/${FTP_SUBDIR}/${VERSION_NAME}/" FTP_URL_PATH="${FTP_URL_PREFIX}/${FTP_SUBDIR}/${VERSION_NAME}/" FTP_TAR_FILENAME=$(echo "${TAG_NAME,,}.tar.gz" | sed 's/_/-/g') if [[ "${RELEASE_TYPE}" = "daily" ]]; then YEAR=$(date -d "${RELEASE_DATE}" +"%Y") MONTH=$(date -d "${RELEASE_DATE}" +%m) DAY=$(date -d "${RELEASE_DATE}" +"%d") HOUR=$(date -d "${RELEASE_DATE}" +"%H") MIN=$(date -d "${RELEASE_DATE}" +"%M") SEC=$(date -d "${RELEASE_DATE}" +"%S") DATETIME_SUBDIR="${YEAR}/${MONTH}/${YEAR}-${MONTH}-${DAY}-${HOUR}-${MIN}-${SEC}-main" FTP_SUBDIR="nightly" FTP_DESTINATION="${GCP_PROJECT}-productdelivery/pub/thunderbird-mobile/android/${FTP_SUBDIR}/${DATETIME_SUBDIR}/" FTP_URL_PATH="${FTP_URL_PREFIX}/${FTP_SUBDIR}/${DATETIME_SUBDIR}/" FTP_DESTINATION_NIGHTLY_LATEST="${GCP_PROJECT}-productdelivery/pub/thunderbird-mobile/android/${FTP_SUBDIR}/latest-main/" FTP_URL_PATH_NIGHTLY_LATEST="${FTP_URL_PREFIX}/${FTP_SUBDIR}/latest-main/" fi echo "SERVICE_ACCOUNT=${SERVICE_ACCOUNT}" | tee -a $GITHUB_OUTPUT echo "WORKLOAD_IDENTITY_PROVIDER=${WORKLOAD_IDENTITY_PROVIDER}" | tee -a $GITHUB_OUTPUT echo "FTP_DESTINATION=${FTP_DESTINATION}" | tee -a $GITHUB_OUTPUT echo "FTP_DESTINATION_NIGHTLY_LATEST=${FTP_DESTINATION_NIGHTLY_LATEST}" | tee -a $GITHUB_OUTPUT echo "FTP_URL_PATH=${FTP_URL_PATH}" | tee -a $GITHUB_OUTPUT echo "FTP_URL_PATH_NIGHTLY_LATEST=${FTP_URL_PATH_NIGHTLY_LATEST}" | tee -a $GITHUB_OUTPUT echo "FTP_TAR_FILENAME=${FTP_TAR_FILENAME}" | tee -a $GITHUB_OUTPUT - name: Generate source tar if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' }} shell: bash env: APP_SHA: ${{ steps.shanotes.outputs.app_sha }} FTP_TAR_FILENAME: ${{ steps.ftp_destination.outputs.FTP_TAR_FILENAME }} run: | git archive --format=tar.gz --output=uploads/${FTP_TAR_FILENAME} ${APP_SHA} ls -l uploads - name: Auth to GCS for FTP if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' }} uses: google-github-actions/auth@v2 with: token_format: 'access_token' service_account: ${{ steps.ftp_destination.outputs.SERVICE_ACCOUNT }} workload_identity_provider: ${{ steps.ftp_destination.outputs.WORKLOAD_IDENTITY_PROVIDER }} - name: GCS Upload of APK Package to FTP if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' }} uses: google-github-actions/upload-cloud-storage@v2 with: path: uploads/${{ steps.rename.outputs.PKG_FILE }} destination: ${{ steps.ftp_destination.outputs.FTP_DESTINATION }} - name: GCS Upload of APK Package to FTP Nightly Latest if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' && needs.dump_config.outputs.releaseType == 'daily'}} uses: google-github-actions/upload-cloud-storage@v2 with: path: uploads/${{ steps.rename.outputs.PKG_FILE }} destination: ${{ steps.ftp_destination.outputs.FTP_DESTINATION_NIGHTLY_LATEST }} - name: GCS Upload of Source Tar to FTP if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' }} uses: google-github-actions/upload-cloud-storage@v2 with: path: uploads/${{ steps.ftp_destination.outputs.FTP_TAR_FILENAME }} destination: ${{ steps.ftp_destination.outputs.FTP_DESTINATION }} - name: GCS Upload of Source Tar to FTP Nightly Latest if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' && needs.dump_config.outputs.releaseType == 'daily'}} uses: google-github-actions/upload-cloud-storage@v2 with: path: uploads/${{ steps.ftp_destination.outputs.FTP_TAR_FILENAME }} destination: ${{ steps.ftp_destination.outputs.FTP_DESTINATION_NIGHTLY_LATEST }} - name: Summary uses: actions/github-script@v7 id: summary Loading @@ -805,6 +923,8 @@ jobs: appSha: ${{ steps.shanotes.outputs.app_sha }} appName: ${{ matrix.appName }} skipGooglePlay: ${{ inputs.skipGooglePlay }} ftpUrlPath: ${{ steps.ftp_destination.outputs.FTP_URL_PATH }} ftpUrlPathNightlyLatest: ${{ steps.ftp_destination.outputs.FTP_URL_PATH_NIGHTLY_LATEST }} with: script: | await core.summary Loading Loading @@ -835,6 +955,20 @@ jobs: await core.summary.addRaw(`Released to the <b>${process.env.playTargetTrack}</b> track on Google Play`, true).write(); } if (process.env.skipFtp != "true" && process.env.releaseTarget.includes("ftp") && matrix.packageFormat == 'apk') { await core.summary .addRaw(`Published to FTP at`) .addLink(process.env.ftpUrlPath, process.env.ftpUrlPath) .addEOL(); if (needs.dump_config.outputs.releaseType === 'daily') { await core.summary .addLink(process.env.ftpUrlPathNightlyLatest, process.env.ftpUrlPathNightlyLatest) .addEOL(); } await core.summary.write(); } notify_build_result: name: Notify Build Result if: ${{ always() }} Loading
scripts/setup_release_automation +5 −4 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ CHANNEL_ENVIRONMENTS = { "MATRIX_INCLUDE": [ { "appName": "thunderbird", "releaseTarget": "github", "releaseTarget": "ftp|github", "packageFormat": "apk", "packageFlavor": "foss", }, Loading @@ -37,7 +37,7 @@ CHANNEL_ENVIRONMENTS = { }, { "appName": "k9mail", "releaseTarget": "github", "releaseTarget": "ftp|github", "packageFormat": "apk", "packageFlavor": "foss", }, Loading @@ -58,7 +58,7 @@ CHANNEL_ENVIRONMENTS = { "MATRIX_INCLUDE": [ { "appName": "thunderbird", "releaseTarget": "github", "releaseTarget": "ftp|github", "packageFormat": "apk", "packageFlavor": "foss", }, Loading @@ -71,7 +71,7 @@ CHANNEL_ENVIRONMENTS = { }, { "appName": "k9mail", "releaseTarget": "github", "releaseTarget": "ftp|github", "packageFormat": "apk", "packageFlavor": "foss", }, Loading @@ -92,6 +92,7 @@ CHANNEL_ENVIRONMENTS = { "MATRIX_INCLUDE": [ { "appName": "thunderbird", "releaseTarget": "ftp", "packageFormat": "apk", "packageFlavor": "foss", }, Loading