গিথুব অ্যাকশনে বর্তমান পুশিত ট্যাগটি পান


13

গিথুব অ্যাকশনে চাপ দেওয়া হয়েছে এমন বর্তমান ট্যাগ অ্যাক্সেস করার কি কোনও উপায় আছে? সার্কেলসিআই-তে আপনি $CIRCLE_TAGভেরিয়েবলের সাহায্যে এই মানটি অ্যাক্সেস করতে পারেন ।

আমার ওয়ার্কফ্লো ইয়ামল এর মতো ট্যাগ দ্বারা ট্রিগার করা হচ্ছে:

on:
  push:
    tags:
      - 'v*.*.*'

এবং আমি সেই সংস্করণ নম্বরটি পরে কর্মপ্রবাহে ফাইলের পথ হিসাবে ব্যবহার করতে চাই।

আমি নীচে অন্য উত্তর হিসাবে নির্বাচিত উত্তরের ভিত্তিতে আমার চূড়ান্ত সমাধানটি অন্তর্ভুক্ত করেছি: https://stackoverflow.com/a/58195087/756514

উত্তর:


22

আমি যতদূর জানি কোনও ট্যাগ ভেরিয়েবল নেই। তবে এটি থেকে উত্তোলন করা যেতে পারে GITHUB_REFযা থেকে চেক আউট রেফ রয়েছে, যেমনrefs/tags/v1.2.3

এই কর্মপ্রবাহ চেষ্টা করুন। এটি উত্তোলিত সংস্করণ সহ একটি নতুন পরিবেশের পরিবর্তনশীল তৈরি করে যা আপনি পরবর্তী পদক্ষেপে ব্যবহার করতে পারেন।

on:
  push:
    tags:
      - 'v*.*.*'
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Set env
        run: echo ::set-env name=RELEASE_VERSION::${GITHUB_REF:10}
      - name: Test
        run: |
          echo $RELEASE_VERSION
          echo ${{ env.RELEASE_VERSION }}

বিকল্পভাবে, ব্যবহার করুন set-output:

on:
  push:
    tags:
      - 'v*.*.*'
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Set output
        id: vars
        run: echo ::set-output name=tag::${GITHUB_REF:10}
      - name: Check output
        env:
          RELEASE_VERSION: ${{ steps.vars.outputs.tag }}
        run: |
          echo $RELEASE_VERSION
          echo ${{ steps.vars.outputs.tag }}

1
এটি নিখুঁতভাবে আপনাকে ধন্যবাদ, কেবল একটি প্রশ্নটি কী: 10 উল্লেখ করছেন? স্ট্রিং দৈর্ঘ্য?
জন বি

2
এর অর্থ এটি দশম অবস্থান (0-ভিত্তিক সূচক) থেকে শুরু করে সাবস্ট্রিংটি বের করছে। সুতরাং এটি এড়িয়ে যায় refs/tags/এবং কেবল স্ট্রিংয়ের শেষ অংশটি দেয়।
পিটারেভানস

ঠিক আছে, আর একটি প্রশ্ন দুঃখিত, আমি S RELEASE_VERSION ভেরিয়েবলটি এর মতো এস 3 অ্যাকশনের জন্য গন্তব্য পথ তৈরি করতে ব্যবহার করতে চাই: DEST_PATH: "${{ secrets.AWS_S3_BUCKET }}/$RELEASE_VERSION"তবে বাক্য গঠনটি সঠিকভাবে পেতে পারি না, কোনও ধারণা? (এটি কোনও তৃতীয় পক্ষের ক্রিয়াকলাপের জন্য একটি এনএনভিতে রয়েছে যা আমি পরে যামলে পরে ব্যবহার করি)
জন বি

1
কী অভিব্যক্তি অনুমোদিত তা জন্য ডকুমেন্টেশন এখানে দেখুন। help.github.com/en/articles/…
পিটারেভানস

4
নোট করুন যে ${GITHUB_REF:10}ট্যাগটির নাম ফিল্টার করার পরিবর্তে আমি প্যারামিটার সম্প্রসারণটি ব্যবহার করব ${GITHUB_REF#refs/*/}। যে প্রসারিত হবে /refs/tags/v1.0.1থেকে v1.0.1আশানুরূপ, কিন্তু শাখা নামের সাথে কাজ করবে: /refs/heads/masterপ্রসারিত হবে masterদেখতে gnu.org/software/bash/manual/html_node/...
স্টিফান Haberl

2

GITHUB_REFপরিবেশের ভেরিয়েবলটি রয়েছে এমন একটি ওয়ার্কফ্লো রান এখানে দেখানো হয়েছে refs/tags/v0.0.2:

https://github.com/rmunn/Testing/runs/242676390

আমি তা তৈরি করে ট্যাগ করে তৈরি করেছিলাম git push origin v0.0.2

আপনি সেই লগতে যে ওয়ার্কফ্লো দেখতে পাচ্ছেন তার একটি স্নিপেট এখানে:

steps:
- uses: actions/checkout@v1
- name: Dump GitHub context
  env:
    GITHUB_CONTEXT: ${{ toJson(github) }}
  run: echo "$GITHUB_CONTEXT"
  if: runner.os != 'Windows'
- name: Show GitHub ref
  run: echo "$GITHUB_REF"
  if: runner.os != 'Windows'
- name: Dump event JSON
  env:
    EVENT_JSON_FILENAME: ${{ github.event_path }}
  run: cat "$EVENT_JSON_FILENAME"
  if: runner.os != 'Windows'

যেহেতু সেই লগটি শেষ পর্যন্ত মুছে ফেলা হবে (গিথুব অ্যাকশন লগগুলি কতক্ষণ ধরে রাখা যায় তা আমি জানি না তবে এটি অবশ্যই চিরকাল নয়), প্রমাণের জন্য এখানে একটি স্ক্রিনশট রয়েছে।

এখানে চিত্র বর্ণনা লিখুন


1

সুতরাং @ পেট্রিভান্সের সমস্ত সহায়তার জন্য আমি যে ফলাফলটি চেয়েছিলাম তা অর্জন করতে পেরেছি:

  • একটি প্রতিশ্রুতি ট্যাগ
  • গিথুব অ্যাকশনটি ট্রিগার করতে ট্যাগটিকে চাপ দিন
  • গিথব অ্যাকশন গিভিট ট্যাগকে একটি এনভির ভার হিসাবে সেট করে
  • ইনস্টল এবং বিল্ড চালান
  • chrislennon/action-aws-cliকীগুলির গোপনীয়তা ব্যবহার করে আউস ক্লিপ ইনস্টল করতে ক্রিয়া ব্যবহার করুন
  • ডায়ার নাম হিসাবে env var ট্যাগটি ব্যবহার করে বিল্ডটি একটি নতুন S3 বালতিতে সিঙ্ক করতে রান কমান্ড

ক্রিস লেননের ক্রিয়াটি ব্যবহার করে আমি কী দৌড়েছি তার একটি উদাহরণ এখানে দেওয়া হয়েছে:

on:
  push:
    tags:
      - 'v*.*.*'
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Set env
        run: echo ::set-env name=RELEASE_VERSION::$(echo ${GITHUB_REF:10})
      - name: yarn install & build
        run: |
          yarn install
          yarn build
      - uses: chrislennon/action-aws-cli@v1.1
      - name: Publish to AWS S3
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
        run: aws s3 sync dist s3://$AWS_S3_BUCKET/$RELEASE_VERSION/ --acl public-read
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.