Skip to content

Enable GitAuto to react to PR review comments, letting users make precise adjustments without rerunning from the issue, dodging randomness. #41

Enable GitAuto to react to PR review comments, letting users make precise adjustments without rerunning from the issue, dodging randomness.

Enable GitAuto to react to PR review comments, letting users make precise adjustments without rerunning from the issue, dodging randomness. #41

Workflow file for this run

name: Post SNS
on:
pull_request:
types: [closed]
branches:
- main
jobs:
post-sns:
if: github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'sns')
runs-on: ubuntu-latest
steps:
# https://github.com/actions/checkout
- uses: actions/checkout@v4
# https://github.com/actions/setup-node
- uses: actions/setup-node@v4
with:
node-version: '20' # Updated to latest LTS version
# https://github.com/plhery/node-twitter-api-v2
# https://github.com/linkedin-developers/linkedin-api-js-client#linkedin-api-javascript-client
- name: Install dependencies
run: |
npm install twitter-api-v2
npm install linkedin-api-client
# https://github.com/actions/github-script
- name: Post to X
uses: actions/github-script@v7
with:
script: |
const { TwitterApi } = require('twitter-api-v2');
const client = new TwitterApi({
appKey: process.env.TWITTER_API_KEY,
appSecret: process.env.TWITTER_API_SECRET,
accessToken: process.env.TWITTER_ACCESS_TOKEN,
accessSecret: process.env.TWITTER_ACCESS_TOKEN_SECRET,
});
const tweet = `🚀 New release: ${context.payload.pull_request.title}\n\n${context.payload.pull_request.html_url}`;
// https://developer.x.com/en/docs/x-api/tweets/manage-tweets/api-reference/post-tweets
await client.v2.tweet(tweet);
env:
TWITTER_API_KEY: ${{ secrets.TWITTER_API_KEY }}
TWITTER_API_SECRET: ${{ secrets.TWITTER_API_SECRET }}
TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
- name: Post to LinkedIn
uses: actions/github-script@v7
with:
script: |
const { RestliClient } = require('linkedin-api-client');
const restliClient = new RestliClient();
// Create post using Posts API
// https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/posts-api?view=li-lms-2024-11&viewFallbackFrom=li-lms-unversioned&tabs=http
const post = await restliClient.create({
resourcePath: '/posts',
entity: {
author: 'urn:li:organization:100932100',
commentary: `🚀 New release: ${context.payload.pull_request.title}`,
visibility: 'PUBLIC',
distribution: {
feedDistribution: 'MAIN_FEED',
targetEntities: [],
thirdPartyDistributionChannels: []
},
content: {
// https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/advertising-targeting/version/article-ads-integrations?view=li-lms-2024-11&tabs=http#workflow
article: {
source: context.payload.pull_request.html_url,
title: context.payload.pull_request.title,
description: `Check out our latest release on GitHub!`
}
},
lifecycleState: 'PUBLISHED',
isReshareDisabledByAuthor: false
},
accessToken: process.env.LINKEDIN_ACCESS_TOKEN
});
env:
LINKEDIN_ACCESS_TOKEN: ${{ secrets.LINKEDIN_ACCESS_TOKEN }}